我是靠谱客的博主 小巧火龙果,最近开发中收集的这篇文章主要介绍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

最后

以上就是小巧火龙果为你收集整理的nginx mysql主从同步速度_如何实现mysql主从服务器的半同步复制的全部内容,希望文章能够帮你解决nginx mysql主从同步速度_如何实现mysql主从服务器的半同步复制所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部