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

  

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

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

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

 <代码>主要思路:
  1、在不锁表的情况下备份主数据库的所有数据文件
  2、将奴隶数据库进程停掉。并将备份文件从主传输到奴隶端,解压
  3、重新执行修改主设置bin-log文件名称,和位置
  
  # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #  

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

在主数据库执行下面命令:(需要根据实际情况修改)
innobackupex——defaults-file——用户==/etc/my . cnf中所做的根——密码=51 idc,没有锁,使用内存=4 g -压缩- compress-threads=8——流=xbstream平行=4/备份比;/备份/美元(日期+ Y % - % m - H % d_ % % - % S) .xbstream

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

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

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

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

xbstream - x & lt;/备份/2019 - 02年- 27 - _11 - 12 - 21所示。xbstream - c/备份/2019 - 02年- 27 - _11 - 12 - 21
innobackupex减压——平行=4,/备份/2019 - 02年- 27 - _11 - 12 - 21 d
,删除所有以.qp结尾的文件
发现,/备份/2019 - 02年- 27 - _11 - 12 - 21,- name“* .qp"删除,
e,创建完备份之后数据被没有马上可以被还原,需要回滚未提交事务前滚提交事务,让数据库文件保持一致性。
innobackupex使用运用原木来做预备备份
——用户内存:指定预备阶段可使用的内存,内存多则速度快,默认为10 mb

innobackupex,——apply-log,——使用内存=4 g,/备份/2016 - 03 - 16 - _15 - 25 - 55 f

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

innobackupex,——, defaults-file=/etc/my . cnf中所做——复制回去使用内存=4 g,,/备份/2019 - 02年- 27 - _11 - 12 - 21
此过程需要的时间较长,我这边还原大概是2 h左右。还原完成后,在/var/lib/mysql目录下有两个文件,可以看到药膏目前保存的最近的bin-log文件和位置
线上mysql主从架构恢复异常案例分析

若出现找不到qpress命令的报错可以安装回购。percona源后使用,百胜是安装qpress进行安装
回购。percona源安装命令:
yum安装https://repo.percona.com/yum/percona-release-latest.noarch.rpm

g,修改/var/lib/mysql的属主属组
乔恩- r mysql。mysql/var/lib/mysql

h,启动数据库;
/etc/init。d/mysql开始

我,重做主从配置
mysql -uroot - p,,,#进入到数据库内
改变主,master_host=& # 39;主xxx.xxx.xxx.xx& # 39;, master_port=3306, master_user=& # 39;根# 39;,master_password=& # 39; 51 idc # 39;, master_lo_file=& # 39; master-bin.xxx& # 39;, master_log_pos=xxx;

其中:主IP, master_password根据实际情况确定。

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