zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

MySQL 主从复制不同步问题解决方案(mysql主从不同步)

mysql同步解决方案 问题 主从 主从复制
2023-06-13 09:17:13 时间

MySQL 主从复制是一种强有力的高可用性和容灾备份技术,是 MySQL 数据库高可用性解决方案的重要组成部分。然而,MySQL 主从复制操作过程中会遇到主从不同步的情况,影响数据的一致性,严重时可能导致数据库发生危害,因此,MySQL主从不同步问题的解决是企业级数据库安全稳定提升的重要依靠。

MySQL 主从不同步发生几种情况,可能连主从服务器之间的连接失败或延时导致,或主服务器上发生一些错误,从服务器或者基础设施故障,主从保存到磁盘的lag_time过长等等都可能出现问题,故障现象一般表现为因为某种原因,造成主从在当前位置不一致且无法实现同步,当数据变更传播到从库后,从库状态会变为“异常(Error)”状态,不再对外连接,不能正常工作。

针对MySQL 主从不同步问题的解决方案主要有3种:

1.采用脚本定时监控主从复制状态, 针对slave_ io_running、slave_sql_running 两项以及Seconds_Behind_Master3个状态发生变化来判断状态是否可用。如果不可用,分析具体原因,深入分析,找出实际原因并采取对应行动,如调整网络延时、排查磁盘I/O状态等;

#!/bin/bash
#检查是否存在replication挂掉# master_status=`mysql -uroot -p123456 -e "show master status\G" | grep " | " | awk "{print}"`
slave_io=`mysql -uroot -p123456 -e "show slave status\G" | grep Slave_IO_Running | awk "{print $2}"`slave_sql=`mysql -uroot -p123456 -e "show slave status\G" | grep Slave_SQL_Running | awk "{print $2}"`
if [ "$slave_io" = "No" -o "$slave_sql" = "No" ] then
# echo "The replication is broken!" # echo "Starting reinitializing replication..."
# mysql -uroot -p123456 -e "slave stop; change master to master_log_file="0"; change master to master_log_pos= 0; start slave;show slave status\G"else
echo "The replication is ok"fi

2.让主从复制停止后,重新进行复制,重新启动主从复制。

mysql stop slave;
mysql CHANGE MASTER TO MASTER_HOST="host_ip",MASTER_USER="username",MASTER_PASSWORD="password",MASTER_LOG_FILE="mysql_bin.000003",MASTER_LOG_POS=981;mysql start slave;

3.采用 delete from master 的方式重置主服务器 binlog,从库会重新把之前从失败的位置重新执行一次。

mysql delete from mysql.gtid_executed where source_id=NodeId;
mysql reset master;

因此,针对不同的MySQL 主从复制不同步的情况,可以采取以上3种解决方案,c能够灵活排查处理此类问题,解决MySQL 主从复制不同步问题,以保障MySQL高可用性运行。


我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题

本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 MySQL 主从复制不同步问题解决方案(mysql主从不同步)