【MySQL】Semisynchronous Replication 配置和参数说明

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:
 前文 Semisynchronous Replication 概述 已经介绍 semi sync的基本原理以及特性,优缺点。本章将进入实践,毕竟“纸上来得终觉浅,绝知此事要躬行”。^_^
一环境准备
  1 MySQL 5.5 + 版本
  2 本例已经搭建好的MySQL Replication 同时也有另一种搭建方法先配置好semi sync ,然后再搭建主从。
提示:如何搭建主从 请参考  如何搭建 MySQL 主从复制

二 安装
说明:此例演示的是M-M 架构 需要在主库和备库同时执行安装 plugin的命令。

在主库安装semisync_master和semisync_slave插件:


root@rac3 mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
 
root@rac3 mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

root@rac3 mysql> show plugins;

+-----------------------+--------+--------------------+--------------------+---------+

| Name                  | Status | Type               | Library            | License |

+-----------------------+--------+--------------------+--------------------+---------+

| rpl_semi_sync_master  | ACTIVE | REPLICATION        | semisync_master.so | GPL     |

| rpl_semi_sync_slave   | ACTIVE | REPLICATION        | semisync_slave.so  | GPL     |

+-----------------------+--------+--------------------+--------------------+---------+

22 rows in set (0.00 sec)

root@rac3 mysql> show variables like \"%rpl_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    |

| rpl_semi_sync_slave_enabled        | ON    |

| rpl_semi_sync_slave_trace_level    | 32    |

+------------------------------------+-------+

6 rows in set (0.00 sec) 

在备库上 加载semisync_master和semisync_slave插件:


root@rac3 mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
 
root@rac3 mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME  'semisync_slave.so';

root@rac3 mysql> show plugins;

+-----------------------+--------+--------------------+--------------------+---------+

| Name                  | Status | Type               | Library            | License |

+-----------------------+--------+--------------------+--------------------+---------+

| rpl_semi_sync_master  | ACTIVE | REPLICATION        | semisync_master.so | GPL     |

| rpl_semi_sync_slave   | ACTIVE | REPLICATION        | semisync_slave.so  | GPL     |

+-----------------------+--------+--------------------+--------------------+---------+ 

当然如果需要卸载 该plugin 需要执行


mysql> uninstall plugin rpl_semi_sync_slave 

三 其他注意事项
注意安装完plugin 之后 ,MySQL会将该插件记录到系统表mysql.plugin中,下次启动时系统则会自动加载该插件了,无需再次执行上面的命令,同时还需要修改主备库my.cnf 配置文件。


## semi sync 
 
rpl_semi_sync_master_enabled=1

rpl_semi_sync_master_timeout=1000

rpl_semi_sync_slave_enabled=1 

以下是我测试在安装问plugin 之后 my.cnf 中不配置和配置的系统启动日志:
my.cnf 中带有rpl_semi 等参数


140523 22:42:12 InnoDB: Waiting for the background threads to start
 
140523 22:42:13 InnoDB: 1.1.8 started; log sequence number 1909957825

140523 22:42:13 [Note] Semi-sync replication initialized for transactions.

140523 22:42:13 [Note] Semi-sync replication enabled on the master. 

安装完成 my.cnf 不加rpl_semi 参数,是不开启semi sync 复制的。


140523 22:49:09 mysqld_safe Starting mysqld daemon with databases from /home/mysql/data3306/data
 
.......

140523 22:49:13 InnoDB: Waiting for the background threads to start

140523 22:49:14 InnoDB: 1.1.8 started; log sequence number 1909961006

140523 22:49:14 [Note] Event Scheduler: Loaded 0 events

140523 22:49:14 [Note] /usr/sbin/mysqld: ready for connections. 

四 常用参数

使用show variables like '%rpl_semi%' 查看半同步复制相关的参数


root@rac4 mysql > show variables like "%rpl_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    |

| rpl_semi_sync_slave_enabled        | OFF   |

| rpl_semi_sync_slave_trace_level    | 32    |

+------------------------------------+-------+ 

说明:
rpl_semi_sync_master_enabled 控制在主库是否开启了异步复制模式,可以设置为ON,OFF ,默认是off 。
rpl_semi_sync_master_timeout 控制主库等待备库反馈已提交事务在备库落地的时间,以毫秒为单位默认是10s 。
rpl_semi_sync_slave_enabled    控制在从库是否开启了异步复制模式,可以设置为ON,OFF ,默认是off 。
rpl_semi_sync_master_trace_level和rpl_semi_sync_slave_trace_level是可以组合(求或)的参数,可以是下面值的组合:


1  = general level (for example, time function failures)
 
16 = detail level (more verbose information)

32 = net wait level (more information about network waits)

64 = function level (information about function entry and exit) 

rpl_semi_sync_master_wait_no_slave
表示是否允许master每个事务提交后都要等待slave的接收确认信号。默认为ON,即每一个事务都会等待。如果为OFF,则slave追赶上后,也不会开启半同步复制模式,需要手工开启。

