mysql5.5以上半同步讲解

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

1.半同步
半同步复制是主库将binlog日志发给从库,并确认binlog写入从库的relay-log的日志中,这个时候才会返回给主库
2.异步复制
异步复制就是咱们平时说的主从复制,主库将binlog发给从库这个时候就会结束,并不会确认从库是否接收完毕

3.注意事项:
半同步如果出现超时,这个时候主从复制会暂时切换到异步复制的模式,直到一台设置为半同步的数据库能够及时接受信息为止

实验:
mysql主从复制已经做好
主库:
192.168.56.10 
从库:
192.168.56.11

一.主库:
1.查看半同步插件默认是否开启自动加载,可以看出有自动加载功能
mysql> show variables like '%dynamic%';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| have_dynamic_loading | YES |
+----------------------+-------+
1 row in set (0.00 sec)

mysql> 
2.安装插件
mysql>install plugin rpl_semi_sync_master soname 'semisync_master.so';
mysql>show plugins;
mysql>SET GLOBAL rpl_semi_sync_master_enabled = 1; #开启半同步复制,默认是关闭的

vim /etc/my.cnf #确保重启配置文件能够生效
[mysqld]
GLOBAL rpl_semi_sync_master_enabled = 1

二.从库:
mysql>INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
mysql>show plugins; #查看是否加载成功
mysql>SET GLOBAL rpl_semi_sync_slave_enabled = 1; #开启半同步复制,默认是关闭的
mysql>stop slave;
mysql>start slave;

vim /etc/my.cnf 
[mysqld]
rpl_semi_sync_slave_enabled=1

###########到此mysql半同步已经做好#######################################
主库:
mysql> show variables like '%semi%';
+-------------------------------------------+------------+
| Variable_name | Value |
+-------------------------------------------+------------+
| rpl_semi_sync_master_enabled | ON | ##半同步开启的状态
| rpl_semi_sync_master_timeout | 10000 | #半同步超时时间10s,超过10s切换为异步复制
| rpl_semi_sync_master_trace_level | 32 | #半同步的调试级别
| rpl_semi_sync_master_wait_for_slave_count | 1 |
| rpl_semi_sync_master_wait_no_slave | ON | #master的每个事务都要slave确认
| rpl_semi_sync_master_wait_point | AFTER_SYNC |
+-------------------------------------------+------------+
6 rows in set (0.00 sec)

从库:
mysql> show 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>

主库:
mysql> show 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 | 2 |
| Rpl_semi_sync_master_no_times | 1 |
| Rpl_semi_sync_master_no_tx | 1 |
| Rpl_semi_sync_master_status | ON |
| Rpl_semi_sync_master_timefunc_failures | 0 |
| Rpl_semi_sync_master_tx_avg_wait_time | 611 |
| Rpl_semi_sync_master_tx_wait_time | 611 |
| Rpl_semi_sync_master_tx_waits | 1 |
| Rpl_semi_sync_master_wait_pos_backtraverse | 0 |
| Rpl_semi_sync_master_wait_sessions | 0 |
| Rpl_semi_sync_master_yes_tx | 1 |
+--------------------------------------------+-------+
14 rows in set (0.00 sec)

mysql>

Rpl_semi_sync_master_status表示主服务器使用是异步还是半同步复制

Rpl_semi_sync_master_client表示从服务器有多少个配置成半同步复制

Rpl_semi_sync_master_yes_tx表示从服务器确认成功提交的数量

Rpl_semi_sync_master_no_tx表示从服务器确认失败提交的数量

############################################################
测试 
从库 stop slave;
主库创建一个库
create database te; #创建的时候特别慢 需要超时 10s,但是能创建成功
show status like '%semi%';
Rpl_semi_sync_master_status | OFF ##半同步已经转换为异步复制
从库 start slave;
主库又切换为半同步复制,

反思:有半同步的原理可以知道 半同步在一定程度上确保了主从一致,但是效率确实别异步复制低,具体测试我没测试










本文转自 小小三郎1 51CTO博客,原文链接:http://blog.51cto.com/wsxxsl/2051519,如需转载请自行联系原作者
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
监控 关系型数据库 MySQL
银河麒麟V10 SP3 X86 二进制文件部署 mysql-5.7.29 GTID 半同步复制的双主架构
银河麒麟V10 SP3 X86 二进制文件部署 mysql-5.7.29 GTID 半同步复制的双主架构
430 1
|
关系型数据库 MySQL
MySQL 5.7 基于GTID主从复制+并行复制+半同步复制
MySQL 5.7 基于GTID主从复制+并行复制+半同步复制
152 0
|
关系型数据库 MySQL 数据库
MySQL的延迟复制、半同步复制,主主复制,异步复制有什么区别?底层原理是什么?
MySQL的延迟复制、半同步复制,主主复制,异步复制有什么区别?底层原理是什么?
314 0
|
关系型数据库 MySQL
MySQL的半同步复制是什么意思?底层原理是什么?
MySQL的半同步复制是什么意思?底层原理是什么?
186 0
|
关系型数据库 MySQL
MySQL半同步(四)流程和相关参数
MySQL半同步(四)流程和相关参数
611 0
MySQL半同步(四)流程和相关参数
|
关系型数据库 MySQL
MySQL 5.7 基于 GTID 主从复制 + 并行复制 + 半同步复制
MySQL 5.7 基于 GTID 主从复制 + 并行复制 + 半同步复制
624 0
|
关系型数据库 MySQL
MySQL半同步(四)流程和相关参数
MySQL半同步(四)流程和相关参数
MySQL半同步(四)流程和相关参数
|
关系型数据库 MySQL 测试技术
MySQL压测--异步与半同步复制
  最近在看MySQL5.7 Manual,有关Semisynchronous Replication这一块的内容,我们知道,MySQL默认的Replication是异步的,何为异步?何为半同步?废话不多说,直接看官方解释吧: 1.
2524 0
|
关系型数据库 MySQL SQL
mysql主从复制、半同步复制配置记录
mysql主从复制、半同步复制配置记录
1606 0
|
SQL 监控 关系型数据库
mysql主从复制(半同步方式)
mysql主从复制(半同步方式) 博客分类: MySQL mysql replication 复制  一、半同步复制原理介绍 1. 优点 当事务返回客户端成功后,则日志一定在至少两台主机上存在。
3271 0
下一篇
无影云桌面