nginx mysql主从同步速度_如何实现mysql主从服务器的半同步复制

如何实现mysql主从服务器的半同步复制

在mysql的主从架构和主主架构中,虽然这两种架构实现了mysql服务器的负载均衡,但却没有提高读写速度,且在这构架复制时,由于主服务器和从服务器都是独立的,所以异步复制很难保证数据的完整一致性,对于此mysql添加了半同步复制,在mysql5.5的版本之后都是支持此功能的,但默认用的是异步复制。

半同步复制模式简单介绍:根据名字可以,它不能达到同步复制,但却优于异步复制。主服务器有多个从服务器,主服务会等待其中一台数据写入成功,完成一致性之后,在执行其它数据写入,。但主服务器也不能一直在等待,所以又规定了超时时间,当超过时间之后,半同步复制则切换到异步复制。直到至少有一台从服务器于主服务的数据一致,才再次进入半同步复制。

下面就介绍如何实现半同步复制

请大家在实现下面功能之前,请确保自己的mysql已经是主从架构的服务器,如果不会配置主从服务器,请看我博客中的其它文章,里面有讲解的。

1、确保mysql支持半同步复制

在mysql的安装目录下执行下面的操作

[root@mail mysql]# ls lib/plugin/

semisync_master.so semisync_slave.so若有这两个文件则说明支持半同步复制

如果没有则需要使用更高版本的mysql,5.5以上的都支持,

2、在主、从服务器上个安装模块,并设定其值

在主服务器上

mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';

安装主服务器半同步模块

mysql> set global rpl_semi_sync_master_enabled=1;启动半同步器模块

mysql> set global rpl_semi_sync_master_timeout=1000;设定超时时间,默认单位是毫秒

在从服务器上

install plugin rpl_semi_sync_slave soname 'semisync_slave.so';安装从服务器半同步模块

mysql> set global rpl_semi_sync_slave_enabled=1;启动半同步模块

mysql> stop slave;关闭从服务器

mysql> start slave;开启从服务器

3、验证半同步复制是否开启

在从服务器上验证

mysql> show global status like 'rpl_semi%';

+----------------------------+-------+

| Variable_name| Value |

+----------------------------+-------+

| Rpl_semi_sync_slave_status | ON  |当显示是on时,则说明已经开启半同步模式

+----------------------------+-------+

1 row in set (0.00 sec)

在主服务器上验证

mysql> show global status like 'rpl_semi%';

+--------------------------------------------+-------+

| Variable_name                        | Value |

+--------------------------------------------+-------+

| Rpl_semi_sync_master_clients                    | 1 |值为1,说明有一个半同步从服务器

| Rpl_semi_sync_master_net_avg_wait_time | 0 |事务进入等待队列后,到网络平均等待时间

| Rpl_semi_sync_master_net_wait_time      | 0 |事务进入等待队列后,到网络等待时间

| Rpl_semi_sync_master_net_waits              | 0 |

| Rpl_semi_sync_master_no_times               | 0 |

| Rpl_semi_sync_master_no_tx                     | 0显示从服务器确认的不成功提交数

| Rpl_semi_sync_master_status                | ON |on时是半同步模式,off是异步模式

| Rpl_semi_sync_master_timefunc_failures | 0 |

| Rpl_semi_sync_master_tx_avg_wait_time | 0 |事务因开启Semi_sync平均需要额外等待的时间

| Rpl_semi_sync_master_tx_wait_time| 0 |事务因开启Semi_sync,需要额外等待的时间

| Rpl_semi_sync_master_tx_waits                | 0|

| Rpl_semi_sync_master_wait_pos_backtraverse | 0 |

| Rpl_semi_sync_master_wait_sessions         | 0 |

| Rpl_semi_sync_master_yes_tx                     | 0 |显示从服务器确认的成功提交数

+--------------------------------------------+-------+

14 rows in set (0.02 sec)

如果你也能看见上述内容,则恭喜你半同步复制已经配置完成。

为了让mysql在重启之后还支持半同步复制,则需要在配置文件中写入一下内容

在主、从服务器上的的my.cnf中编辑:

在主服务器上

[mysqld]

rpl_semi_sync_master_enabled=1

rpl_semi_sync_master_timeout=1000

在从服务器上

[mysqld]

rpl_semi_sync_slave_enabled=1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值