dongnan
总版主
总版主
  • 粉丝52
  • 发帖数2186
  • 铜币13612枚
  • 威望5957点
  • 银元150个
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
阅读:1709回复:0

docker 容器使用 xtrabackup 软件,恢复rds 备份数据

楼主#
更多 发布于:2016-07-04 11:49
内容
1. 目标
2. 环境介绍
3. 操作步骤
4. 参考帮助

目标

1. 借用 docker 容器,恢复阿里云 rds 备份数据,优势是恢复备份数据后,可直接删除容器,不影响宿主机系统;
2. 阿里云rds 使用 xtrabackup  备份Mysql 数据,学习 xtrabackup  恢复数据;

环境
宿主机:ubuntu 14.04 amd64
容器软件:docker 1.9.x
容器镜像:CentOS 7 amd64

操作步骤
1. 宿主机
ls /home/docker
hins1335211_xtra_20160523230054.tar.gz  percona-xtrabackup-24-2.4.3-1.el6.x86_64.rpm  rds_backup_extract.sh

1.1 文件说明
rds_backup_extract.sh #rds备份专用的解压脚本文件;
hins1335211_xtra_20160523230054.tar.gz #使用xtrabackup备份rds 的备份文件;
percona-xtrabackup-24-2.4.3-1.el6.x86_64.rpm #xtrabackup备份安装文件;

1.2 启动容器
docker run -ti -v /home/docker/:/docker/ centos7

2. 容器
使用以上命令启动容器后,直接进入容器控制台

2.1 安装xtrabackup
yum localinstall percona-xtrabackup-24-2.4.3-1.el6.x86_64.rpm

2.2 解压备份文件
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.

2.3 恢复数据文件
阿里云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!

2.4 配置文件修改
由于存在的版本问题,请将解压文件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
                           
2.5 修改文件属主
chown -R mysql:mysql /data/mysql/

2.6 启动mysqld进程
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

2.7 验证
mysqladmin ping
mysqld is alive

2.8 后续
完成以上步骤后,使用mysqldump 导出需要的数据即可,mysqldump 参考这里
  

帮助文档
Percona XtraBackup
RDS备份文件恢复到自建数据库

#
游客

返回顶部