【MySQL】主從非同步複製配置
簡介:
Mysql的 主從同步 是一個非同步的複製過程,從一個 Master複製到另一個 Slave上。在 Master 與 Slave 之間的實現整個複製過程主要由三個執行緒來完成,其中兩個執行緒(Sql執行緒和IO執行緒)在 Slave 端,另外一個執行緒(IO執行緒)在 Master 端。
原理:
(1)master將改變記錄到二進位制日誌(binary log)中(這些記錄叫做二進位制日誌事件,binary log events);
(2) slave將master的binary log events拷貝到它的中繼日誌(relay log);
(3) slave重做中繼日誌中的事件,將改變反映它自己的資料。
下圖描述了複製的過程:
具體配置過程:
1.主庫配置:
用vi /etc/my.cnf開啟檔案,對檔案進行修改,在[mysqld]下面進行新增修改:
server-id = 1# 這是資料庫ID,此ID是唯一的,主庫預設為1,其他從庫以此ID進行遞增,ID值不能重複,否則會同步出錯; log-bin = mysql-bin# 二進位制日誌檔案,此項為必填項,否則不能同步資料; binlog_format=row # bilog設定為row模式 防止複製出錯
2.從庫配置:
用vi /etc/my.cnf開啟檔案,對檔案進行修改,在[mysqld]下面進行新增修改:
server_id = 2 log-bin=mysql-bin relay_log=mysql-relay-bin # 不指定以下引數則全庫同步 #replicate-do-table=test.test_tb 同步某張表 #binlog-do-db = testcreate需要同步的資料庫,如果需要同步多個數據庫;則繼續新增此項。 #binlog-ignore-db = mysql 不需要同步的資料庫;
3.配置完需要重啟主從庫
4.主庫建立同步賬號:
create user 'replica'@'%' identified by '123456'; grant replication slave,replication client,reload,super on *.* to 'replica'@'%' identified by '123456';
5.進入從庫開啟同步
同步開啟前需要保持主從要同步的資料庫資料一致。
# 從庫啟動slave: # (MASTER_LOG_FILE與MASTER_LOG_POS在主庫執行SHOW MASTER STATUS;取得) CHANGE MASTER TO MASTER_HOST='192.168.1.60', MASTER_USER='replica', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=875; start slave; show slave status \G; --檢視slave狀態 確保Slave_IO_Running: Yes Slave_SQL_Running: Yes