阿里云文档还是写的很好的, 但是还原数据库需要用的很多的第三放程序,在安装过程会遇到各种奇怪的问题,本文是用Docker 容器还原数据库,隔离宿主机,不会遗留任何残留且跨平台,给强迫症患者超大福利
操作简介
操作一共四步,大约10几分钟就可以还原成功。 注意设置自己Docker 镜像加速 镜像从官方下载很有点慢的 在操作之前需自行安装Docker环境
第一步: 选择合适的版本镜像
第二步: 解包
第三步: 解压解包出来的文件
第四步: 还原到数据库 (数据库密码同线上密码)
所有的命令我都执行过了的, 确保可以执行
镜像选择
- 5.6> docker pull perconalab/percona-xtrabackup:2.4
- 5.7> docker pull perconalab/percona-xtrabackup:2.7
- 8.0> docker pull perconalab/percona-xtrabackup:8.0
文件解包
- tar 压缩包
docker run --rm -v [宿主机文件路径]:/opt/input_qp.xb -v [宿主机输出目录]:/out perconalab/percona-xtrabackup:[版本] sh -c 'tar -izxvf /opt/input_qp.xb -C /out'
- xbstream 压缩包 (.xb.gz 后缀)
docker run --rm -v [宿主机文件路径]:/opt/input_qp.xb -v [宿主机输出目录]:/out perconalab/percona-xtrabackup:[版本] sh -c 'gzip -d -c /opt/input_qp.xb | xbstream -x -v -C /out'
- xbstream 文件包(_qp.xb 后缀)
docker run --rm -v [宿主机文件路径]:/opt/input_qp.xb -v [宿主机输出目录]:/out perconalab/percona-xtrabackup:[版本] sh -c 'cat /opt/input_qp.xb | xbstream -x -v -C /out'
- xbstream qpress压缩包(_xb.qp后缀)
docker run --rm -v [宿主机文件路径]:/opt/input_qp.xb -v [宿主机输出目录]:/out perconalab/percona-xtrabackup:[版本] sh -c 'qpress -do /opt/input_qp.xb | xbstream -x -v -C /out'
文件解压
- 5.6/5.7
docker run --rm -v [宿主机输出目录]:/out perconalab/percona-xtrabackup:[版本] sh -c 'innobackupex --decompress --remove-original /out'
- 8.0
docker run --rm -v [宿主机输出目录]:/out perconalab/percona-xtrabackup:[版本] sh -c 'xtrabackup --decompress --remove-original --target-dir=/out'
恢复到数据库
- 恢复的数据库密码同线上
- 如果忘记可以通过修改配置文件找回
- my.cnf 文件 通用的文件不会输出到对应的目录的
[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set=utf8
[mysqld]
server-id = 1
port = 3306
default_storage_engine=InnoDB
basedir = /
datadir = /mysql
tmpdir = /tmp
socket = /tmp/mysql.sock
- 5.6
docker run --rm -v [my.cnf路径]:/opt/my.cnf -v [宿主机输出目录]:/out perconalab/percona-xtrabackup:[版本] sh -c 'innobackupex --defaults-file=/opt/my.cnf --apply-log /out'
docker run -d --name "mysql" -p 3306:3306 -e MYSQL_ROOT_PASSWORD=[随便一个密码, 实际密码是你备份数据的原密码] -v [宿主机输出目录]:/var/lib/mysql cytopia/mysql-5.6
- 5.7
docker run --rm -v [my.cnf路径]:/opt/my.cnf -v [宿主机输出目录]:/out perconalab/percona-xtrabackup:[版本] sh -c 'innobackupex --defaults-file=/opt/my.cnf --apply-log /out'
docker run -d --name "mysql" -p 3306:3306 -e MYSQL_ROOT_PASSWORD=[随便一个密码, 实际密码是你备份数据的原密码] -v [宿主机输出目录]:/var/lib/mysql cytopia/mysql-5.7
- 8.0
# 暂无测试文件提供