五 查看运行状态


root@rac4 mysql > show status like "%rpl_semi%";
 
+--------------------------------------------+---------------+

| Variable_name                              | Value         |

+--------------------------------------------+---------------+

| Rpl_semi_sync_master_clients               | 1             |# 有多少个Semi-sync的备库

| Rpl_semi_sync_master_net_avg_wait_time     | 732           |# 事务提交后,等待备库响应的平均时间

| Rpl_semi_sync_master_net_wait_time         | 27885         |# 等待网络响应的总次数

| Rpl_semi_sync_master_net_waits             | 1323          |# 总的网络等待时间

| Rpl_semi_sync_master_no_times              | 0             |# 一共有几次从Semi-sync跌回普通状态

| Rpl_semi_sync_master_no_tx                 | 0             |# 备库未及时响应的事务数

| Rpl_semi_sync_master_status                | ON            |# 主库上Semi-sync是否正常开启

| Rpl_semi_sync_master_timefunc_failures     | 0             |# 时间函数未正常工作的次数

| Rpl_semi_sync_master_tx_avg_wait_time      | 59            |# 开启Semi-sync,事务返回需要等待的平均时间

| Rpl_semi_sync_master_tx_wait_time          | 8649          |# 事务等待备库响应的总时间

| Rpl_semi_sync_master_tx_waits              | 809           |# 事务等待备库响应的总次数

| Rpl_semi_sync_master_wait_pos_backtraverse | 9398          |# 改变当前等待最小二进制日志的次数

| Rpl_semi_sync_master_wait_sessions         | 230           |# 当前有几个线程在等备库响应

| Rpl_semi_sync_master_yes_tx                | 801           |# Semi-sync模式下,成功的事务数 

上面比较重要的状态值有:
Rpl_semi_sync_master_tx_avg_wait_time:事务因开启Semi_sync,平均需要额外等待的时间
Rpl_semi_sync_master_net_avg_wait_time:事务进入等待队列后,到网络平均等待时间
依据上面两个状态值可以知道,Semi-sync的网络消耗有多大,给某个事务带来的额外的消耗有多大。
Rpl_semi_sync_master_status 则表示当前Semi-sync是否正常工作。
从Rpl_semi_sync_master_no_times变量,可以知道一段时间内,Semi-sync是否有超时失败过,该计数器则记录了这样的失败次数。

六 参考文章
[1] Semisynchronous Replication Installation and Configuration 
[2] Semisynchronous Replication Monitoring 
[3] MySQL 5.5 Semi-sync Replication安装配置、参数说明


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
2月前
|
存储 缓存 监控
MySQL服务器配置优化:my.cnf参数调优指南
本文深入解析了MySQL核心配置参数及性能优化技巧,涵盖内存结构、调优原则、存储引擎优化、查询性能优化等内容,通过实战案例帮助读者构建高性能MySQL服务器配置,解决常见的性能瓶颈问题。
|
2月前
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
389 7
|
2月前
|
SQL 监控 关系型数据库
查寻MySQL或SQL Server的连接数,并配置超时时间和最大连接量
以上步骤提供了直观、实用且易于理解且执行的指导方针来监管和优化数据库服务器配置。务必记得,在做任何重要变更前备份相关配置文件,并确保理解每个参数对系统性能可能产生影响后再做出调节。
344 11
|
8月前
|
关系型数据库 MySQL Java
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
|
7月前
|
Ubuntu 关系型数据库 MySQL
在Ubuntu 22.04上配置和安装MySQL
以上就是在Ubuntu 22.04上配置和安装MySQL的步骤。这个过程可能看起来有点复杂,但只要按照步骤一步步来,你会发现其实并不难。记住,任何时候都不要急于求成,耐心是解决问题的关键。
762 30
|
6月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
456 11
|
7月前
|
关系型数据库 MySQL Linux
CentOS 7系统下详细安装MySQL 5.7的步骤:包括密码配置、字符集配置、远程连接配置
以上就是在CentOS 7系统下安装MySQL 5.7的详细步骤。希望这个指南能帮助你顺利完成安装。
1766 26
|
8月前
|
SQL 关系型数据库 MySQL
seatunnel配置mysql2hive
本文介绍了SeaTunnel的安装与使用教程,涵盖从安装、配置到数据同步的全过程。主要内容包括: 1. **SeaTunnel安装**:详细描述了下载、解压及配置连接器等步骤。 2. **模拟数据到Hive (fake2hive)**:通过编辑测试脚本,将模拟数据写入Hive表。 3. **MySQL到控制台 (mysql2console)**:创建配置文件并执行命令,将MySQL数据输出到控制台。 4. **MySQL到Hive (mysql2hive)**:创建Hive表,配置并启动同步任务,支持单表和多表同步。
|
7月前
|
存储 Oracle 关系型数据库
MySQL 8.4 配置SSL组复制(八个步骤)
MySQL 8.4 配置SSL组复制(八个步骤)
462 0
|
11月前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。

推荐镜像

更多