在主庫與從庫上建立專用的復(fù)制賬號
MariaDB [employees]> create user 'repl'@'172.%' identified by '123456';注意在生產(chǎn)上的密碼必須依照相關(guān)規(guī)范以達(dá)到一定的密碼強度, 并且規(guī)定在從庫上的特定網(wǎng)段上才能訪問主庫
在主庫與從庫上授予復(fù)制權(quán)限
MariaDB [employees]> grant replication slave on *.* to 'repl'@'172.%';配置主庫
注意啟用二進制日志需要重啟服務(wù), 而server_id是一個動態(tài)參數(shù), 可以結(jié)合命令行與配置文件以達(dá)到免重啟的持久化配置. 注意server_id在集群中是唯一的.
[mysqld]log_bin = /var/log/mysql/mariadb-binlog_bin_index = /var/log/mysql/mariadb-bin.indexbinlog_format = rowserver_id = 101NOTE: 把日志與數(shù)據(jù)分開是個好習(xí)慣, 最好能放到不同的數(shù)據(jù)分區(qū)
配置從庫
選項log_slave_update決定是否把中繼日志relay_log存放到本機的binlog中, 如果是配置鏈路復(fù)制, 那么該選項必填. 注意server_id在集群中是唯一的.
初始化從庫的數(shù)據(jù)
此處使用mysqldump在主庫上進行備份, 在生產(chǎn)上建議大家用xtrabackup進行無鎖的熱備(基于innodb引擎).
備份主庫上的employees數(shù)據(jù)庫的數(shù)據(jù)
mysqldump --single-transaction --master-data=1 --triggers --routines --databases employees -u root -p >> backup.sql將備份文件backup.sql通過scp或者docker volume卷掛載到從服務(wù)器上, 并且導(dǎo)入至從庫中
啟動復(fù)制鏈路
現(xiàn)有master@172.20.0.2和slave@172.20.0.3, 并且已經(jīng)通過mysqldump將數(shù)據(jù)同步至從庫slave中. 現(xiàn)在在從服務(wù)器slave上配置復(fù)制鏈路
在從庫上啟動復(fù)制鏈路
MariaDB [(none)]> start slave;Query OK, 0 rows affected (0.01 sec)在從庫上檢查slave狀態(tài)
Slave_IO_Running與Slave_SQL_Running必須為YES, 如果出現(xiàn)錯誤須詳細(xì)閱讀Last_IO_Error或Last_SQL_Error的提示信息
在主庫檢查dump線程
檢測是否已經(jīng)正確啟動binlog dump線程
MariaDB [(none)]> show PRocesslist /G*************************** 1. row *************************** Id: 7 User: root Host: 172.20.0.1:41868 db: employeesCommand: Sleep Time: 56 State: Info: NULLProgress: 0.000*************************** 2. row *************************** Id: 10 User: repl Host: 172.20.0.3:45974 db: NULLCommand: Binlog Dump Time: 246 State: Master has sent all binlog to slave; waiting for binlog to be updated Info: NULLProgress: 0.000可以看到row 2上有Command為Binlog Dump的命令被啟動, 證明復(fù)制線程已經(jīng)被成功啟動
總結(jié)
優(yōu)點
技術(shù)成熟, BUG相對較少對SQL查詢沒有任何限制, 如基于GTID復(fù)制時不是所有SQL都可以使用缺點
故障轉(zhuǎn)移時重新獲取新主的日志偏移量較為困難在一主多從環(huán)境下, 若舊master宕機后在集群中選舉出新master, 其他的從庫要對這個新的master進行重新同步, 由于每個DB的binlog都是獨立存在, 所以很難找出開始同步的日志點
基于Docker Compose構(gòu)建的MySQL MHA集群
新聞熱點
疑難解答
圖片精選