一次生产数据库恢复操作(两组主主复制并互作主从)

生产环境新增数据库的操作流程
博客讲述生产环境因业务增加压力大增,申请新增两台私有云数据库的操作流程。包括备份数据库、发送备份文件、恢复数据、修改配置文件、启动 MySQL、配置事务集合、清空主从关系及配置主备关系等步骤,后续会贴出完整流程。

前言:
之前我们生产环境(物理机)是两台数据库做的主主复制并用keepllive做的高可用,当时业务少性能是没问题的,最近又有别的系统接入了我们项目顿时压力大增就申请新增了两台数据库(私有云),大概流程如下,可能有点乱但是有点底子的人还是能看懂的。

1、执行命令备份数据库

xtrabackup --backup --slave-info --user=root --password=‘*****’
--parallel=4 --socket=/data/mysql/var/mysql.sock --no-timestamp --stream=xbstream | xbstream -x -C /data/mysqlbak/mysql_bak

2、把/data/mysqlbak/mysql_bak发送到64.164和64.165上面

使用自己熟悉的命令即可

3、备份完毕后,在64.164上执行恢复命令

xtrabackup --prepare --apply-log --target-dir=/zdata/mysql_bak/mysql_bak

4、停止64.164.8和64.9165上的MySQL服务。将mysql的data目录重命名,将备份恢复的数据目录mysql_bak改为data。也可以先停止64.164和64.165上的MySQL服务,清空data目录

cd /zdata/
mv mysql_data mysql_data_20190521

5、同步一份恢复后的数据到64.165(在64.164上执行),使用rsync、scp等自己熟悉的工具均可。

rsync -avprP /zdata/mysql_data/ mysql@**.**.64.165:/zdata/mysql_data/

6、备份并修改修改64.164和64.165的my.cnf文件,在mysqld配置项下加入skip_slave_start配置项,不要mysql启动时自动拉起复制进程(后边需要配置好后再启动)。

7、在64.164/165上启动mysql检查mysql目录的属性,确保是mysql用户,可以使用chown -R mysql. /zdata/改一次,然后使用root用户运行启动命令。

service mysqld start

8、查看/zdata/mysql_data/xtrabackup_slave_info目录下xtrabackup_binlog_info文件内容,此文件记录了步骤1中备份完成时的事务点,下一步会使用,或者xtrabackup_slave_info内容也是一样,里边已经写好了需要配置的语句,步骤1中–slave-info参数生成。

cat /zdata/mysql_data/xtrabackup_slave_info
SET GLOBAL gtid_purged='4f271216-497c-11e9-ab06-fa163eaeb12d:1-197, ad72360b-497b-11e9-b3e6-fa163ed7da68:1-17271284:118159792, c44e4998-9b61-11e5-82bf-141877341ec6:1-2247, d393d2e3-9b61-11e5-82bf-141877342ba0:1-14563313';

9、登录64.164.8和64.165MySQL,配置已执行事务集合,不能登录错主机,一定是刚用备份恢复后启动的MySQL机器执行步骤8中得到的语句,告诉恢复的MySQL步骤8中的事务已经执行完毕,可能gtid_purged不为空,需要先reset master后才可更改。

    SQL> reset master;
    SQL> SET GLOBAL gtid_purged='4f271216-497c-11e9-ab06-fa163eaeb12d:1-197, ad72360b-497b-11e9-b3e6-fa163ed7da68:1-17271284:118159792, c44e4998-9b61-11e5-82bf-141877341ec6:1-2247, d393d2e3-9b61-11e5-82bf-141877342ba0:1-14563313';d393d2e3-9b61-11e5-82bf-141877342ba0:1-14226720';   
    SQL> show master status;  #应与上边set的值一致。
	64.164和64.164都执行,因为39.8和9是同一份备份恢复的。

10、分别清空64.164、64.165、39.8、39.9的主从关系,5.7的多源复制功能,配置物理环境互为主备、云环境互为主备、物理环境和云环境互为主备。

10.1、在云环境39.8和39.9上配置一个channel,标识云环境互为主备的复制关系。

10.2、在39.9上配置从39.8复制关系。
    SQL> stop slave;
    SQL> reset slave all;
    SQL> CHANGE MASTER TO MASTER_HOST='**.**.39.8',
             MASTER_PORT=3306,
             MASTER_USER='repl',
             MASTER_PASSWORD='*********', 
             MASTER_AUTO_POSITION = 1 FOR CHANNEL 'cloud';
    SQL> start slave;
    SQL> show slave status\G;

10.3、在39.8上配置从39.9复制关系,channel为cloud。标识为云环境复制。
    SQL> stop slave;
    SQL> reset slave all;
    SQL> CHANGE MASTER TO MASTER_HOST='**.**.39.9',
             MASTER_PORT=3306,
             MASTER_USER='repl',
             MASTER_PASSWORD='*********',
             MASTER_AUTO_POSITION = 1 FOR CHANNEL 'cloud';

10.4、在39.8上配置从64.168复制关系,channel为cloud-metal。标识为与环境和物理环境复制。
    SQL> CHANGE MASTER TO MASTER_HOST='**.**.64.168',
             MASTER_PORT=3306,
             MASTER_USER='repl',
             MASTER_PASSWORD='*********',
             MASTER_AUTO_POSITION = 1 FOR CHANNEL 'cloud-metal';
    SQL> start slave;
    SQL> show slave status\G;

10.5、在物理环境64.164和64.165上配置一个channel,标识物理环境互为主备的复制关系。

10.6、在64.165配置从64.164复制关系,channel为metal,标识为物理环境复制。
    SQL> stop slave;
    SQL> reset slave all;
    SQL> CHANGE MASTER TO MASTER_HOST='**.**.64.164',
             MASTER_PORT=3306,
             MASTER_USER='repl',
             MASTER_PASSWORD='*********',
             MASTER_AUTO_POSITION = 1 FOR CHANNEL 'metal';
             
10.7、在64.165上配置从39.235复制数据,channel为cloud-metal,标识为与环境和物理环境复制
    SQL> CHANGE MASTER TO MASTER_HOST='**.**.39.235',
             MASTER_PORT=3306,
             MASTER_USER='repl',
             MASTER_PASSWORD='*********',
             MASTER_AUTO_POSITION = 1 FOR CHANNEL 'cloud-metal';
    SQL> start slave;
    SQL> show slave status\G;
    
10.8、在64.164上配置从64.165复制数据,channel为metal。标识为物理环境复制
    SQL> stop slave;
    SQL> reset slave all;
    SQL> CHANGE MASTER TO MASTER_HOST='**.**.64.165',
             MASTER_PORT=3306,
             MASTER_USER='repl',
             MASTER_PASSWORD='*********', 
             MASTER_AUTO_POSITION = 1 FOR CHANNEL 'metal';
    SQL> start slave;
    SQL> show slave status\G;

11、捋一捋复制关系

现网:
64.164=A、64.165=B、64.168=C(现网环境Mysql-VIP地址)
云环境:
39.8=D、39.9=E、39.235=F(云环境Mysql-VIP地址)

A和B是互为主从
D和E是互为主从
C是D的从
F是B的从

注:
写的有点粗糙对新手可能不太友好,等过段时间我在贴出来一个完整的流程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维那些事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值