使用 xtrabackup 恢复RDS备份数据
2016-07-04 by dongnan
目标
- 使用
docker
容器,恢复阿里云rds
备份数据,优势是恢复备份数据后,可直接删除容器不影响宿主机系统。 - 阿里云
rds
使用xtrabackup
备份Mysql
数据,学习xtrabackup
恢复数据。
环境
宿主机: ubuntu 14.04 amd64
运行时: docker 1.9.x
容器镜像: CentOS 7 amd64
操作步骤
宿主机
# 执行命令
ls /home/docker
hins1335211_xtra_20160523230054.tar.gz percona-xtrabackup-24-2.4.3-1.el6.x86_64.rpm rds_backup_extract.sh
文件说明
rds_backup_extract.sh
,rds
备份专用的解压脚本文件。hins1335211_xtra_20160523230054.tar.gz
,使用xtrabackup
备份rds
的备份文件。percona-xtrabackup-24-2.4.3-1.el6.x86_64.rpm
,xtrabackup
安装文件。
容器
创建容器
# 这个容器挂载了 /home/docker 目录
docker run --name test -tid -v /home/docker/:/docker/ centos:7
进入容器控制台
# 执行命令
docker exec -ti test /bin/bash
安装 xtrabackup
# 执行命令
cd /docker
yum localinstall percona-xtrabackup-24-2.4.3-1.el6.x86_64.rpm
解压备份文件
# mysql数据目录
mkdir -p /data/mysql
# 执行恢复脚本
sh rds_backup_extract.sh -f hins1335211_xtra_20160523230054.tar.gz -C /data/mysql/
Extracting to /data/mysql/...
./backup-my.cnf
ibdata1
mysql/slave_worker_info.ibd
#...省略
./xtrabackup_slave_info
./xtrabackup_slave_filename_info
./xtrabackup_binlog_info
./log000000000002.tokulog27
./tokudb.rollback
./tokudb.directory
./tokudb.environment
./xtrabackup_info
xtrabackup_logfile
xtrabackup_checkpoints
Done.
恢复数据文件
阿里云RDS MySQL 使用开源软件 percona-Xtrabackup
对 MySQL 数据库进行备份。需要下载并安装该软件然后使用该软件进行恢复操作。
# 执行命令
innobackupex --defaults-file=/data/mysql/backup-my.cnf --apply-log /data/mysql/
160524 07:19:31 innobackupex: Starting the apply-log operation
#...省略
innobackupex version 2.4.3 based on MySQL server 5.7.11 Linux (x86_64) (revision id: 6a46905)
xtrabackup: cd to /data/mysql
xtrabackup: This target seems to be not prepared yet.
InnoDB: Number of pools: 1
xtrabackup: xtrabackup_logfile detected: size=8388608, start_lsn=(850279632)
#...省略.
InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0
InnoDB: New log files created, LSN=850285186
#...省略
InnoDB: Starting crash recovery.
InnoDB: Removed temporary tablespace data file: "ibtmp1"
InnoDB: Creating shared tablespace for temporary tables
#...省略
InnoDB: Shutdown completed; log sequence number 850295933
160524 07:19:59 completed OK!
修改配置文件
由于存在的版本问题,请将解压文件 backup-my.cnf
中的不需要的参数注释掉,例如:
# This MySQL options file was generated by innobackupex.
# The MySQL server
[mysqld]
#innodb_checksum_algorithm=innodb
innodb_data_file_path=ibdata1:200M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=1048576000
#innodb_page_size=16384
#innodb_undo_directory=.
#innodb_undo_tablespaces=0
#rds_encrypt_data=OFF
修改文件属主
# 执行命令
chown -R mysql:mysql /data/mysql/
# 如果没有mysql用户则需要添加
useradd mysql
启动服务器
# 执行命令
mysqld_safe --defaults-file=/data/mysql/backup-my.cnf --datadir=/data/mysql --user=mysql &
[1] 229
160526 03:16:27 mysqld_safe Logging to '/data/mysql/c88f6d20f621.err'.
160526 03:16:27 mysqld_safe Starting mysqld daemon with databases from /data/mysql
验证
服务器成功启动,恢复完成。
mysqladmin ping
mysqld is alive
小结
完成以上步骤后使用 mysqldump
导出需要的数据即可,mysqldump
参考这里。