五:linux之mysql57半同步复制(降低数据丢失的概率)

linux之mysql57半同步复制(降低数据丢失的概率)

1 主服务器配置

select @@have_dynamic_loading; 查看是否有动态的安装

show plugins; 查看插件 时是否有 rpl_semi_sync_master插件

install plugin rpl_semi_sync_master soname 'semisync_master.so'; 安装semi插件

show variables like '%rpl_semi_sync%'; 查看设置

2 配置vim /etc/my.cnf

rpl_semi_sync_master_enabled=1;

rpl_semi_sync_master_timeout=2000

rpl_semi_sync_master_enabled控制是否在主服务器上启用半同步复制。要启用或禁用插件,请将此变量分别设置为1或0。默认值为0(关闭)。

rpl_semi_sync_master_timeout以毫秒为单位的值,用于控制主机在超时并恢复为异步复制之前,等待提交等待从属服务器进行确认的时间。默认值为10000(10秒)。

可动态设置

set global rpl_semi_sync_master_enabled=1; 开启semi

set global rpl_semi_sync_master_timeout=2000; 超时复制

systemctl restart mysqld 重启mysql

3 从服务器配置

select @@have_dynamic_loading;  查看是否有动态的安装

show plugins;  查看插件 时是否有 rpl_semi_sync_master插件

install plugin rpl_semi_sync_slave soname 'semisync_slave.so';安装semi插件 

show variables like '%rpl_semi_sync%'; 查看设置

4 配置vim /etc/my.cnf

rpl_semi_sync_slave_enabled=1

rpl_semi_sync_slave_enabled与相似 rpl_semi_sync_master_enabled,但控制从属插件。

可动态配置

set global rpl_semi_sync_slave_enabled=1;开启semi

systemctl restart mysqld 重启mysql

注意;如果已经在运行,则先将其停止

STOP SLAVE IO_THREAD;

START SLAVE IO_THREAD;

5 在主主服务器查看日志  semi是否生效

cat var/log/mysqld.log 

6 使用状态变量可以监视半同步复制的操作

show status like 'rpl_semi_sync%';

7 在从服务器 延迟复制   从服务器故意落后于主服务器至少指定的时间。默认延迟为0秒。

stop slave;

CHANGE MASTER TO MASTER_DELAY = 1;  设置为N

start slave;

8 延迟复制可用于多种目的:

(1)防止主机上的用户错误。DBA可以将延迟的从属服务器回滚到灾难发生前的时间。

(2)测试出现延迟时系统的行为。例如,在一个应用程序中,延迟可能是由于从站上的负载过重引起的。但是,可能很难生成此负载级别。延迟复制可以模拟延迟,而不必模拟负载。它还可以用于调试与滞后从站有关的条件。

(3)无需重新加载备份即可检查数据库的外观。例如,如果延迟是一周,并且DBA需要在开发最后几天之前查看数据库的外观,则可以检查延迟的从属服务器。

START SLAVE并 STOP SLAVE立即生效,而忽略任何延迟。RESET SLAVE 将延迟重置为0。

9 show slave status \G; 有三个字段可提供有关延迟的信息:

SQL_Delay:一个非负整数,指示从站必须落后于主站的秒数。

SQL_Remaining_Delay:当 Slave_SQL_Running_State为Waiting until MASTER_DELAY seconds after master executed event,此字段包含一个整数,指示延迟剩余的秒数。在其他时间,此字段为NULL。

Slave_SQL_Running_State:一个字符串,指示SQL线程的状态(类似于 Slave_IO_State)。

你可能感兴趣的:(五:linux之mysql57半同步复制(降低数据丢失的概率))