先配置普通的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配置完成。

现在配置半同步复制:

  1. 检查是否存在半同步复制的插件,一般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_p_w_picpath=minimal

在Slave的my.cnf文件添加:

rpl_semi_sync_slave_enabled=1
slave-parallel_workers=4

binlog_format=ROW
binlog_row_p_w_picpath=minimal


最后slave-parallel_worker参数可以增加slave工作线程,提高性能。而binlog_format 使用row格式会更安全,将p_w_picpath设置为minimal,则binlog只会记录受影响的行。
分别重启两台服务器均可。

然后可以在master或者slave上输入:

show global variables like 'rpl_semi%';



查看rpl_semi_sync_master_enabled 或rpl_semi_sync_slave_enabled 是否为ON