Mysql replication設置

replication配置有下面優點:

(1) 數據分佈
(2) 負載平衡(load balancing)
(3) 備份
(4) 高可用性(high availability)和容錯

replication複製工作原理:

(1) master將改變記錄到二進制日誌(binary log)中(這些記錄叫做二進制日誌事件,binary log events);
(2) slave將master的binary log events拷貝到它的中繼日誌(relay log);
(3) slave重做中繼日誌中的事件,將改變反映它自己的數據

簡單的Master—Slave拓撲配置

準備2臺linux服務器,並且都安裝了相同版本的mysql服務端應用,局域網鏈接後,進行下面操作.
master ip:192.168.1.53
slave ip : 192.168.1.76

(1)修改master && slave 的 /etc/mysql/my.cnf 配置文件.

master:

#binlog
log-bin = maria-bin
binlog_format = mixed
server-id = 1

slave:

#binlog
log-bin = maria-bin
binlog_format = mixed
server-id = 2

修改my.cnf配置後,重啓mysql服務.
service mysqld restart
如果上面命令不支持, 執行 /etc/init.d/mysql restart.

(2)在master服務器上操作添加允許slave replication授權登陸用戶

GRANT REPLICATION SLAVE ON . TO ‘slave’@’192.168.1.76’ IDENTIFIED BY ‘123456’;
說明:slave爲master新添加的用戶,該用戶的密碼是123456..允許172.168.1.76使用該用戶登陸master.
這樣相當於master給slave開闢了一條通道.
這時候slave在終端通過 mysql -h192.168.1.53 -uslave -p123456應該就能登陸master.

(3)查看master binlog的日誌記錄,並記錄下來

show master status;

MariaDB [my_db_connect]> show master status;
+--------------------+----------+--------------+------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| mariadb-bin.000008 |     1756 |              |                  |
+--------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

(4)設置slave服務器,讓他指向master

CHANGE MASTER TO
MASTER_HOST=’192.168.1.53’,
MASTER_USER=’slave’,
MASTER_PASSWORD=’123456’,
MASTER_LOG_FILE=’mariadb-bin.000008’,
MASTER_LOG_POS=1756;
參數解釋:MASTER_HOST : 設置要連接的主服務器的ip地址
     MASTER_USER : 設置要連接的主服務器的用戶名
     MASTER_PASSWORD : 設置要連接的主服務器的密碼
    MASTER_LOG_FILE : 設置要連接的主服務器的bin日誌的日誌名稱,即第3步得到的信息
    MASTER_LOG_POS : 設置要連接的主服務器的bin日誌的記錄位置,即第3步得到的信息,(這裏注意,最後一項不需要加引號。否則配置失敗)

(5)配置完成,先啓動從服務器,並查看是否啓動成功

start slave;
show slave status\G; //\G是按列顯示,可視化更好
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
上面兩項這樣的結果表明啓動成功.

這裏我啓動start slave後,會出錯.
error connecting to master ‘[email protected]:3306’ - retry-time: 60 retries: 86400 message: Can’t connect to MySQL server on ‘192.168.1.53’ (111 “Connection refused”)

解決方法參考:
http://www.cnblogs.com/zihanxing/p/7049244.html
修改master的my.cnf中的bind-address =0.0.0.0重啓後,slave就自動鏈接到master了.以後master的所有操作slave就正常複製了.

如果要修改slave指向,stop slave後,從(4)開始重新設置指向其他的master.
明白了上面的原理,就可以添加多個slave,進行各種自己設計的拓撲結構設置。

當設計 master-slave1-slave2的線性拓撲結構時,注意slave1的my.cnf配置文件要修改1個參數,否則master變化後,只能slave1複製,slave2不同同步複製。
log-slave-updates= 1 從前一臺機器上同步過來的數據才能同步到下一臺機器 

複雜點的,多主或者多從的可以參考下面鏈接
http://blog.csdn.net/winsonyuan/article/details/44056751

(6)主從故障修復

因爲replication是從設置完成後,開始複製,所以master已有的數據,新slave不存在。如果這時候在master修改了slave不存在的數據,那麼slave就會報錯,複製不了。需要把舊數據都備份到slave,然後重新配置master,slave鏈接。
還有一種情況,參考下面的鏈接。
http://www.cnblogs.com/hankyoon/p/5169680.html

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