广告
返回顶部
首页 > 资讯 > 数据库 >怎么在MySQL中配置半同步复制
  • 723
分享到

怎么在MySQL中配置半同步复制

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

今天就跟大家聊聊有关怎么在Mysql中配置半同步复制,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。MySQL安装通过APT的方式安装,官方指导文档地

今天就跟大家聊聊有关怎么在Mysql中配置半同步复制,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

MySQL安装

通过APT的方式安装,官方指导文档地址:
https://dev.mysql.com/downloads/repo/apt/

1、下载mysql-apt-config_0.8.3-1_all.deb

怎么在MySQL中配置半同步复制

2、安装deb

A Quick Guide to Using the MySQL APT Repository:
Https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/

>sudo dpkg -i mysql-apt-config_0.8.3-1_all.deb

3、更新源

>sudo apt-get update

4、安装MySQL

>sudo apt-get install mysql-server

5、根据提示选择安装和设置密码。

另外,还需要对其进行设置,绑定的IP和打开防火墙的3306端口,这里主要是学习MySQL半同步复制,对MySQL的安装不做多解释,如果疑问欢迎留言。

MySQL半同步复制介绍

怎么在MySQL中配置半同步复制

(1)默认情况下,MySQL的复制功能是异步的,异步复制可以提供最佳的性能, 主库把binlog日志发送给从库,这一动作就结束了,并不会验证从库是否接收完毕,这一过程,也就意味着有可能出现当主服务器或从服务器端发生故障的时候,有可能从服务器没有接收到主服务器发送过来的binlog日志,这就会造成主服务器和从服务器的数据不一致,甚至在恢复时造成数据的丢失。

注意:

半同步复制模式必须在主服务器和从服务器端同时开启,否则主服务器默认使用异步复制模式。

(2)异步复制案例:

MySQL5.6 数据库主从(Master/Slave)同步安装与配置详解

(3)为了解决上述可能发生的错误,MySQL 5.5 引入了一种半同步复制模式。该模式可以确保从服务器接收完主服务器发送的binlog日志文件并写入到自己的中继日志relay log里,然后会给主服务器一个反馈,告诉主服务器已经接收完毕,这时主服务线程才返回给当前session告知操作完成。

(4)当出现超时情况是,主服务器会暂时切换到异步复制模式,直到至少有一个从服务器从及时收到信息为止。

(5)中继日志的自我修复:

从MySQL 5.5.X 版本开始,增加了relay_log_recovery参数,这个参数的作用是:当slave从库宕机后,假如relay.log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性。默认情况下该功能是关闭的,将relay_log_recovery的值设置为1时,可在slave从库上开启该功能,建议开启。

(6)半同步复制与异步复制的切换:

半同步复制的工作原理就是当slave从库IO_Thread线程将binlog日志接收完毕之后,要给master主库一个确认,如果rpl_semi_sync_master_timeout=10000 (10秒)超过10秒未收到slave从库的接受确认信号,那么就会自动切换为传统的异步复制模式。

MySQL半同步复制配置

首先,需要安装两个MySQL,这里是:

  • Master:192.168.1.227

  • Slave:192.168.1.224

原始数据库的模样如下:

怎么在MySQL中配置半同步复制

一、Master配置

(1)在Master数据库安装半同步复制插件

mysql>INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

怎么在MySQL中配置半同步复制

(2)设置Master上开启半同步复制:

mysql>SET GLOBAL rpl_semi_sync_master_enabled = 1;

怎么在MySQL中配置半同步复制

(3)修改mysqld.cnf 配置文件:

怎么在MySQL中配置半同步复制

上图指出了MySQL配置的文件路径。

[mysqld]

log-bin=mysql-bin
server_id = 10086
server_id_bits = 33
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000

怎么在MySQL中配置半同步复制

(4)修改MySQL Server-uuid配置文件:

root@xuliugen:/var/lib/mysql# pwd
/var/lib/mysql

修改 auto.cnf文件,server-uuid的值格式固定,为了和Slave的区别开

[auto]
server-uuid=8d90feb7-1a88-11e7-9d11-000c298a546f

(5)查看配置是否成功:

mysql>SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%semi%';

怎么在MySQL中配置半同步复制

(6)参数说明:

1、rpl_semi_sync_master_enabled = 1,表示在master上已经开启了半同步复制模式;

2、rpl_semi_sync_master_timeout = 10000,表示如果主库在某次事务中的等待时间超过10000毫秒,则降级为异步复制模式,不在等待slave从库。如果主库再次探测到slave从恢复了,则会自动切换回半同步复制模式;

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

4、rpl_semi_sync_master_trace_level = 32,指用于开启半同步复制模式时的调试级别,默认为32。

可以看出,在配置Master的时候,只设置了1,其他的都采取的默认设置。

二、Slave配置

(1)在Slave数据库安装半同步复制插件:

mysql>INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

怎么在MySQL中配置半同步复制

(2)设置Slave上开启半同步复制:

mysql>SET GLOBAL rpl_semi_sync_slave_enabled = 1;

怎么在MySQL中配置半同步复制

(3)修改mysqld.cnf 配置文件:

[mysqld]

log-bin=mysql-bin
server_id=10089
server_id_bits = 32
rpl_semi_sync_slave_enabled = 1

怎么在MySQL中配置半同步复制

(4)修改MySQL server-uuid配置文件:

root@xuliugen:/var/lib/mysql# pwd
/var/lib/mysql

修改 auto.cnf文件,server-uuid的值格式固定,为了和Slave的区别开

[auto]
server-uuid=8d90feb7-1a88-11e7-9d11-000c298a123f

确保和Master的server-uuid不一样!

(5)查看配置是否成功:

mysql>SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%semi%';

怎么在MySQL中配置半同步复制

(6)参数说明:

1、rpl_semi_sync_slave_enabled = 1,表示在slave上已经开启了半同步复制模式;

2、rpl_semi_sync_slave_trace_level = 32,指用于开启半同步复制模式时的调试级别,默认为32。

三、为Slave指定Master

(1)命令行模式下重启Master

root@xuliugen:~# service mysql restart

(2)命令行模式下重启Slave

root@xuliugen:~# service mysql restart

(3)查看Master状态:

mysql> show master status\G;
*************************** 1. row ***************************
       File: mysql-bin.000004
     Position: 154
   Binlog_Do_DB:
 Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.02 sec)

mysql>

怎么在MySQL中配置半同步复制

注意:

File: mysql-bin.000004
Position: 154

很重要,后边需要使用!

(4)为Slave指定Master:

1、首先关闭Slave的半同步复制

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

2、为Slave指定Master

mysql>change master to master_host='192.168.1.227',master_user='root',master_passWord='123456',master_log_file='mysql-bin.000004', master_log_pos=154;

Query OK, 0 rows affected, 2 warnings (0.02 sec)

其中:

master_host='192.168.1.227',Master主库IP地址
master_user='root',Master主库数据库账户
master_password='123456',Master主库数据库root用户密码
master_log_file='mysql-bin.000004', Master主库binlog文件
master_log_pos=154,Master主库binlog文件position

注意:

在MySQL 5.6版本以后,在进行主从复制的时候可以使用GTID的方式,无需再找binglog和pos点,只需要知道主服务器的IP、端口、账户、密码就可以实现自动找点同步,开启GTID功能的时候就不用再使用binlog和pos了。详细信息,请查阅相关资料进行学习。

3、开启Slave的半同步复制

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

四、测试半同步复制是否成功

怎么在MySQL中配置半同步复制

五、如何优雅的关闭Slave同步信息

在某些时候,一台服务器不再用来作为Slave,那么我们就需要清楚他的同步信息,一般会使用:

mysql> stop slave #先关闭
mysql> reset slave #清楚Slave同步信息

但是,这样再通过show master status\G显示的时候:

mysql> show master status\G;

还是会出现同步的信息,这是因为执行了 reset slave 只是把 master.inforelay-log.info 文件删除了,但同步信息还在,如果有人在执行start slave命令开启了同步功能,结果就会又从头开始同步了,有可能还会造成数据的丢失。

如何让其清除的更干净哪?请使用下边的命令:

mysql> stop slave #先关闭
mysql> reset slave all#清楚Slave同步信息

再次执行show master status\G就不会再有任何信息了。

六、部分异常场景模拟

(1)半同步复制与异步复制的切换:

上述已经介绍了为什么会出现半同步复制到异步复制的切换,那么现在模拟一个场景进行演示。

场景如下:

1、关闭slave同步,停止IO接收binlog日志

mysql> stop slave;

该操作就将IO线程关闭,等待10秒之后,如果master未收到来自slave的确认信息,就会切换到异步复制模式:

怎么在MySQL中配置半同步复制

上图看到slave已经关闭了半同步复制模式,再次开启:

mysql> start slave;

怎么在MySQL中配置半同步复制

此时,已经还原到半同步复制模式了。

(2)同步报错案例演示:

我们,首先从slave库上删除数据库表 ufind,然后到master再次删除该库ufind,该同步就会报错:

怎么在MySQL中配置半同步复制

Last_Error: Error 'Can't drop database 'ufind'; database doesn't exist' on query. Default database: 'ufind'. Query: 'DROP DATABASE `ufind`'

此时,查看半同步状态:

怎么在MySQL中配置半同步复制

是开启的,因此没有将半同步复制模式转化为异步复制模式,可以看出半同步复制模式跟IO_Thread是有直接关系的,但跟SQL_THREAD没有关系。

也就是说,slave从库接收完二进制日志后给master主库一个确认,但是他不会管relay-log中继日志是否执行完毕。

看完上述内容,你们对怎么在MySQL中配置半同步复制有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网数据库频道,感谢大家的支持。

您可能感兴趣的文档:

--结束END--

本文标题: 怎么在MySQL中配置半同步复制

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

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

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

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

