我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL主从切换怎么实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL主从切换怎么实现

这篇文章主要介绍“MySQL主从切换怎么实现”,在日常操作中,相信很多人在MySQL主从切换怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL主从切换怎么实现”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

版本:

MySQL-5.7.32+GTID

前言:

本文讲述MySQL主从切换流程,切换步骤主要针对主备正常切换以及主库宕机备库切换两个场景,掌握正确的切换流程,可以有效避免切换过程中可能出现的数据不一致问题以及提高整体切换的时间

主从环境:

MySQL主从切换怎么实现

场景一:主备正常切换,此场景主要是针对在主备同步复制正常的情况下进行的主备切换,例如:灾备演练,计划性的主备切换。

切换步骤:

 1 切断应用对主库的流量

 2 主库备库设置只读

set global read_only=ON;set global super_read_only=ON;

3 查看备库复制进程状态

show slave status\G

MySQL主从切换怎么实现

确认Slave_IO_Running,Slave_SQL_Running状态为YES,Seconds_Behind_Master为0

4 比对主备两边的GTID是否一致

获取主备两边的executed_gtid集合,进行比对

select @@global.gtid_executed;

MySQL主从切换怎么实现

通过GTID_SUBSET函数进行比对

SELECT GTID_SUBSET(master_gtid_executed, slave_gtid_executed);

若在master_gtid_executed中的GTID,也存在slave_gtid_executed中,则返回true(1),否则返回false(0)

MySQL主从切换怎么实现

 返回一,代表主库GTID已经在从库完成执行过,两边是一致的

5 从库停掉复制进程并清空主从信息

stop slave;reset slave all;

MySQL主从切换怎么实现

6 从库关闭只读开启读写,转为新主库

set global read_only=off;set global super_read_only=off;

MySQL主从切换怎么实现

7 主库设置执行新主库的复制链路,转为新备库,完成主从切换

CHANGE MASTER TO MASTER_HOST='192.168.1.111',MASTER_USER='xxx',MASTER_PORT=3306,MASTER_PASSWORD='xxx',master_auto_position=1 ;start slave;show slave status\G

MySQL主从切换怎么实现

8 应用流量切向新主库

场景二:主库宕机备库切换为主库,这种情况主要是在异步模式或者非强一致半同步下,主库的异常宕机,可能存在数据没有完全同步到从库的情况,需要去核验追加数据。

1 对于主库宕机,数据库损坏没法正常启动时,如果binlog可以获取,则可以对binlog进行离线分析,获取差异的数据

获取备库那边已经执行过的gtid set

select @@global.gtid_executed

MySQL主从切换怎么实现

如果已经写入数据的新主库,不能直接读取binlog进行恢复,因为可能会出现数据不一致,主键冲突等问题,可以从binlog里面排除从库已经执行过的gtid并离线解析成sql语句,交给应用去分析是否补入数据

mysqlbinlog -vv --base64-output=decode-rows --exclude-gtids='1b80feab-4aa6-11ec-9a60-000c29a6e7be:1-10,2b3039c9-57fa-11eb-b504-000c29ed797a:1-8256287,3a59d149-d4b8-11eb-8cf6-000c29a6e7b4:1-10,a0a3d4b2-fff8-11eb-a420-000c29a6e7be:1-10011' /opt/mysql/log/nlog.000150 > /tmp/binlog_150_gtid.sql;

MySQL主从切换怎么实现

如果从库应用还未写入,未产生新数据,则可以从binlog里面排除从库已经执行过的gtid直接导入追加数据

mysqlbinlog --exclude-gtids='1b80feab-4aa6-11ec-9a60-000c29a6e7be:1-10,2b3039c9-57fa-11eb-b504-000c29ed797a:1-8256287,3a59d149-d4b8-11eb-8cf6-000c29a6e7b4:1-10,a0a3d4b2-fff8-11eb-a420-000c29a6e7be:1-10011'  /opt/mysql/log/nlog.000150 | mysql -uroot -p -S /opt/mysql/3306/data/mysql.sock -P3306

2 对于主库宕机,但旧主库可以重新启动拉起,则在启动后,如果新主库应用还未写入新数据,可以将新主库change master复制继续指向旧主库,读取未应用的日志恢复;

已经写入数据的新主库,不能直接读取binlog进行恢复,因为可能会出现数据不一致,主键冲突等问题,而是应该将数据解析成sql语句,让应用去分析是否补入数据。

