不停机修复mysql主从数据同步错误导致服务器磁盘占满问题

事情的现象:

        线上生产环境mysql服务器采用主从结构。突然告警从库服务器磁盘占用高。经过磁盘空间检查,主要是/mysql/data目录使用100%(直接占满了),进入目录后发现被文件slave-relay-bin.*系列文件占满了。常理数据不会这么大,主库一切正常,磁盘空间也正常。定位问题开始。

1:查看从库的同步状态

show slave status;

 发现如图所示的提示信息,等待磁盘空间,具体错误的原因是从库好像被人修改过数据,导致同步数据过程中数据不一致,所以一直报错,导致日志占满了磁盘空间。

2:那就要手动从主库全部同步一次,这期间还不能停主库的数据库服务(用户都在不间断使用系统),开工

2-1:首先将主库的数据dump出来一定要包含binlog点位信息(如果主从,binlog一定会开启)

mysqldump -udb_user -pdb_password --flush-logs --single-transaction --master-data=2 --all-databases > backup.sql

        其中参数分别表示:

        --flush-logs 代表重新刷写另外一个binlog文件
        --single-transaction 代表开启事物,不锁表导出
        --master-data=2 代表导出的文件头部添加binlog点位信息

2-2:将备份的文件backup.sql拷贝到从库服务器上(可使用scp)

2-3:切换到从库服务器停止同步

        stop slave;

2-4:然后将从库清空,为保险期间我清理了/mysql/data目录下所有的slave-relay-bin.*系列文件,然后对应的业务库删掉重建

2-5:导入主库备份的数据

        source <备份文件路径>

2-6:重置从库同步信息

        reset slave;

2-7:修改从库同步点位信息

CHANGE MASTER TO MASTER_HOST='************',MASTER_Port=***,MASTER_USER='*****',MASTER_PASSWORD='*****',MASTER_LOG_FILE='master-bin.*******',MASTER_LOG_POS=****;

其中点位信息要从备份出的backup.sql文件中查找,在文件头部前50行左右就能看到。然后替换命令中所有的参数为自己的实际参数执行提示修改成功即可。

2-8:开启同步

        start slave;

2-9:检查同步状态

        show slave status\G;       其中\G格式化输出

        只要sql_running和io_running都为yes即可,表示成功。

2-10:检查主库和从库业务表数据是否一致,磁盘空间是否正常。(完工)

大家有什么更好的解决办法欢迎指导交流。

ps:我是个开发,不是专业的运维,有些操作可能比较粗糙。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值