MySQL Multi-Source Replication實測
一、測試環境
OS: Oracle Linux-6.5
RAM: 4G
mysql-5.7.7-rc-linux-glibc2.5-x86_64
二、架構
四、測試
五、結論
OS: Oracle Linux-6.5
RAM: 4G
mysql-5.7.7-rc-linux-glibc2.5-x86_64
二、架構
圖2-1 架構圖 |
三、建置設定
- 設定my.cnf
### Master-3306 ###
server-id=3306
relay-log-info-repository=table
master-info-repository=table
gtid-mode=on
log-slave-updates = 1
enforce-gtid-consistency = true
log-bin=ol65-bin
binlog_format = mixed
binlog_row_image = minimal
### Master-3322 ###
server-id=3322
relay-log-info-repository=table
master-info-repository=table
gtid-mode=on
log-slave-updates = 1
enforce-gtid-consistency = true
log-bin=ol65-bin
binlog_format = mixed
binlog_row_image = minimal
### Slave-3377 ###
server-id=3377
master-info-repository = TABLE
relay-log-info-repository = TABLE
gtid-mode = ON
enforce-gtid-consistency = true
log-slave-updates = ON
log-bin = /opt/mysql57/data/mysql-bin
binlog_format = mixed
binlog-row-image = minimal
slave-parallel-workers = 4
設定好後記得將MySQL服務重啟新動 - 因為我的2台Master先前已有測試資料,本次測試中僅拿一個資料庫來做測試,先將資料庫dump後回復至Slave中
$ mysql -uroot -p -h127.0.0.1 -P3306 --set-gtid-purged=OFF wang > wang.sql
$ mysql -uroot -p -h127.0.0.1 -P3377 -e"create database wang;"
$ mysql -uroot -p -h127.0.0.1 -P3377 wang < wang.sql - 設定Replication
$ mysql -uroot -p -h127.0.0.1 -P3377
mysql> change master to
master_host='127.0.0.1',
master_port=3306,
master_user='repl',
master_password='repl',
master_auto_position=1
for channel "master-3306";
mysql> change master to
master_host='127.0.0.1',
master_port=3322,
master_user='repl',
master_password='repl',
master_auto_position=1
for channel "master-3322";
start slave;
show slave status\G
針對特定channel開關:
start slave for channel 'master-3306';
stop slave for channel 'master-3306';
圖3-1 設定過程 |
圖4-1 於Master-3306對wang.abc新增資料 |
圖4-2 於Master-3322對wang.abc新增資料 |
圖4-3 於Slave中檢視結果 |
圖4-4 Multi Applier Thread in slave |
五、結論
- Multi-Source Replication還是為非同步複製模式,雖無實際測效但總覺得速度上似乎有較慢
- Multi-Source Replication可以透過Channel的方式從不同的Master接收資料,但目的端資料庫或資料表也須不同,否則有可能發生Duplicate entry的錯誤導致某一個Channel複製失敗。
- 過去在5.6版本中slave-parallel-workers參數僅針對"不同資料庫"才能發揮多線程功用,在此版本中已能實現Multi SQL Thread(如圖4-4顯示),只要在my.cnf中設定slave-parallel-workers數量,就可以看見processlist中會出現等同設定數量的線程
留言
張貼留言