Percona MySQL5.6 半同步複製
先配置普通的clone
兩台伺服器,一主一備
主伺服器:
10.10.1.30
Slave:
10.10.1.200
修改每台機器的my.cnf檔案,分別修改server_id
主伺服器server_id= 1 ,slave 的server_id=2
重啟兩台伺服器,通過:
show variables like 'server_id';
可以查看到兩台伺服器的server_id均不一樣。
登入Master,輸入:
grant replication slave on *.* to 'repl'@'10.10.1.200' identified by 'password';
flush privileges;
show master status;
記錄master的File 及 Postion欄位,一會待用。
登入Slave,輸入:
mysql> change master to
-> master_host='10.10.1.30',
-> master_port=3306,
-> master_user='repl',
-> master_password='password',
-> master_log_file='bin-file.000035', //剛剛Master那個File欄位
-> master_log_pos=407; //剛剛Master那個Postion欄位
mysql> start slave;
Query OK, 0 rows affected (0.03 sec)
輸入:show slave status\G
若無報錯資訊,則clone配置完成。
現在配置半同步複製:
檢查是否存在半同步複製的外掛程式,一般5.6版本均內建。
到:/usr/lib64/mysql/plugin 這裡查看是否存在:
[root@localhost plugin]# ll -h semisync_*
-rwxr-xr-x. 1 root root 40K Sep 15 00:16 semisync_master.so
-rwxr-xr-x. 1 root root 14K Sep 15 00:16 semisync_slave.so
然後登入Master,輸入:
install plugin rpl_semi_sync_master soname 'semisync_master.so';
再登入Slave 輸入:
install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
這兩個檔案。然後分別在Master的my.cnf檔案上添加:
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=3000
rpl_semi_sync_master_trace_level=32
rpl_semi_sync_master_wait_no_slave=on
binlog_format=ROW
binlog_row_image=minimal
在Slave的my.cnf檔案添加:
rpl_semi_sync_slave_enabled=1
slave-parallel_workers=4
binlog_format=ROW
binlog_row_image=minimal
最後slave-parallel_worker參數可以增加slave背景工作執行緒,提高效能。而binlog_format 使用row格式會更安全,將image設定為minimal,則binlog只會記錄受影響的行。
分別重啟兩台伺服器均可。
然後可以在master或者slave上輸入:
show global variables like 'rpl_semi%';
本文永久更新連結地址: