由于数据突然扑街,导致主从复制失败,害小弟惊出一身冷汗。被用户各种谩骂,但并没有什么卵用。冷静下来开始着手恢复。
首先线上,停止读写分离,修改nacos的配置,重启主要的微服务,保证核心系统能够正常运转。
主数据大概100G 用常规备份时间处理太长,而且会锁库锁表,所以用了神器:Percona XtraBackup 。下载地址:www.percona.com/downloads/P…
下载wget:
安装:rpm -ivh percona-xtrabackup-24-2.4.22-1.el7.x86_64.rpm (替换成下载的.rpm)
过程中可能会报错:在安装XtraBackup时出现如下报错,应该是缺少libev.so.4
解决办法:
wget ftp://rpmfind.net/linux/atrpms/el6-x86_64/atrpms/stable/libev-4.04-2.el6.x86_64.rpm**
rpm -ivh libev-4.04-2.el6.x86_64.rpm
安装qpress 压缩
备份主数据库: innobackupex --defaults-file=/etc/my.cnf --host=localhost --user=root --password=’数据库密码’ /mnt/mysql_back --no-timestamp --compress --compress-threads=5
(这里是全部数据备份)
说明:/mnt/mysql_back 是备份所放置的目录
接下来打包备份数据 发送到目标服务器
tar -zcvf mysql_back.tar.gz ./mysql_back/
scp 到目标服务器
切换到副服务器
关服:service mysqld stop
解压 xtrabackup --decompress --target-dir=/data/dbbak/innobackupex
target-dir:备份所在文件夹
删除原有数据库的数据例如: /opt/mysql/data 可以从/etc/my.conf查看数据位置
然后执行下面两条命令:
innobackupex --defaults-file=/etc/my.cnf --user=root --apply-log /data/dbbak/innobackupex/
innobackupex --defaults-file=/etc/my.cnf --user=root --copy-back /data/dbbak/innobackupex/
说明:/data/dbbak/innobackupex/ 备份所在目录
chown -R mysql:mysql 数据库数据路径
等待执行完毕之后,启动数据库:service mysql start
更改主从复制配置:
1. 查看备份偏移量,在备份目录:
more xtrabackup_binlog_info 会返回日志名字和偏移量类似于下面这种
mysql-bin.xxxx 411xxxx
有了日志文件名字和偏移量之后,再从库MySQL里面执行:
CHANGE MASTER TO MASTER_HOST = '172.xxx.xxx.45', MASTER_USER = 'repl', MASTER_PASSWORD = 'replxxx1', MASTER_PORT = 3306,MASTER_LOG_FILE='MySql-bin.000327',MASTER_LOG_POS=871980453;
成功之后可以执行:
start slave;
show slave status;
show slave status\G;
出现如图所示:
大功告成!! 希望对您有所帮助!