1. 程式人生 > >【MySQL】主從異步復制配置

【MySQL】主從異步復制配置

執行 super pass 無法 主從 https cati strip AD

簡介:

Mysql的 主從同步 是一個異步的復制過程,從一個 Master復制到另一個 Slave上。在 Master 與 Slave 之間的實現整個復制過程主要由三個線程來完成,其中兩個線程(Sql線程和IO線程)在 Slave 端,另外一個線程(IO線程)在 Master 端。 
?要實現 MySQL 的 主從同步 ,首先必須打開 Master 端的BinaryLog(mysql-bin)功能,否則無法實現。因為整個復制過程實際上就是Slave從Master端獲取該日誌然後再在自己身上完全順序的執行日誌中所記錄的各種操作。打開 MySQL 的 Binary Log 可以通過在啟動 MySQL Server 的過程中使用 “—log-bin” 參數選項,或者在 my.cnf 配置文件中的 mysqld 參數組([mysqld]標識後的參數部分)增加 “log-bin” 參數項。

原理:

(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

【MySQL】主從異步復制配置