本文档是针对阿里云RDS的全量备份为基础的。阿里云RDS的物理全量备份是基于备库的,所以我们在恢复的时候,需要根据备库的全量数据加上主库的binlog来恢复数据。
方案前期准备工作:
本地xtrabackup安装
RDS主库binlog备份(RDS本身也有备份,但是时间间隔长,数据差异可能大一些)
RDS开启物理备份
方案总体步骤如下:
下载RDS备库物理备份数据
确定需要同步的binlog文件
恢复RDS物理备份数据
恢复主库增量的binlog数据
阿里云的备份命令:
tool_name = innobackupex
tool_command = --defaults-file=/etc/my3016.cnf --password=... --user=aliyun_root --host=127.0.0.1 --port=3016 --tmpdir=/home/mysql/backup/3016 --rocksdb_checkpoint_path=/mysqldata/backup_tmp/11293269_5067582 --rds-xb-fd-limits=400000 --slave-info --stream=tar /home/mysql/backup/3016
开始对方案进行操作
一、备份,使用阿里的备份就可以
innobackupex --defaults-file=/export/server/mysql/slave/config/my.cnf --backup --socket=/export/server/mysql/slave/mysql.sock --password=123456 --user=root --host=127.0.0.1 --port=3900 --rds-xb-fd-limits=400000 --slave-info /export/data/mysql/restore01
二、恢复到一个新数据库
2.1 准备全量备份
innobackupex --apply-log /export/data/mysql/restore01/2019-04-04_19-42-24/ |
---|
2.2 恢复到一个新的数据目录
innobackupex --defaults-file=/export/server/mysql/restore/config/my.cnf --copy-back --rsync /export/data/mysql/restore01/2019-04-04_19-42-24/ |
---|
附上my.cnf配置
[client] [mysql] [mysqld] log-bin = mysql-bin lower_case_table_names=1 |
---|
这里需要手动创建mysql_slow.log、mysql_error.log文件,并赋予mysql:mysql属主权限:
chown mysql:mysql /export/server/mysql/restore chown mysql:mysql /export/data/mysql/restore |
---|
2.3 启动数据库
nohup /export/local/mysql/bin/mysqld_safe --defaults-file=/export/server/mysql/restore/config/my.cnf & |
---|
2.4 恢复增量binlog
可以根据/export/data/mysql/restore01/2019-04-04_19-42-24/目录下的xtrabackup_slave_info的文件内容,判断上次备份的路径
我这里是:
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=20561581; |
---|
2.5 恢复增量binlog数据
mysqlbinlog --start-position=20561581 /export/data/mysql/master/mysql-bin.000003 | /export/local/mysql/bin/mysql -S /export/server/mysql/restore/mysql.sock --port=3900 -uroot -p123456 |
---|