Semisynchronous Replication则一定程度上保证提交的事务已经传给了至少一个备库。
Semi synchronous中,仅仅保证事务的已经传递到备库上,但是并不确保已经在备库上执行完成了。
一.安装步骤
master端
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
SET GLOBAL rpl_semi_sync_master_enabled=1;
SET GLOBAL rpl_semi_sync_master_timeout=100000(单位为微秒,默认为10s)
SET GLOBAL rpl_semi_sync_master_wait_no_slave=1(用于以下实验,也是默认值,表示即使没有SLAVE也会等待过期时间结束)
slave端
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
SET GLOBAL rpl_semi_sync_slave_enabled=1;
当在从服务运行时调整支持半同步复制,必须重启I/O线程。
STOP SLAVE IO_THREAD; START SLAVE IO_THREAD;
二.状态参数的意思
Show status like 'Rpl_semi%';
下面的变量仅仅在主服务的半复制插件初始化后才有效,参数解释如下:
Rpl_semi_sync_master_clients:表示半复制从服务器的数量。
Rpl_semi_sync_master_net_avg_wait_time:主服务器等候从服务器的平均毫秒时间。(单位为毫秒)
Rpl_semi_sync_master_net_waits_time:主服务器等候从服务器的总毫秒时间。(单位为毫秒)
Rpl_semi_sync_master_net_waits :master 等待slave 回复的的总的等待次数。
Rpl_semi_sync_master_no_times:主服务器关闭半复制的次数。
Rpl_semi_sync_master_no_tx:从服务器提交事物后没有收到ack确认成功的次数。
Rpl_semi_sync_master_status:决定半服务器是否可以在主服务器上操作,设置为ON表示开启,OFF表示关闭,为异步模式。
Rpl_semi_sync_master_timefunc_failures:主服务器调用时间函数失败的次数,例如gettimeofday()。
Rpl_semi_sync_master_tx_avg_wait_time:主服务器等候每个事物的平均时间(毫秒)。
Rpl_semi_sync_master_tx_waits:主服务器等候事物的总次数。
Rpl_semi_sync_master_wait_pos_backtraverse:
Rpl_semi_sync_master_wait_sessions:正在等候从服务器回复的会话数。
Rpl_semi_sync_master_yes_tx:从服务器成功得到答应的提交事物次数。