mysql半同步复制实现
mysql半同步复制和异步复制的区别如上述架构图所看到的:在mysql异步复制的情况下。Mysql Master Server将自己的Binary Log通过复制线程传输出去以后,Mysql Master Sever就自己主动返回数据给client。而无论slave上是否接受到了这个二进制日志。在半同步复制的架构下。当master在将自己binlog发给slave上的时候。要确保slave已经接受到了这个二进制日志以后,才会返回数据给client。
对照两种架构:异步复制对于用户来说,能够确保得到高速的响应结构,可是不能确保二进制日志确实到达了slave上。半同步复制对于客户的请求响应略微慢点,可是他能够保证二进制日志的完整性。
以下来配置一个半同步复制实现的主从架构:
192.168.1.141为mysql的主server
192.168.1.142为mysql的从server
1.为mysql主server提供配置
编辑/etc/my.cnf,提供下面的配置
log_bin=index
server_id=1
在主server上授权
# mysql> grant replication slave,replication client on user@'192.168.1.142' identified by "123456";
# mysql> flush privileges;
2.为mysql从服务提供配置
编辑/etc/my.cnf,提供下面的配置
server_id=10
relay_log=relay
read_only=on
skip-slave-start=1
进入mysql命令行接口
# mysql > change master to MASTER_HOST="192.168.1.141",MASTER_USER="user",MASTER_PASSWORD="123456",MASTER_LOG_FILE="index.000004",MASTER_LOG_POS=429;
# mysql > start slave;
假设可以看到Slave_IO_Running: Yes和Slave_SQL_Running:Yes两行信息的话。证明主从配置已经成功。
要使用mysql的半同步复制功能须要为mysql装插件,mysql默认支持的插件在/usr/local/mysql/lib/plugin/,里面有两个semisync_master.so和semisync_slave.so的共享库是我们实现mysql半同步复制的关键
3.设置半同步复制
在mysql主server的命令行接口下运行例如以下代码:
# mysql > install plugin rpl_semi_sync_master SONAME 'semisync_master.so';
# mysql > show variables like "%semi%";(假设看到新增的semi变量的话证明安装模块成功)
| rpl_semi_sync_master_enabled | OFF | 是否启动半同步复制,默认关闭
| rpl_semi_sync_master_timeout | 10000 | 等待从server告诉接受到的超时时间,假设时间到了。还没接受到,自己主动降级为异步
| rpl_semi_sync_master_trace_level | 32 | 执行级别
| rpl_semi_sync_master_wait_no_slave | ON | 没有slave的时候是否也须要等待。默觉得也须要等待
# mysql > set global rpl_semi_sync_master_enabled = 1;
# mysql > set global rpl_semi_sync_master_timeout = 1000;
在mysql从server的命令行接口下运行例如以下代码:
# mysql > install plugin rpl_semi_sync_slave SONAME 'semisync_slave.so';
# mysql > show variables like "%semi%";(假设看到新增的semi变量的话证明安装模块成功)
# mysql > set global rpl_semi_sync_slave_enabled = 1;
# stop slave;
# start slave;
最后把经常使用的配置參数写如配置文件里:
192.168.1.141:
[mysqld]
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000
192.168.1.142:
[mysqld]
rpl_semi_sync_slave_enabled=1
4.查看半同步复制的状况信息
在192.168.1.141运行例如以下命令:
mysql> show status like "%semi%";
+-------------------------------------------------------------------+----------+
| Variable_name | Value |
+-------------------------------------------------------------------+----------+
| Rpl_semi_sync_master_clients | 1 | 半同步复制客户端的个数
| Rpl_semi_sync_master_net_avg_wait_time | 555 | 平均等待时间(默认毫秒)
| Rpl_semi_sync_master_net_wait_time | 1665 | 总共等待时间
| Rpl_semi_sync_master_net_waits | 3 | 等待次数
| Rpl_semi_sync_master_no_times | 0 | 关闭半同步复制的次数
| Rpl_semi_sync_master_no_tx | 0 | 表示没有成功接收slave提交的次数
| Rpl_semi_sync_master_status | ON | 表示当前是异步模式还是半同步模式。on为半同步
| Rpl_semi_sync_master_timefunc_failures | 0 | 调用时间函数失败的次数
| Rpl_semi_sync_master_tx_avg_wait_time | 575 | 事物的平均传输时间
| Rpl_semi_sync_master_tx_wait_time | 1725 | 事物的总共传输时间
| Rpl_semi_sync_master_tx_waits | 3 | 事物等待次数
| Rpl_semi_sync_master_wait_pos_backtraverse | 0 |
| Rpl_semi_sync_master_wait_sessions | 0 | 当前有多少个session由于slave的回复而造成等待
| Rpl_semi_sync_master_yes_tx | 3 | 成功接受到slave事物回复的次数
+-------------------------------------------------------------------+---------+
5.取消半同步复制的插件
192.168.1.141上:
# mysql > uninstall plugin rpl_semi_sync_master;
# mysql > show status like "%semi%"
192.168.1.142上:
# mysql > uninstall plugin rpl_semi_sync_slave;
# mysql > show status like "%semi%"
mysql半同步复制实现的更多相关文章
- MySQL半同步复制
从MySQL5.5开始,MySQL以插件的形式支持半同步复制.如何理解半同步呢?首先我们来看看异步,全同步的概念 异步复制(Asynchronous replication) MySQL默认的复制即是 ...
- MySQL半同步复制的数据一致性探讨微信后台团队实践【转】
MySQL是一个RDBMS(关系型数据库管理系统),由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.由于其体积小.速度快.拥有成本低,尤其是开放源码这一特点,广受各大企业欢迎,包括 ...
- Mysql半同步复制模式说明及配置示例 - 运维小结
MySQL主从复制包括异步模式.半同步模式.GTID模式以及多源复制模式,默认是异步模式 (如之前详细介绍的mysql主从复制).所谓异步模式指的是MySQL 主服务器上I/O thread 线程将二 ...
- 安装MySQL半同步复制
一.简介 从MySQL5.5开始,MySQL以插件的形式支持半同步复制.如何理解半同步呢?首先我们来看看异步,全同步的概念 异步复制(Asynchronous replication) MySQL默认 ...
- MySQL半同步复制(5.5之后引入)
半同步复制架构在主库提交一个事务后,commit完成即反馈客户端,无需等待推送binlog完成,如图: 半同步复制在主库完成一个事务后,需等待事务信息写入binlog日志并且至少有一个从库写入rela ...
- MySQL半同步复制搭建
默认情况下,MySQL 5.5/5.6/5.7和MariaDB 10.0/10.1的复制是异步的,异步复制可以提供最佳性能,主库把binlog日志发送给从库,这一动作就结束了,并不会验证从库是否接收完 ...
- (5.5)mysql高可用系列——MySQL半同步复制(实践)
关键词,mysql半同步复制 [0]实验环境 操作系统:CentOS linux 7.5 数据库版本:5.7.24 数据库架构:主从复制,主库用于生产,从库用于数据容灾和主库备机,采用默认传统的异步复 ...
- mysql半同步复制跟无损半同步区别
mysql半同步复制跟无损半同步复制的区别: 无损复制其实就是对semi sync增加了rpl_semi_sync_master_wait_point参数,来控制半同步模式下主库在返回给会话事务成功之 ...
- MySQL半同步复制源码解析
今天 DBA 同事问了一个问题,MySQL在半同步复制的场景下,当关闭从节点时使得从节点的数量 < rpl_semi_sync_master_wait_for_slave_count时,show ...
随机推荐
- Django的命令
安装django : pip install django 创建django项目 :django-admin startproject projectname 启动django项 ...
- 在CentOS7 开发与部署 asp.net core app笔记
原文:在CentOS7 开发与部署 asp.net core app笔记 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/lihongzhai/art ...
- js进阶 14-2 如何用ajax验证登陆状态(这里用load方法)
js进阶 14-2 如何用ajax验证登陆状态(这里用load方法) 一.总结 一句话总结:$('#test').load('test.php?password=1234560'),这样就get方式提 ...
- 手动删除RMAN备份的方法
查询 RMAN> list backup; using target database control file instead of recovery catalog List of Back ...
- Spring Boot集成EHCache实现缓存机制
SpringBoot 缓存(EhCache 2.x 篇) SpringBoot 缓存 在 Spring Boot中,通过@EnableCaching注解自动化配置合适的缓存管理器(CacheManag ...
- windows下, nginx 提示错误 "No input file specified"
https://blog.csdn.net/m_nanle_xiaobudiu/article/details/80386035
- POS的一点杂笔
仅限于POS 仅限于POS 仅限于POS A 字母字符 N 数字 S 特殊字符 an 字母和数字字符 as 字母和特殊字符 ns 数字和特殊字符 ans 字母.数字和特殊字符 MM 月份 DD 日期 ...
- usart和uart 的区别
摘自:https://blog.csdn.net/meic51/article/details/7714847 什么是同步和异步 转自https://blog.csdn.net/seashine_ya ...
- linux(debian)系统django配远程连接sqlserver数据库
费了将近一天时间.最终解决,记下来留给须要的人 须要安装的: python-odbc : https://github.com/mkleehammer/pyodbc下载后install 安装pytho ...
- matplotlib学习之颜色样式
一.颜色 1.内建八种默认颜色 蓝色 - 'b' 绿色 - 'g' 红色 - 'r' 青色 - 'c' 品红 - 'm' 黄色 - 'y' 黑色 - 'k' 白色 - 'w' 2.灰度 plt.plo ...