MySQL主从切换的超详细步骤

目录
  • 版本:
  • 前言:
  • 主从环境:
  • 切换步骤:
  • 总结

版本:

MySQL-5.7.32+GTID

前言:

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

主从环境:

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

切换步骤:

1 切断应用对主库的流量

2 主库备库设置只读

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

3 查看备库复制进程状态

show slave status\G

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

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

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

select @@global.gtid_executed;

通过GTID_SUBSET函数进行比对

SELECT GTID_SUBSET(master_gtid_executed, slave_gtid_executed);

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

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

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

stop slave;
reset slave all;

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

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

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

8 应用流量切向新主库

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

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

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

select @@global.gtid_executed

如果已经写入数据的新主库,不能直接读取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;

如果从库应用还未写入,未产生新数据,则可以从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的开始位置读取

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主从切换内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MHA实现mysql主从数据库手动切换的方法

    本文实例讲述了MHA实现mysql主从数据库手动切换的方法,分享给大家供大家参考.具体方法如下: 一.准备工作 1.分别在Master和Slave执行如下,方便mha检查复制: 复制代码 代码如下: grant all privileges on *.* to 'root'@'10.1.1.231' identified by 'rootpass'; grant all privileges on *.* to 'root'@'10.1.1.234' identified by 'rootpas

  • MySQL主从切换的超详细步骤

    目录 版本: 前言: 主从环境: 切换步骤: 总结 版本: MySQL-5.7.32+GTID 前言: 本文讲述MySQL主从切换流程,切换步骤主要针对主备正常切换以及主库宕机备库切换两个场景,掌握正确的切换流程,可以有效避免切换过程中可能出现的数据不一致问题以及提高整体切换的时间 主从环境: 场景一:主备正常切换,此场景主要是针对在主备同步复制正常的情况下进行的主备切换,例如:灾备演练,计划性的主备切换. 切换步骤: 1 切断应用对主库的流量 2 主库备库设置只读 set global rea

  • Docker安装mysql超详细步骤记录

    查看需要安装的镜像版本 dockerHub官网地址 1.搜索mysql 2.点击标签 3.点击Tags,查看想要的版本号 在安装好docker的linux中执行命令 拉取mysql最新版本 docker pull mysql 拉取mysql指定版本 docker pull mysql:5.7 拉取结束后,查看本地是否存在 docker images 运行mysql docker run -d -p 3306:3306 --name mysql -v /mysqldata/mysql/log:/v

  • windows安装MySQL到D盘的超详细步骤

    目录 步骤 1.下载MySQL 2.在非c盘创建文件夹 3.双击刚刚下载的内容 重点来了!如何转到别的盘的重点! 端口号没必要变,如果你变了,请记住! 重要!设置自己的账户和密码.我这里账户和密码使用的都是‘root’ 配置MySQL的环境变量 总结 步骤 1.下载MySQL 首先,打开 MySQL 官网,找到 Community 版的下载.选择 Community 是因为该版本免费而且是一般使用的版本. MySQL 下载处的最终网址:MySQL :: Download MySQL Instal

  • idea配置连接数据库的超详细步骤

    学习时,使用IDEA的时候,需要连接Database,连接时遇到了一些小问题,下面记录一下操作流程以及遇到的问题的解决方法. 一. 连接操作 简介:介绍如何创建连接,具体连接某个数据库的操作流程. 1.1 创建连接 打开idea,点击右侧的 Database 或者 选择 View --> Tool Windows --> Database 点击 + 号 ,选择 Data Source ,选择 数据库 (下面以MySQL为例) 选择 mysql 后弹出以下界面 填上信息后,点击 Test Con

  • JDK下载与安装超详细步骤大全

    目录 开发环境-JDK安装 1. 下载地址 2. 安装JDK 3. 配置系统环境 总结 开发环境-JDK安装 无论在我们开始学习Java或者入职第一天安装环境,这个你都是必备滴!下面是下载和安装JDK的教程: 1. 下载地址 这里默认采用比较流行的jdk版本jdk1.8. https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 打开链接,进入该页面: 往下拉,根据你的电脑系统来进行对应的版本进行选择:

  • window10下node使用管理神器NVM安装配置超详细步骤

    目录 前言 一.什么是nvm? 二.nvm下载安装配置 1.下载 2.nvm解压安装 3.检查环境变量 4.确认安装成功 5.设置和安装node 5.1 设置淘宝镜像 5.2 安装node指定版本并使用 5.3 指定全局安装路径和缓存路径 总结建议 前言 node版本持续更新,一些node的新特性只有在node的较高版本中才可以使用.但是如果将node版本切换到较高版本,就会导致对现有项目的一些依赖造成环境不兼容.所以,需要一个工具对node版本进行管理,允许开发环境同时存在多个node版本,开

  • 使用IDEA配置Tomcat和连接MySQL数据库(JDBC)详细步骤

    IDEA配置Tomcat 1,点击Run-EDit Configurations- 2.点击左侧"+"号,找到Tomcat Server-Local(若是没有找到Tomcat Server 可以点击最后一行 34 items more) 3.在Tomcat Server -> local-> Server -> Application server项目下,点击 Configuration ,找到本地 Tomcat 服务器,再点击 OK按钮. 至此,IntelliJ I

  • Python实战之画哆啦A梦(超详细步骤)

    一.写在前面 本文基于64位windows系统(鼠标右键点击桌面"此电脑"图标--属性可查看电脑系统版本).python3.x(pycharm自动安装的版本, 3.0以上).文中代码内容所使用的工具是pycharm-community-2020.1,实践中如有碰到问题,可留言提问. 前阵子有看到zh上有大神画了这个哆啦A梦的大头贴,自己也来试了一下,很简单,但长篇整段的代码对刚刚学会海龟绘图语法的初学者来说还是有一定难度,所以来做一个拆解版详细步骤讲解实现. 二.效果图 言归正传,先上

  • 彻底卸载VMware虚拟机的超详细步骤记录

    目录 一. 在卸载VMware虚拟机之前,要先把与VMware相关的服务和进程终止 二. 开始卸载VMware虚拟机 三. 清理VMware虚拟机在注册表中的信息和遗留在电脑的文件 总结 一. 在卸载VMware虚拟机之前,要先把与VMware相关的服务和进程终止 1. 在windows中按下[Windows键],搜索[服务]设置,然后打开: 2. 找到以VM打头命名的服务,然后右键停止这些服务: 3. 在windows中使用[Crtl+Shift+Esc]打开任务管理器,并找到以VM打头命名的

  • IDEA配置Maven的超详细步骤

    目录 一.Maven下载&环境配置 1.下载Maven 2.解压 3.配置环境变量 4.测试 二.更改Maven中的设置 1.编辑settings.xml 2.配置本地仓库 3.更换默认更新源 4.添加JDK的版本 三.在IDEA中配置Maven 1. 打开IDEA,新建一个空项目: 2. 打开设置找到Maven,设置Maven主路径.用户设置文件.本地仓库的地址: 3. 进到Maven导入(importing)设置,在导入程序的VM选项中添加: 4. 创建一个新模块: 四.测试 1.在pom.

随机推荐