mysql Ver 14.14 Distrib 5.7.20 主从复制记录

156 阅读2分钟

由于数据突然扑街,导致主从复制失败,害小弟惊出一身冷汗。被用户各种谩骂,但并没有什么卵用。冷静下来开始着手恢复。

  首先线上,停止读写分离,修改nacos的配置,重启主要的微服务,保证核心系统能够正常运转。

主数据大概100G 用常规备份时间处理太长,而且会锁库锁表,所以用了神器:Percona XtraBackup 。下载地址:www.percona.com/downloads/P…

下载wget:

image.png

安装: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;

出现如图所示:

image.png

大功告成!! 希望对您有所帮助!