广告
返回顶部
首页 > 资讯 > 数据库 >如何配置与监控MySQL 5.5半同步复制
  • 554
分享到

如何配置与监控MySQL 5.5半同步复制

2024-04-02 19:04:59 554人浏览 安东尼
摘要

小编给大家分享一下如何配置与监控Mysql 5.5半同步复制,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 在mysql的复制环境中,数据同步默认是异步的,Ma

小编给大家分享一下如何配置与监控Mysql 5.5半同步复制,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

mysql的复制环境中,数据同步默认是异步的,Master节点将事件写入二进制日志,但是不知道Slave节点在什么时候获取并应用这些事件;如果Master节点宕机,则已经提交的事务可能没有被传输到Slave节点。
在Mysql 5.5及以上版本,支持半同步方式的复制。

这个功能是通过插件方式来实现的,它具有如下特点:
当Slave节点连接到Master节点时,它会指示它是否是半同步的状态;
如果Master节点启用了半同步复制的特性,则至少要有一个半同步的Slave节点。当Master节点有一个线程提交了一个事务时,事务不会立刻提交,而是处于阻塞状态,它会等待至少一个Slave节点发出响应信息给Master节点,或者等到超时为止;
只有当Slave节点将接收到来自Master节点的事务事件写入中继日志并同步到磁盘上后,它才会向Master节点发送响应信息;
当没有任何Slave节点响应并超时后,Master节点将变成异步传输状态。当至少一个Slave节点处于半同步状态后,Master节点会恢复到半同步复制的状态;
半同步复制必须在Master和Slave节点同时启用。如果Master节点没有启用半同步复制,或者所有Slave节点没有启用半同步复制,则Master节点会使用异步复制。

--显示插件所在目录
mysql> show variables like 'plugin_dir';
+---------------+-----------------------+
| Variable_name | Value                 |
+---------------+-----------------------+
| plugin_dir    | /software/lib/plugin/ |
+---------------+-----------------------+
1 row in set (0.00 sec)

--查看插件目录里面的内容
[root@localhost ~]# cd /software/lib/plugin/
You have new mail in /var/spool/mail/root
[root@localhost plugin]# ls
adt_null.so  auth_Socket.so       daemon_example.ini  libdaemon_example.so  qa_auth_client.so     qa_auth_server.so   semisync_slave.so
auth.so      auth_test_plugin.so  debug               mypluglib.so          qa_auth_interface.so  semisync_master.so

--查看半同步插件,分别为主从插件
[root@localhost plugin]# ll /software/lib/plugin/semisync_*
-rwxr-xr-x. 1 root mysql 175571 Apr 11 06:46 /software/lib/plugin/semisync_master.so
-rwxr-xr-x. 1 root mysql  93818 Apr 11 06:46 /software/lib/plugin/semisync_slave.so

--在Master节点加载插件
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
Query OK, 0 rows affected (0.24 sec)

mysql> select plugin_name,plugin_type,plugin_status from plugins where plugin_name='rpl_semi_sync_master';
+----------------------+-------------+---------------+
| plugin_name          | plugin_type | plugin_status |
+----------------------+-------------+---------------+
| rpl_semi_sync_master | REPLICATioN | ACTIVE        |
+----------------------+-------------+---------------+
1 row in set (0.14 sec)

--在Slave节点加载插件
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
Query OK, 0 rows affected (0.57 sec)

