线上mysql主从架构恢复异常案例分析
admin
2023-04-19 02:22:18
0

本文主要给大家介绍线上mysql主从架构恢复异常案例分析,文章内容都是笔者用心摘选和编辑的,线上mysql主从架构恢复异常案例分析具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下主题内容吧。

前提:之前一位同事负责的一位客户,因后期转到devops小组。所以将此用户交接给我,在后期发现有一套数据库主从环境,从库已经无法正常使用。查看slave 状态为:
线上mysql主从架构恢复异常案例分析

其中:
Master_Log_File:#此处显示的bin-log已经在master上找不见了
Read_Master_Log_Pos:#显示的行数也就存在没有意义了
Slave_IO_Running:NO  #salve io进程显示为no,无法从master同步数据
因此判定从库已经无法使用,需要及时修复。保证主从架构正常使用。

以下是恢复的全部过程:
##########################################################

主要思路:
1、在不锁表的情况下备份master数据库的所有数据文件
2、将slave数据库进程停掉。并将备份文件从master传输到slave端,解压
3、重新执行 change master设置bin-log文件名称,和position

##########################################################

一、在数据库的Master端使用percona-xtrabackup进行文件级别的数据库备份。

在master数据库执行下面命令:(需要根据实际情况修改)
innobackupex --defaults-file=/etc/my.cnf --user=root --password=51idc --no-lock --use-memory=4G --compress --compress-threads=8 --stream=xbstream --parallel=4 /backup > /backup/$(date +%Y-%m-%d_%H-%M-%S).xbstream

注意:其中
1、/backup这个目录可以自定义,他代表备份文件存放的位置。
2、/etc/my.cnf这个文件是数据库启动时读取的默认配置文件,需要根据实际情况进行修改;我这边使用的是/etc/my.cnf
3、修改数据库连接密码
4、--no-lock代表不锁表进行备份,保证线上业务正常运行的同时进行数据备份。

这个操作时间依据数据量的大小,我自己备份花费了30min左右(130G数据)。备份完成后出现一个文件:
2019-02-27_11-12-21.xbstream

二、在数据库的slave端使用命令进行恢复数据,因为在恢复之前需要保证主从数据库的数据一致,但是之前因为从数据库很久都没有同步master的数据了,因此目前主从数据量差的较多。

a、需要先停掉数据库
/etc/init.d/mysql stop   #停掉数据库
b、删除之前的数据文件,默认在/var/lib/mysql下;删除mysql目录下的所有文件,因为接下来我们需要将备份数据解压到此目录下。
c、在slave数据库的机器上执行两次解压操作,将备份文件解压到本地。

xbstream -x < /backup/2019-02-27_11-12-21.xbstream -C /backup/2019-02-27_11-12-21
innobackupex --decompress --parallel=4  /backup/2019-02-27_11-12-21
d、删除所有以 .qp结尾的文件
find  /backup/2019-02-27_11-12-21  -name "*.qp" -delete  
e、创建完备份之后数据被没有马上可以被还原,需要回滚未提交事务前滚提交事务,让数据库文件保持一致性。
innobackupex使用—apply-log来做预备备份
--user-memory:指定预备阶段可使用的内存,内存多则速度快,默认为10MB

innobackupex  --apply-log   --use-memory=4G   /backup/2016-03-16_15-25-55

f、再将还原的数据文件拷贝到/var/lib/mysql目录下,其中/var/lib/mysql目录在/etc/my.cnf文件中指定的datadir

innobackupex  --defaults-file=/etc/my.cnf  --copy-back --use-memory=4G    /backup/2019-02-27_11-12-21
此过程需要的时间较长,我这边还原大概是2H左右。还原完成后,在/var/lib/mysql目录下有两个文件,可以看到salve目前保存的最近的bin-log文件和position
线上mysql主从架构恢复异常案例分析

若出现找不到qpress命令的报错可以安装repo.percona源后使用  yum -y install qpress 进行安装
repo.percona源安装命令:
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

g、修改/var/lib/mysql的属主属组
chown -R mysql.mysql /var/lib/mysql

h、启动数据库;
/etc/init.d/mysql start

I、重做主从配置
mysql -uroot -p      #进入到数据库内
change master to  master_host='主xxx.xxx.xxx.xx',master_port=3306,master_user='root',master_password='51idc',master_lo_file='master-bin.xxx',master_log_pos=xxx;

其中:master IP 、master_password根据实际情况确定。
bin-log日志文件名、master_log_pos的位置需要在这两个文件中查看。

线上mysql主从架构恢复异常案例分析

h、启动slave
mysql> start slave;

j、查看slave状态:
mysql> show slave status\G;
线上mysql主从架构恢复异常案例分析
可以看到从数据库slave的Slave_IO_Running: Yes、Slave_SQL_Running: Yes均是yes
并且有了新的bin-log文件和position位置了。后面就可以正常工作,进行主从同步了。

看完以上关于线上mysql主从架构恢复异常案例分析,很多读者朋友肯定多少有一定的了解,如需获取更多的行业知识信息 ,可以持续关注我们的行业资讯栏目的。

相关内容

热门资讯

【今日要闻】“毛豆大厅拼三张到... 【今日要闻】“毛豆大厅拼三张到底有挂吗?”(必胜开挂神器)您好,毛豆大厅拼三张这个游戏其实有挂的,确...
单膝跪地勇救脑梗登山客 黄河科... “要不是这位同学,后果不堪设想!”12月24日上午,在黄河科技学院职业技术学院会议室内,被救者王叔的...
俄年度热词聚焦“胜利”“人工智... 新华社莫斯科12月28日电2025年即将结束,俄罗斯多个机构和团体分别推出本国年度热词榜单,上榜热词...
关于微信占存储空间的几个误解 (来源:JSTV荔枝视频) 转自:JSTV荔枝视频 #教你1招快速深度清理手机缓存#【#关于微信占存...
今日重大通报“天天爱麻将究竟有... 今日重大通报“天天爱麻将究竟有挂吗?”(必胜开挂神器)您好,天天爱麻将这个游戏其实有挂的,确实是有挂...
【第一资讯】“阿拉斗牌辅助器?... 网上科普关于“阿拉斗牌有没有挂”话题很是火热,小编也是针对阿拉斗牌作*弊开挂的方法以及开挂对应的知识...
玩家攻略科普“牌乐门到底是不是... 家人们!今天小编来为大家解答牌乐门透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买很多...
【第一资讯】“决胜奕福是不是有... 您好:决胜奕福这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款游戏...
今日重大消息“新版九哥牛牛究竟... 网上科普关于“新版九哥牛牛有没有挂”话题很是火热,小编也是针对新版九哥牛牛作*弊开挂的方法以及开挂对...
我来教教您“可乐麻将开挂神器?... 网上科普关于“可乐麻将有没有挂”话题很是火热,小编也是针对可乐麻将作*弊开挂的方法以及开挂对应的知识...