用my2sql在线解析binlog日志获取sql语句,需要获取开始的日志号以及读取位点,读取位点可以根据--exclude-gtids排除gtid后解析binlog的开始位置读取

MySQL主从切换怎么实现

my2sql -user xxxx -password xxxx  -work-type 2sql -start-file /opt/mysql/log/nlog.000150 -start-pos=7940194 --add-extraInfo -output-dir /tmp/my2sql_recover

目录下会生产forward+日志号的文本,里面存放解析出来的sql

MySQL主从切换怎么实现

MySQL主从切换怎么实现

到此,关于“MySQL主从切换怎么实现”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL主从切换怎么实现

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

下载Word文档

猜你喜欢

MySQL主从切换怎么实现

这篇文章主要介绍“MySQL主从切换怎么实现”,在日常操作中,相信很多人在MySQL主从切换怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL主从切换怎么实现”的疑惑有所帮助!接下来,请跟着小编
2023-07-02

java怎么实现mysql主从切换

Java实现MySQL主从切换MySQL主从复制通过将数据从主节点复制到从节点以提高可用性和性能。使用Java代码实现主从切换:导入库。连接到主从节点。检查连接。停止从节点复制线程。将主节点提升为从节点。将从节点提升为主节点。检查切换结果。注意:版本兼容性、数据备份和监控切换过程非常重要。推荐使用MaxScale或ProxySQL等自动化工具。
java怎么实现mysql主从切换
2024-04-10

k8s部署mysql主从怎么切换

要实现Kubernetes下的MySQL主从切换,可以按照以下步骤进行操作:首先,创建MySQL主从的Deployment和Service。在Kubernetes中,可以使用StatefulSet来创建有状态的MySQL实例。可以创建一个S
2023-10-27

mysql主备自动切换怎么实现

要实现MySQL主备自动切换,可以使用MySQL Replication和MySQL Cluster来实现高可用性。以下是一种实现方法:部署MySQL Replication:在MySQL主服务器和备用服务器之间设置主从复制,确保备用服务
mysql主备自动切换怎么实现
2024-04-09

redis主从模式怎么切换

redis 主从模式切换有两种方法:直接切换和 redis-sentinel 辅助切换。直接切换需要手动操作,包括停用主服务器、同步数据、解除关联和连接新主节点。redis-sentinel 提供自动切换,需要额外配置 sentinel 并
redis主从模式怎么切换
2024-05-21

mysql主从切换的步骤是什么

MySQL主从切换是一种数据库高可用的解决方案,可以保证系统在主数据库发生故障时,从数据库可以顶替主数据库继续提供服务。切换的步骤如下:确认主数据库故障:首先需要确认主数据库发生了故障,无法提供服务。手动切换:手动切换是指管理员手动执行切换
mysql主从切换的步骤是什么
2024-04-09

keepalived怎么配置redis主从切换

本篇内容介绍了“keepalived怎么配置redis主从切换”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!IP规划:主节点:10.0.37
2023-06-05

Ruoyi从mysql怎么切换到postgresql

这篇“Ruoyi从mysql怎么切换到postgresql”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Ruoyi从mysq
2023-07-05

MySQL主从切换的超详细步骤

目录版本:前言:主从环境:切换步骤:总结版本:mysql-5.7.32+GTID前言:本文讲述MySQL主从切换流程,切换步骤主要针对主备正常切换以及主库宕机备库切换两个场景,掌握正确的切换流程,可以有效避免切换过程中可能出现的数据不
2022-06-28

使用vue怎么实现主题切换

这篇文章给大家介绍使用vue怎么实现主题切换,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。第一种办法:动态组件当主题的路由并没有发生变化,仅是组件内部的样式,功能发生了变化,我们可以将一个组件复制一遍,修改完后,通过懒
2023-06-15

怎么使用PHP实现数据库主从复制故障切换

今天小编给大家分享一下怎么使用PHP实现数据库主从复制故障切换的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、主从复制的基
2023-07-06

怎么简单实现CSS主题的切换

这篇文章给大家分享的是有关怎么简单实现CSS主题的切换的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。HTML首先,我们需要包含“按钮”,这些按钮将触发主题根据选择的主题进行切换。(注:你总是可以使这些作为 opt
2023-06-08

编程热搜

目录