mysql> show plugins;
+--------------------------+--------+--------------------+-------------------+---------+
| Name                     | Status | Type               | Library           | License |
+--------------------------+--------+--------------------+-------------------+---------+
| binlog                   | ACTIVE | STORAGE ENGINE     | NULL              | GPL     |
| mysql_native_passWord    | ACTIVE | AUTHENTICATION     | NULL              | GPL     |
| mysql_old_password       | ACTIVE | AUTHENTICATION     | NULL              | GPL     |
| MyISAM                   | ACTIVE | STORAGE ENGINE     | NULL              | GPL     |
| CSV                      | ACTIVE | STORAGE ENGINE     | NULL              | GPL     |
| MRG_MYISAM               | ACTIVE | STORAGE ENGINE     | NULL              | GPL     |
| MEMORY                   | ACTIVE | STORAGE ENGINE     | NULL              | GPL     |
| FEDERATED                | ACTIVE | STORAGE ENGINE     | NULL              | GPL     |
| PERFORMANCE_SCHEMA       | ACTIVE | STORAGE ENGINE     | NULL              | GPL     |
| ARCHive                  | ACTIVE | STORAGE ENGINE     | NULL              | GPL     |
| BLACKHOLE                | ACTIVE | STORAGE ENGINE     | NULL              | GPL     |
| InnoDB                   | ACTIVE | STORAGE ENGINE     | NULL              | GPL     |
| INNODB_TRX               | ACTIVE | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_LOCKS             | ACTIVE | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_LOCK_WAITS        | ACTIVE | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_CMP               | ACTIVE | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_CMP_RESET         | ACTIVE | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_CMPMEM            | ACTIVE | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_CMPMEM_RESET      | ACTIVE | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_BUFFER_PAGE       | ACTIVE | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_BUFFER_PAGE_LRU   | ACTIVE | INFORMATION SCHEMA | NULL              | GPL     |
| INNODB_BUFFER_POOL_STATS | ACTIVE | INFORMATION SCHEMA | NULL              | GPL     |
| partition                | ACTIVE | STORAGE ENGINE     | NULL              | GPL     |
| rpl_semi_sync_slave      | ACTIVE | REPLICATION        | semisync_slave.so | GPL     |
+--------------------------+--------+--------------------+-------------------+---------+
24 rows in set (0.03 sec)

--重要的参数如下:

rpl_semi_sync_master_enabled 控制Master节点半同步复制是否开启

rpl_semi_sync_slave_enabled 控制Slave节点半同步复制是否开启

rpl_semi_sync_master_timeout 控制Master节点等待Slave节点的响应时间,单位是毫秒,默认值是10000毫秒,也就是10秒

--Master节点,查看半同步复制的相关参数
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    |
+------------------------------------+-------+
4 rows in set (0.01 sec)

--Master节点,打开半同步复制特性,并设置超时时间为3秒
mysql> set global rpl_semi_sync_master_enabled=1;
Query OK, 0 rows affected (0.00 sec)

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

mysql> show variables like 'rpl_semi%';
+------------------------------------+-------+
| Variable_name                      | Value |
+------------------------------------+-------+
| rpl_semi_sync_master_enabled       | ON    |
| rpl_semi_sync_master_timeout       | 3000  |
| rpl_semi_sync_master_trace_level   | 32    |
| rpl_semi_sync_master_wait_no_slave | ON    |
+------------------------------------+-------+
4 rows in set (0.00 sec)

如果想让参数在数据库重启后生效,需要将参数分别加Master和Slave节点到配置文件中。

--Slave节点,打开半同步复制特性
mysql> show variables like 'rpl_semi%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled     | OFF   |
| rpl_semi_sync_slave_trace_level | 32    |
+---------------------------------+-------+
2 rows in set (0.02 sec)

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

mysql> show variables like 'rpl_semi%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled     | ON    |
| rpl_semi_sync_slave_trace_level | 32    |
+---------------------------------+-------+
2 rows in set (0.00 sec)

--配置好系统变量后,重启Slave节点的IO_THREAD线程
mysql> stop slave io_thread;
Query OK, 0 rows affected (0.01 sec)
mysql> start slave io_thread;
Query OK, 0 rows affected (0.00 sec)

--半同步复制环境的监控

--相关参数

rpl_semi_sync_master_clients 配置半同步复制的Slave节点数量,只有当Master节点的半同步复制插件安装后,这个参数才会生效

Rpl_semi_sync_master_status 指示Master节点的半同步复制特性是否开启。如果这个参数的值时ON,则半同步复制插件已经启用且提交响应已经发生;如果这个参数的值是OFF,则说明半同步复制插件没有启用,或者
Master节点因为提交响应超时而回到异步复制模式

