mysql semi-sync(半同步复制)

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 半同步复制: 5.5集成到MySQL,以插件的形式存在,需要单独安装确保事务提交后bnog至少传输到一个从库不保证从库应用完这个事务的binlog性能有一定的降低,响应时间会更长 网络异常或从库宕机,卡住主库直到超时或从库恢复异步复制的逻辑...
  • 半同步复制:
    • 5.5集成到MySQL,以插件的形式存在,需要单独安装
    • 确保事务提交后bnog至少传输到一个从库
    • 不保证从库应用完这个事务的binlog
    • 性能有一定的降低,响应时间会更长
    • 网络异常或从库宕机,卡住主库直到超时或从库恢复

异步复制的逻辑
这里写图片描述
半同步复制的逻辑
这里写图片描述

安装
主库上

mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
Query OK, 0 rows affected (0.01 sec)

mysql> show plugins;
+----------------------------+----------+--------------------+--------------------+---------+
| Name                       | Status   | Type               | Library            | License |
...
| rpl_semi_sync_master       | ACTIVE   | REPLICATION        | semisync_master.so | GPL     |

从库上

mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
Query OK, 0 rows affected (0.02 sec)

mysql> show plugins;
+----------------------------+----------+--------------------+-------------------+---------+
| Name                       | Status   | Type               | Library           | License |
...
| rpl_semi_sync_slave        | ACTIVE   | REPLICATION        | semisync_slave.so | GPL     |

查看semi-sync的参数

#主库
mysql> show variables like '%semi%';
+------------------------------------+-------+
| Variable_name                      | Value |
+------------------------------------+-------+
| rpl_semi_sync_master_enabled       | OFF   |
| rpl_semi_sync_master_timeout       | 10000 |#超时时间,默认10秒钟
| rpl_semi_sync_master_trace_level   | 32    |
| rpl_semi_sync_master_wait_no_slave | ON    |
+------------------------------------+-------+
4 rows in set (0.00 sec)

mysql> set global rpl_semi_sync_master_enabled=1;
Query OK, 0 rows affected (0.00 sec)

#从库
mysql> show 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> set global rpl_semi_sync_slave_enabled=1;
Query OK, 0 rows affected (0.00 sec)

重启主从复制

#从库
mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)

mysql> start slave;
Query OK, 0 rows affected (0.02 sec)

mysql> show global status like '%semi%';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| Rpl_semi_sync_slave_status | ON    |
+----------------------------+-------+
1 row in set (0.01 sec)

#主库

mysql> show global status like '%semi%';
+--------------------------------------------+-------+
| Variable_name                              | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients               | 1     |#表示有一个semi—sync从库在进行复制
| 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)

测试

#主库
mysql> select * from test;
+------+------+
| id   | name |
+------+------+
|    1 | m1   |
|    2 | m2   |
|    3 | m3   |
|    4 | m4   |
+------+------+
4 rows in set (0.00 sec)

mysql> insert into test values (5,'m5');
Query OK, 1 row affected (0.00 sec)

#从库
mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)

#主库
mysql> insert into test values (6,'m6');
Query OK, 1 row affected (10.00 sec)#可以看到,主库插入用了10秒钟

修改超时参数,默认的10秒钟太长了,如果从库出问题的话,那么有可能引起雪崩效应
#从库
mysql> start slave;
Query OK, 0 rows affected (0.02 sec)

#主库
mysql> set global rpl_semi_sync_master_timeout=100;
Query OK, 0 rows affected (0.00 sec)

#从库
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)

#主库

mysql> insert into test values (7,'m7');
Query OK, 1 row affected (0.10 sec)

半同步复制状态

这里写图片描述

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
关系型数据库 MySQL
MySQL 5.7 基于GTID主从复制+并行复制+半同步复制
MySQL 5.7 基于GTID主从复制+并行复制+半同步复制
80 0
|
关系型数据库 MySQL 数据库
MySQL的延迟复制、半同步复制,主主复制,异步复制有什么区别?底层原理是什么?
MySQL的延迟复制、半同步复制,主主复制,异步复制有什么区别?底层原理是什么?
258 0
|
关系型数据库 MySQL
MySQL的半同步复制是什么意思?底层原理是什么?
MySQL的半同步复制是什么意思?底层原理是什么?
126 0
|
关系型数据库 MySQL
MySQL 5.7 基于 GTID 主从复制 + 并行复制 + 半同步复制
MySQL 5.7 基于 GTID 主从复制 + 并行复制 + 半同步复制
546 0
|
关系型数据库 MySQL 测试技术
MySQL压测--异步与半同步复制
  最近在看MySQL5.7 Manual,有关Semisynchronous Replication这一块的内容,我们知道,MySQL默认的Replication是异步的,何为异步?何为半同步?废话不多说,直接看官方解释吧: 1.
2489 0
|
关系型数据库 MySQL SQL
mysql主从复制、半同步复制配置记录
mysql主从复制、半同步复制配置记录
1574 0
|
关系型数据库 MySQL 数据库
mysql配置为半同步复制
mysql 半同步插件是由谷歌提供,具体位置/usr/local/mysql/lib/plugin/下,一个是 master用的 semisync_master.so,一个是 slave 用的 semisync_slave.so,下面我们就来具体配置一下。
1305 0
|
关系型数据库 MySQL
mysql配置完半同步复制之后报错[ERROR] The server quit without updating PID file
修改配置,MySQL启动报:[ERROR] The server quit without updating PID file     [root@localhost mysql]# /etc/init.
1988 0
|
监控 MySQL 关系型数据库
mysql的主从复制和半同步复制
mysql的主从复制和半同步复制 一.主从复制 MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展。多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能。
1503 0
|
关系型数据库 MySQL
MySQL异步、同步、半同步复制
异步复制 MySQL复制默认是异步复制,Master将事件写入binlog,提交事务,自身并不知道slave是否接收是否处理; 缺点:不能保证所有事务都被所有slave接收。 同步复制 Master提交事务,直到事务在所有slave都已提交,才会返回客户端事务执行完毕信息; 缺点:完成一个事务可能造成延迟。
1061 0

推荐镜像

更多