mysql的半同步复制
mysql的半同步复制:
一、测试环境:
两台redhat linux5.8虚拟机;
Master:
IP地址:172.16.77.77
MySQL版本:5.5.28
操作系统:RHEL5.8
Slave:
IP地址:172.16.12.7
MySQL版本:5.5.28
操作系统:RHEL5.8;
二、准备工作
1、编译安装mysql,指定数据路径为/data/mydata;用户为mysql(路径和用户都需另行创建);
2、为mysql提供服务脚本,配置文件等等,修改/data/mydata的属主属组为mysql用户(步骤略);
3、分别在两台主机上执行如下命令:
#hwclock -s
同步主机的时间
三、mysql半同步复制的概述
所谓半同步复制,即给主服务器设定等待从服务器来同步的有效时长,在有效时长内主服务器将等待从服务器同步复制数据;若超出时长,主服务器将不再等待从服务
器同步复制数据,从而切换为异步复制数据。
四、设置半同步复制步骤:
1、这里只用一台从服务器,主从配置的设定按照之前配置的主从复制设置过程即可(此处略),要设置mysql的半同步复制,还需安装两个模块:
- # cd /usr/local/mysql/lib/
- # ls
- libmysqlclient.a libmysqlclient_r.so.18 libmysqlclient.so.18 libmysqld-debug.a plugin
- libmysqlclient_r.a libmysqlclient_r.so.18.0.0 libmysqlclient.so.18.0.0 libmysqlservices.a
- libmysqlclient_r.so libmysqlclient.so libmysqld.a libtcmalloc_minimal.so
- # cd plugin/
- # ls
- adt_null.so auth_test_plugin.so libdaemon_example.so qa_auth_interface.so semisync_slave.so
- auth.so daemon_example.ini mypluglib.so qa_auth_server.so
- auth_socket.so debug qa_auth_client.so semisync_master.so
如上所示:在mysql的安装目录下/lib/plugin下有两个模块:semisync_master.so semisync_slave.so;前者是需要安装在主服务器上的,后者安装在从服务器上,安装了这两个模块后,才能对mysql进行半同步复制。
2、主服务器上
- mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
- mysql> SHOW GLOBAL VARIABLES LIKE '%semi%';
- +------------------------------------+-------+
- | Variable_name | Value |
- +------------------------------------+-------+
- | rpl_semi_sync_master_enabled | OFF |
- | rpl_semi_sync_master_timeout | 10000 |
- | rpl_semi_sync_master_trace_level | 32 |
- | rpl_semi_sync_master_wait_no_slave | ON |
- +------------------------------------+-------+
- 4 rows in set (0.01 sec)
- ################
- 查看安装semisync_master.so模块后生成的系统参数:
- rpl_semi_sync_master_enabled:是否开启主服务器上的半同步复制
- rpl_semi_sync_master_timeout:半同步复制的有效时长,单位为毫秒
- rpl_semi_sync_master_trace_level:传输级别
- rpl_semi_sync_master_wait_no_slave:当主服务器没有发现有从服务器在线时,是否依旧按照设定的时长等待从服务器
- ################
- mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;
- mysql> SET GLOBAL rpl_semi_sync_master_timeout = 1000;
- mysql> SHOW GLOBAL VARIABLES LIKE '%semi%';
- +------------------------------------+-------+
- | Variable_name | Value |
- +------------------------------------+-------+
- | rpl_semi_sync_master_enabled | ON |
- | rpl_semi_sync_master_timeout | 1000 |
- | rpl_semi_sync_master_trace_level | 32 |
- | rpl_semi_sync_master_wait_no_slave | ON |
- +------------------------------------+-------+
- 4 rows in set (0.01 sec)
- ################
- 开启主服务器上的半同步复制功能;并将超时时长设置为1000毫秒
- ################
- mysql> SHOW GLOBAL STATUS LIKE '%semi%';
- +--------------------------------------------+-------+
- | Variable_name | Value |
- +--------------------------------------------+-------+
- | Rpl_semi_sync_master_clients | 0 |
- | 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 |
- | Rpl_semi_sync_master_timefunc_failures | 0 |
- | Rpl_semi_sync_master_tx_avg_wait_time | 0 |
- | Rpl_semi_sync_master_tx_wait_time | 0 |
- | 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.00 sec)
- ################
- 在从服务器没有开启前主服务器半同步复制的变量状态:
- Rpl_semi_sync_master_clients:半同步复制中从服务器的在线个数
- Rpl_semi_sync_master_status :主服务器的半同步复制状态
- ################
- 3、从服务器上
- mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
- mysql> SHOW GLOBAL VARIABLES LIKE '%semi%';
- +---------------------------------+-------+
- | Variable_name | Value |
- +---------------------------------+-------+
- | rpl_semi_sync_slave_enabled | OFF |
- | rpl_semi_sync_slave_trace_level | 32 |
- +---------------------------------+-------+
- 2 rows in set (0.00 sec)
- mysql> SHOW GLOBAL STATUS LIKE 'rpl_semi%';
- +----------------------------+-------+
- | Variable_name | Value |
- +----------------------------+-------+
- | Rpl_semi_sync_slave_status | OFF |
- +----------------------------+-------+
- 1 row in set (0.00 sec)
- #################
- 从服务器上安装模块后的参数:
- rpl_semi_sync_slave_enabled:是否开启从服务器上半同步复制
- rpl_semi_sync_slave_trace_level:传输级别
- 变量状态:
- Rpl_semi_sync_slave_status:从服务器上半同步复制的状态
- #################
- mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;
- Query OK, 0 rows affected (0.01 sec)
- mysql> STOP SLAVE IO_THREAD; START SLAVE IO_THREAD;
- Query OK, 0 rows affected (0.02 sec)
- Query OK, 0 rows affected (0.01 sec)
- mysql> SHOW GLOBAL VARIABLES LIKE '%semi%';
- +---------------------------------+-------+
- | Variable_name | Value |
- +---------------------------------+-------+
- | rpl_semi_sync_slave_enabled | ON |
- | rpl_semi_sync_slave_trace_level | 32 |
- +---------------------------------+-------+
- 2 rows in set (0.00 sec)
- mysql> SHOW GLOBAL STATUS LIKE 'rpl_semi%';
- +----------------------------+-------+
- | Variable_name | Value |
- +----------------------------+-------+
- | Rpl_semi_sync_slave_status | ON |
- +----------------------------+-------+
- 1 row in set (0.01 sec)
- ###开启从服务器半同步复制,并开启slave上的io_thread线程###
五、测试半同步复制
a、所有参数已配置完成,从服务器的半同步复制已开启,在主服务器查看链接状态:
- mysql> SHOW GLOBAL STATUS LIKE '%semi%';
- +--------------------------------------------+-------+
- | Variable_name | Value |
- +--------------------------------------------+-------+
- | Rpl_semi_sync_master_clients | 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 |
- | Rpl_semi_sync_master_timefunc_failures | 0 |
- | Rpl_semi_sync_master_tx_avg_wait_time | 0 |
- | Rpl_semi_sync_master_tx_wait_time | 0 |
- | 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.00 sec)
- ###Clients的连接数已更改为1,从服务器连接正常###
b、在主服务器上之前创建的sumoan表中插入数据:
- mysql> insert into sumoan values (1,'fuyaxu');insert into sumoan values (2,'weiyang');
- Query OK, 1 row affected (0.01 sec)
- Query OK, 1 row affected (0.01 sec)
- mysql> select *from sumoan;
- +----+---------+
- | id | name |
- +----+---------+
- | 1 | fuyaxu |
- | 2 | weiyang |
- +----+---------+
- 2 rows in set (0.00 sec)
- ###数据已完成插入,查看主服务器上半同步复制的状态信息###
- mysql> SHOW GLOBAL STATUS LIKE '%semi%';
- +--------------------------------------------+-------+
- | Variable_name | Value |
- +--------------------------------------------+-------+
- | Rpl_semi_sync_master_clients | 1 |
- | Rpl_semi_sync_master_net_avg_wait_time | 1673 |
- | Rpl_semi_sync_master_net_wait_time | 3347 |
- | Rpl_semi_sync_master_net_waits | 2 |
- | Rpl_semi_sync_master_no_times | 0 |
- | Rpl_semi_sync_master_no_tx | 0 |
- | Rpl_semi_sync_master_status | ON |
- | Rpl_semi_sync_master_timefunc_failures | 0 |
- | Rpl_semi_sync_master_tx_avg_wait_time | 786 |
- | Rpl_semi_sync_master_tx_wait_time | 1572 |
- | Rpl_semi_sync_master_tx_waits | 2 |
- | Rpl_semi_sync_master_wait_pos_backtraverse | 0 |
- | Rpl_semi_sync_master_wait_sessions | 0 |
- | Rpl_semi_sync_master_yes_tx | 2 |
- +--------------------------------------------+-------+
- 14 rows in set (0.00 sec)
c、在从服务器上查看是否已同步到数据;
- mysql> show tables;
- +----------------+
- | Tables_in_test |
- +----------------+
- | fuyaxu |
- | moziyan |
- | sumoan |
- +----------------+
- 3 rows in set (0.00 sec)
- mysql> select *from sumoan;
- +----+---------+
- | id | name |
- +----+---------+
- | 1 | fuyaxu |
- | 2 | weiyang |
- +----+---------+
- 2 rows in set (0.00 sec)
- ###同步数据成功###
转载于:https://blog.51cto.com/7linux/1079736
mysql的半同步复制相关推荐
- MySQL性能半同步复制VS异步复制
性能测试报告 •从当前性能测试来看其实半同步复制与异步复制差距并不大,只是略微有点差距 •都说半同步复制比异步复制性能慢了好多,为什么当前测试却差距这么小呢? 原因一:半同步复制时只有一个slave库 ...
- MySQL数据库半同步复制
半同步复制,是有一个从节点或者一部分从节点与主节点之间是同步复制的,其他的从节点仍是异步复制 半同步复制是谷歌公司贡献给MySQL的一个插件,默认在MySQL中没有此插件,所以要实现主从的版同步复制需 ...
- Mysql之半同步复制
一.半同步复制介绍 1.半同步复制简介 Mysql数据库复制默认的方式是异步复制,但异步复制的不足之处是主库把event写入二进制日志后,并不知道从库是否已经接受并应有了.在异步模式下,如果主库崩 ...
- 运维工程师必备之MySQL数据的主从复制、半同步复制和主主复制详解
一.MySQL复制概述 ⑴.MySQL数据的复制的基本介绍 目前MySQL数据库已经占去数据库市场上很大的份额,其一是由于MySQL数据的开源性和高性能,当然还有重要的一条就是免费~不过不知道还能免费 ...
- 简述mysql半同步复制—semisync
mysql的半同步复制-semisync是基于默认的异步复制和完全同步复制之间,它是在master在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个slave收到并写到relay log ...
- Java mysql同步复制_MySQL数据的主从复制、半同步复制和主主复制详解
一.MySQL复制概述 ⑴.mysql数据的复制的基本介绍 目前MySQL数据库已经占去数据库市场上很大的份额,其一是由于MySQL数据的开源性和高性能,当然还有重要的一条就是免费~不过不知道还能免费 ...
- sync是同步还是非同步_MySQL半同步复制你可能没有注意的点
目录 问题 关于半同步复制 代码层面解释上面几个问题 1 问题 对于MySQL半同步复制,了解MySQL的人,都肯定能说出一二,比如和异步复制.同步复制的差别.超时退化为异步复制和无损复制等,但是这面 ...
- mysql5.6semi plugin_mysql5.6 semi replication 半同步复制配置(示例代码)
--###半同步配置 --1.插件位置 mysql> show variables like 'plugin_dir' -> ; +---------------+------------ ...
- mysql 半同步复制_Mysql半同步复制原理及问题排查
mysql半同步复制和异步复制的差别如上述架构图所示:在mysql异步复制的情况下,Mysql Master Server将自己的Binary Log通过复制线程传输出去以后,Mysql Master ...
最新文章
- Matlab计时函数使用
- 服务器2003添加共享文档权限,Windows2003使用命令行设置共享权限与安全权限心得...
- keil5图标变成白色_keil5菜单栏图标错乱怎么办? keil5菜单栏快捷图标错位的解决办法...
- Android edittext限制字节数
- OpenResty-Nginx安装目录介绍
- ZJUT 地下迷宫 (高斯求期望)
- WORD样式保存为主题集?
- SSH实现进销存(ERP)项目之订单管理模块解析(附源码地址)
- Python——腾讯笔试编程题(函数练习)
- OneNET物联网云平台HTTP数据流上传与下发,使用Fiddler调试开关应用,stm32 esp8266物联网家居远程开关
- 异常处理--“System.BadImageFormatException”类型的未经处理的异常在 DataTest.exe 中发生
- Linux初级入门百篇-​LVM 简介
- 数据结构与算法(java)
- 林軒田《机器学习基石》课程总结
- xp系统链接不上宽带连接服务器地址,怎么样解决xp电脑宽带连接不见了
- R语言学习记录:unique()函数
- 3.模板模式_1:什么是模板模式???什么情况适合用模板模式???模板模式如何实现???
- 一字节BCD码转ASCII码的算法及源码
- java方法的重载和方法的重写的区别
- 【POJ3093】Margaritas on the River Walk【01背包变种】
热门文章
- 苹果紧急修复已遭利用的0day
- shell入门(一)
- git pull出现错误的解决办法
- 系统安装无法找寻硬盘!!!【全系列】
- MySQL锁系列3 MDL锁
- JavaScript 中 2个等号(==)和 3个等号(===)之间的区别
- WaterfallTree(瀑布树) 详细技术分析系列
- Ubuntu Make新版上线:支持安装Swift编程语言
- sqlite 交叉编译-转
- mysql5.5默认引擎_InnoDB 作为默认存储引擎(从mysql-5.5.5开始)