下载Word文档
猜你喜欢
  • 怎么在MySQL中配置半同步复制
    今天就跟大家聊聊有关怎么在MySQL中配置半同步复制,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。MySQL安装通过APT的方式安装,官方指导文档地...
    99+
    2022-10-18
  • mysql中怎么配置半同步复制
    这篇文章给大家介绍mysql中怎么配置半同步复制,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.准备主备库配置文件,创建复制用户主库server_id = 1 备库  se...
    99+
    2022-10-18
  • MySQL半同步复制如何配置
    本篇内容主要讲解“MySQL半同步复制如何配置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL半同步复制如何配置”吧!前言:MySQL默认的主从复制采用...
    99+
    2022-10-19
  • mysql中怎么设置半同步复制
    mysql中怎么设置半同步复制,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在主、从上安装和开启半同步插件mysql> install ...
    99+
    2022-10-18
  • MySQL半同步复制 - 优点、缺点、配置
    说到半同步复制,就得先说说复制的三种方法:异步复制:对于异步复制而言,Master主机将事件写入到binlog日志后,并不保证所有的事件都已经复制到slave主机,因此如果Master和Slave之间有网络...
    99+
    2022-10-18
  • 怎么样配置mysql主从复制、mysql-5.5异步及半同步
    下文主要给大家带来怎么样配置mysql主从复制、mysql-5.5异步及半同步,希望这些内容能够带给大家实际用处,这也是我编辑怎么样配置mysql主从复制、mysql-5.5异步及半同步这篇文章的主要目的。...
    99+
    2022-10-18
  • 半同步复制安装配置
    异步复制(Asynchronous Replication )mysql默认的复制就是异步的,主库在执行完客户端提交的事物后会立即返回结果给客户端,并不判断从库是否已经接受并处理,这样就会有一个问...
    99+
    2022-10-18
  • MySQL中怎么实现半同步复制
    MySQL中怎么实现半同步复制,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。半同步复制:什么是半同步复制我们知道在默认情况下,...
    99+
    2022-10-18
  • MySQL半同步复制中after_rollback怎么用
    这篇文章给大家分享的是有关MySQL半同步复制中after_rollback怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。调用流程 ha_rollback_low->...
    99+
    2022-10-18
  • 如何配置与监控MySQL 5.5半同步复制
    小编给大家分享一下如何配置与监控MySQL 5.5半同步复制,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 在MySQL的复制环境中,数据同步默认是异步的,Ma...
    99+
    2022-10-18
  • 半同步与异步的MySQL主从复制如何配置
    这篇文章主要介绍了半同步与异步的MySQL主从复制如何配置,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、MySQL主从复制原理这里我以M...
    99+
    2022-10-18
  • 怎么实现MySQL中的半同步复制
    这篇文章给大家介绍怎么实现MySQL中的半同步复制,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 关于MySQL的复制架构,大体有下面三种方式,异步,全同步复制,半同步复制。三种复制...
    99+
    2022-10-19
  • MySQL异步复制和半同步复制怎么实现
    这篇文章主要介绍“MySQL异步复制和半同步复制怎么实现”,在日常操作中,相信很多人在MySQL异步复制和半同步复制怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”My...
    99+
    2022-10-19
  • Mariadb之半同步复制集群配置 - Linux
    半同步指的是在主节点发生写操作事件后,它会把该操作的事件发送给从节点,当从节点接收到主节点发送过来的事件后,就立刻告诉主节点,从节点已经接收到主节点发送过来的事件,此时主机点并不会等到从节点重放完成,而是接收到从节点接收...
    99+
    2018-09-20
    Mariadb之半同步复制集群配置 - Linux
  • MySQL中怎么实现主从复制和半同步复制
    这篇文章将为大家详细讲解有关MySQL中怎么实现主从复制和半同步复制,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、复制的介绍MySQL支持单向、异步复制...
    99+
    2022-10-18
  • Mysql中如何实现半同步复制
    本篇文章为大家展示了Mysql中如何实现半同步复制,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、环境准备:centos系统服务器2台、一台用户做Mysql主服务...
    99+
    2022-10-18
  • Mysql5.7中怎么实现半同步复制
    这篇文章将为大家详细讲解有关Mysql5.7中怎么实现半同步复制,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。0.系统版本mysql> se...
    99+
    2022-10-18
  • mysql5.5中怎么实现半同步复制
    本篇文章为大家展示了mysql5.5中怎么实现半同步复制,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。master:192.168.70.101slave:192....
    99+
    2022-10-18
  • mysql在线建立半同步复制的从库
    mysql在线建立半同步复制的从库 在主库和备库创建同步用的用户: grant replication slave on *.* to repl@'%' identified by 'xxx'; (1)...
    99+
    2022-10-18
  • MYSQL架构中怎样进行主从半同步复制
    本篇文章为大家展示了MYSQL架构中怎样进行主从半同步复制,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Mysql 5.5 版本之后引入了半同步复制功能,主从服务器...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作