暂无图片
暂无图片
6
暂无图片
暂无图片
2
暂无图片

MySQL 主从节点切换指导

原创 CuiHulong 2025-01-23
402

在MySQL生产环境中,遇到维护和极端情况时,进行主从节点的快速且安全的切换,同时确保数据不丢失,是一个至关重要的操作。这样就需要严谨把控各个技术点。
整个切换任务可以遵循以下策略:
1.原主节点无应用操作连接。

  • 在进行主从节点切换之前,需要确保所有连接到原主库的应用已经断开连接,以避免在切换过程中发生数据写入操作导致数据不一致。
  • 通过设置主库为只读模式来间接实现这一点,虽然这不会强制断开连接,但会阻止新的写入操作。
  • 原连接通过数据库命令行来断开所有连接到主节点的会话。

2.切换后验证。包含VIP,只读属性,账号访问权限等。

  • 验证VIP(虚拟IP):在主从切换后,需要确保VIP已经正确切换到新的主节点上
  • 验证只读属性:如果在切换前将原主节点设置为只读模式,那么在切换后需要验证新主节点是否具有读写权限。
  • 验证账号访问权限: 切换后,需要验证用于连接数据库的账号的访问权限是否正确,包括用户名、密码、权限级别等。

3.检查复制状态,切换之后也需要保证高可用场景。

  • 检查复制状态:在主从节点切换后,需要使用命令行检查原复制进程是否在运行。
  • 保证高可用场景:在切换后,需要确保新的主从节点都具备高可用性,即能够在发生故障时快速切换到备用节点。

4.备份恢复任务的调整。

  • 在进行主从节点切换之后,为了不影响生产业务,确保备份任务不在新主节点上。

5.监控配置

  • 在进行主从节点切换之后,需要配置好数据库监控工具,能够实时监控数据库的性能和状态。

切换步骤

主从节点的切换可遵循以下步骤。

1.检查配置参数

参数部分基本包含只读属性和MySQL服务自动启动是否启动复制进程。

#主节点设置: skip_slave_start =ON --禁止从库自动启动 read-only =OFF --取消普通用户只读属性,对于root账号无效,root 账号可进行DML,DDL操作 super_read_only =OFF --取消超级用户只读属性 #从节点 skip_slave_start =ON read-only =ON super_read_only =ON
复制

2.切换前确认复制状态和延迟情况

在复制信息中,查看主节点,端口,复制进程运行情况和延迟。
其指标包含:Master_Host, Master_Port, Slave_IO_Running, Slave_SQL_Running, Seconds_Behind_Master

mysql> SHOW SLAVE STATUS \G ; ##从库上执行,主从复制情况 Slave_IO_State: Waiting for master to send event --IO thread的状态 Master_Host: 100.1.1.1 -- 主库的地址 Master_User: repl -- 用于连接主库复制账号(这个账号是在主库上创建) Slave_IO_Running: Yes -- IO线程是否已启动并已成功连接到主库 Slave_SQL_Running: Yes -- SQL线程是否启动。 Seconds_Behind_Master: 0 -- 主从延迟
复制

备注: 这里需要保证YES状态,延迟基本等于0的情况下,进行切换。

3.检查运行情况

查看当前执行的线程是否存在大事务之类的。还有保留当前切换的时的GTID信息。以便如出现问题,能进行准确的排查。

mysql> SHOW PROCESSLIST; --查看当前进程 mysql> SHOW MASTER STATUS \G ; --主库上执行,查看主库的binlog,position信息
复制

备注: 从节点确保relay log全部落盘到从节点上。

4.进行切换

切换的方式有很多种,可以按照实际情况进行选择。一般常用的方式
1.直接关闭MySQL主节点服务。比较省事,但注意确保不要自动启动即可。
2.存在VIP场景下,进行VIP飘逸。如使用keepalived,主节点priority大于从节点priority,state为BACKUP情况。
3.其他管理组件执行failover操作。

5.切换检查

1)系统层面检查VIP是否进行飘逸,原主和新主都要进行检查,以防止脑裂情况

#Linux下查看IP shell# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 192.168.122.1/24 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever #原主VIP还存在,很大可能是arp导致。清除命令如下 shell#/sbin/arping -I ens33 -c 5 -s $VIP $GATEWAY &>/dev/null
复制

2)数据库层面检查链接情况

#查看当前进程 mysql> SHOW PROCESSLIST; #如原主节点,存在大量链接,需要批量KILL掉链接 mysql>SELECT concat('KILL ',id,';') FROM information_schema.processlist WHERE time>10 and db is not null and command!='sleep' into outfile '/tmp/a.txt'; mysql>SOURCE /tmp/a.txt; #检查只读属性.如没有设置需要SEG GLOBAL方式设置,同时之前链接会话,要进行KILL操作。 mysql> SHOW VARIABLES LIKE '%READ_ONLY%'; +-----------------------+-------+ | Variable_name | Value | +-----------------------+-------+ | read_only | OFF | | super_read_only | OFF | +-----------------------+-------+ 2 rows in set (0.00 sec)
复制

3)用户账号链接
使用MySQL客户端连接服务确认是否能正常访问,能显示访问数据库信息。

shell# mysql -h10.10.1.1 -utester -p****** -P3310
复制

到此为止,已完成切换验证。应用可以很好的使用。但还有DBA后续工作。

后续DBA工作

1.新主节点复制通道清理

新主节点停止复制进程。有时大事务会导致复制进程无法停止。需要确认。

mysql> STOP SLAVE; Query OK, 0 rows affected (0.04 sec) #确认复制情况,以下两个值 必须达到 NO mysql> SHOW SLAVE STATUS \G; Slave_IO_Running: No Slave_SQL_Running: No #清除复制进程 mysql> RESET SLAVE FOR CHANNEL '复制频道名称';
复制

2.配置双主

配置双主。这里需要新主保留所有binlog文件条件下,才能成功。

#原主操作,配置主从关系 mysql> CHANGE MASTER TO MASTER_HOST='100.1.1.2', MASTER_USER='repl', MASTER_PASSWORD='******', MASTER_AUTO_POSITION=1; Query OK, 0 rows affected (0.05 sec) mysql> START SLAVE; Query OK, 0 rows affected (0.04 sec) #确认复制情况,以下两个值 必须达到 YES mysql> SHOW SLAVE STATUS \G; Slave_IO_Running: YES Slave_SQL_Running: YES
复制

备注: 对于高可用复制关系,这里可以选择两种,一是配置成双主,二是复制通道清理,重新搭建复制通道。

注意事项

  • 整个切换过程,应避免原主节点有新数据写入。
  • 如设置MySQL的只读属性一定进行检查。
  • 对于VIP是否能正常迁移的从库上。需要配置里主库 priority 大于 从库priority,state为BACKUP情况。出现问题,第一时间请确认报错信息 和 相关日志【 mysql-error.log(mysql)信息和 /var/log/messages(keepalived)】
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

咚咚
暂无图片
1月前
评论
暂无图片 0
在MySQL生产环境中,遇到维护和极端情况时,进行主从节点的快速且安全的切换,同时确保数据不丢失,是一个至关重要的操作。这样就需要严谨把控各个技术点。
1月前
暂无图片 点赞
评论
星星之火
暂无图片
2月前
评论
暂无图片 0
对于高可用复制关系,这里可以选择两种,一是配置成双主,二是复制通道清理,重新搭建复制通道。
2月前
暂无图片 点赞
评论