Rpl_semi_sync_slave_status 指示Slave节点的半同步复制特性是否开启。如果这个参数的值为ON,则说明半同步复制插件已经开启且Slave节点的I/O线程在运行。只有当Slave节点安装半同步复制插件后,这个参数才
会生效。

Rpl_semi_sync_master_no_tx 没有被Slave节点成功响应的提交事务数

Rpl_semi_sync_master_yes_tx 被Slave节点成功响应的提交事务数

Rpl_semi_sync_master_net_wait_time Master节点等待Slave节点回复的总时间,单位是微秒。只有当Master节点安装了半同步复制插件后,这个参数才会生效

Rpl_semi_sync_master_net_avg_wait_time Master节点等待Slave节点回复的平均时间,单位是微秒

--在Master节点监控半同步复制的状态

mysql> show status like '%semi_sync%';
+--------------------------------------------+-------+
| Variable_name                              | Value |
+--------------------------------------------+-------+
| Rpl_semi_sync_master_clients               | 1     |
| Rpl_semi_sync_master_net_avg_wait_time     | 752   |
| Rpl_semi_sync_master_net_wait_time         | 1505  |
| 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      | 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                | 2     |
+--------------------------------------------+-------+
14 rows in set (0.00 sec)

--在Slave节点监控半同步复制的状态
mysql> show status like '%semi%';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| Rpl_semi_sync_slave_status | ON    |
+----------------------------+-------+
1 row in set (0.00 sec)

看完了这篇文章,相信你对“如何配置与监控MySQL 5.5半同步复制”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网数据库频道,感谢各位的阅读!

您可能感兴趣的文档:

--结束END--

本文标题: 如何配置与监控MySQL 5.5半同步复制

本文链接: https://www.lsjlt.com/news/62669.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何配置与监控MySQL 5.5半同步复制
    小编给大家分享一下如何配置与监控MySQL 5.5半同步复制,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 在MySQL的复制环境中,数据同步默认是异步的,Ma...
    99+
    2022-10-18
  • 怎么样配置mysql主从复制、mysql-5.5异步及半同步
    下文主要给大家带来怎么样配置mysql主从复制、mysql-5.5异步及半同步,希望这些内容能够带给大家实际用处,这也是我编辑怎么样配置mysql主从复制、mysql-5.5异步及半同步这篇文章的主要目的。...
    99+
    2022-10-18
  • MySQL半同步复制如何配置
    本篇内容主要讲解“MySQL半同步复制如何配置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL半同步复制如何配置”吧!前言:MySQL默认的主从复制采用...
    99+
    2022-10-19
  • 半同步与异步的MySQL主从复制如何配置
    这篇文章主要介绍了半同步与异步的MySQL主从复制如何配置,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、MySQL主从复制原理这里我以M...
    99+
    2022-10-18
  • mysql中怎么配置半同步复制
    这篇文章给大家介绍mysql中怎么配置半同步复制,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.准备主备库配置文件,创建复制用户主库server_id = 1 备库  se...
    99+
    2022-10-18
  • MySQL半同步复制 - 优点、缺点、配置
    说到半同步复制,就得先说说复制的三种方法:异步复制:对于异步复制而言,Master主机将事件写入到binlog日志后,并不保证所有的事件都已经复制到slave主机,因此如果Master和Slave之间有网络...
    99+
    2022-10-18
  • 怎么在MySQL中配置半同步复制
    今天就跟大家聊聊有关怎么在MySQL中配置半同步复制,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。MySQL安装通过APT的方式安装,官方指导文档地...
    99+
    2022-10-18
  • Mysql中如何实现半同步复制
    本篇文章为大家展示了Mysql中如何实现半同步复制,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、环境准备:centos系统服务器2台、一台用户做Mysql主服务...
    99+
    2022-10-18
  • mysql中slave_exec_mode如何设置自动跳过同步复制错误
    小编给大家分享一下mysql中slave_exec_mode如何设置自动跳过同步复制错误,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作