ITPub博客

首页 > 数据库 > MySQL > MySQL半同步复制

MySQL半同步复制

原创 MySQL 作者:壹頁書 时间:2014-02-21 00:40:08 0 删除 编辑
高可用MySQL 半同步复制 116页
“半同步复制的理念是在容许更改操作继续执行之前,确保更改操作至少被写入一个Slave的磁盘。
这意味着对于每一个连接,最多只有一个事务会由于Master崩溃而丢失”。

这段话值得注意的是
在半同步复制之前,事务已经提交。虽然因为半同步复制没有完成,客户端没有相应,但是此时作为事务已经提交。
另外,将binlog写入至少一个Slave的磁盘,指的是Slave的IO线程将binlog写入了Slave的中继日志,而不是SQL线程将其应用到数据文件。

而半同步复制的作用,类似于检查点。它使得Master和Slave的binlog最大限度的保持一致。

"最多只有一个事务会由于Master崩溃而丢失"应该指的是如下场景,
Master事务已经提交,Slave IO线程正在写入此事务的binlog,但是尚未完成。这个时候Master突然故障,并且无法恢复。
因为Slave IO线程并未完成,所以这个Slave提升为Master之后,这个已经提交的事务就丢失了。

下面搭建一个半同步复制的环境。
[Master]
Host:RAC1   
IP:192.168.1.70

安装Master半同步复制插件


修改Master配置文件
user=root
log_bin=rac1
autocommit=0
binlog_format=row
server_id=1
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_wait_no_slave=0
sync_binlog=1

重启Master

[Slave]
Host:RAC2
IP:192.168.1.80

安装Slave半同步复制插件


修改Slave配置文件
log_bin=rac2
autocommit=0
binlog_format=row
server_id=2
rpl_semi_sync_slave_enabled=1

重启Slave

在Master上创建复制的帐号
create user repl;
grant replication slave,replication client on *.*
to repl@'192.168.1.%' identified by 'repl';

在Slave上开启复制
change master to
master_host='192.168.1.70',
master_port=3306,
master_user='repl',
master_password='repl';

start slave;

根据上面半同步复制的描述,如果所有的Slave都停止工作,那么Master也会Hang住。
rpl_semi_sync_master_wait_no_slave和rpl_semi_sync_master_timeout参数可以解决这个问题。

rpl_semi_sync_master_wait_no_slave设置为1,表示如果没有任何可用的Slave,则Master等待。等待时间由rpl_semi_sync_master_timeout设置。如果超时,则使用异步复制的模式。

rpl_semi_sync_master_wait_no_slave设置为0,则表示如果没有任何可用的Slave,则使用异步复制。

假设一个Master和一个Slave,rpl_semi_sync_master_wait_no_slave设置为1,rpl_semi_sync_master_timeout设置为10S.
如果在复制的过程中,Slave宕机。则Master的事务提交之后,会等待直到10S的超时,然后使用异步复制。

可以使用show status监控半同步复制
Master:

Slave:


其中
Rpl_semi_sync_slave_status表示Slave半同步复制是否启用
Rpl_semi_sync_master_status表示Master半同步复制是否启用
Rpl_semi_sync_master_clients表示半同步复制的已连接Slave数量

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29254281/viewspace-1084938/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: XtraBackup备份MySQL
下一篇: MySQL新建Slave
请登录后发表评论 登录
全部评论

注册时间:2013-10-19

  • 博文量
    620
  • 访问量
    6343580