先配置普通的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%';
查看rpl_semi_sync_master_enabled 或rpl_semi_sync_slave_enabled 是否为ON