mysql設置從庫

1、主庫開啓binlog日誌

找到主數據庫的配置文件my.cnf,在[mysqld]部分插入如下兩行:


[mysqld]
log-bin=mysql-bin #開啓二進制日誌
binlog_format=mixed
server-id=1 #設置server-id
log-slave-updates=1 #如果主庫是其他庫的從庫的話需要添加此參數,否則從其它庫同步的數據不會寫入binlog

2、重啓mysql,創建用於同步的用戶賬號

mysql -uroot -p

mysql>CREATE USER 'repl'@'172.23.xxx.xxx' IDENTIFIED BY 'repdbxxxxxx';

mysql>GRANT REPLICATION SLAVE ON *.* TO 'repl'@'172.23.xxxx';

mysql>flush privileges;

3.查看master狀態

首先登陸數據庫,然後刷新所有的表,同時給數據庫加上一把鎖,阻止對數據庫進行任何的寫操作

mysql > flush tables with read lock;

然後執行下面的語句獲取二進制日誌的信息

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 |  2593874 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

記錄二進制文件名(mysql-bin.000002)和位置(2593874)

 

4、導出數據

mysqldump -uroot -p'123456' -S /data/3306/data/mysql.sock --all-databases > /server/backup/mysql_bak.$(date +%F).sql

如果數據量很大,可以在導出時就壓縮爲原來的大概三分之一

mysqldump -uroot -p'123456' -S /data/3306/data/mysql.sock --all-databases | gzip > /server/backup/mysql_bak.$(date +%F).sql.gz

解壓

gzip -d XXXX.gz

這時可以對數據庫解鎖,恢復對主數據庫的操作

mysql > unlock tables;


5、修改從庫mysql配置

同樣找到my.cnf配置文件,添加server-id

[mysqld]
server-id=2 #設置server-id,必須唯一

重啓mysql服務

 

6、導入從主庫導出的數據
 mysql -uroot -p'123456' -S /data/3306/data/mysql.sock < /server/backup/mysql_bak.2015-07-01.sql

 

7、配置主從

登陸從庫mysql,輸入如下信息:

複製代碼

mysql> CHANGE MASTER TO
    ->     MASTER_HOST='172.16.xxxx',
    ->     MASTER_USER='rep1',
    ->     MASTER_PASSWORD='repdbxxxxxx',
    ->     MASTER_LOG_FILE='mysql-bin.000002',
    ->     MASTER_LOG_POS=2593874;

啓動slave同步進程:

mysql>start slave;

8.查看slave狀態:

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 172.16.3.142
                  Master_User: rep1
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000013
          Read_Master_Log_Pos: 11662
               Relay_Log_File: mysqld-relay-bin.000022
                Relay_Log_Pos: 11765
        Relay_Master_Log_File: mysql-bin.000013
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
        ...

還可以用到的其他相關參數:

master開啓二進制日誌後默認記錄所有庫所有表的操作,可以通過配置來指定只記錄指定的數據庫甚至指定的表的操作,具體在mysql配置文件的[mysqld]可添加修改如下選項:

# 不同步哪些數據庫  
binlog-ignore-db = mysql  
binlog-ignore-db = test  
binlog-ignore-db = information_schema  
  
# 只同步哪些數據庫,除此之外,其他不同步  
binlog-do-db = game  


如之前查看master狀態時就可以看到只記錄了test庫,忽略了manual和mysql庫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章