在国内不论是使用阿里云、腾讯云还是华为云的云平台版本的 MySQL 数据库,在遇到数据备份恢复的场景,都会遇到需要使用 Percona XtraBackup 工具进行备份还原的需求。
看着网上一堆既啰嗦又落后的备份恢复方案,不免厌烦,借着再次帮朋友做数据迁移的机会,整理分享之前的实战笔记,希望能够帮助到有需求的同学。
写在前面
国内云平台从业者不多,加上成熟的方案相对固定,所以我们不难看到“御三家”的产品备份恢复策略甚至文档都非常“相似”。
本文将基于容器工具的方式进行数据恢复处理,避免折腾不必要的软件依赖。
编写数据库恢复实例配置文件
容器时代,如果你不是容器环境的运维工作者,不必过度纠结系统配置,我们直接使用 Percona 官方提供的镜像即可,下面以 MySQL 5.7 为例,你可以根据自己的需求自行修改版本号。
# https://hub.docker.com/r/percona/percona-xtradb-cluster/
version: "3"
services:
percona:
image: percona/percona-xtradb-cluster:5.7
container_name: percona
restart: always
# 根据你的需要,声明暴露端口
# ports:
# - 3306:3306
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=1
volumes:
- ./node.cnf:/etc/mysql/node.cnf
- ./data:/var/lib/mysql:rw
- ./restore:/var/lib/mysql-files:rw
上面的配置中,我声明了两个目录用于保存数据,首先是用于放置云数据库备份的 restore 目录,其次是用于暂存还原后的数据库文件的 data 目录。将上面的内容保存为 docker-compose.yml,稍后使用。
接着,编写一个可以用于还原的数据库配置文件:
[mysqld]
skip-grant-tables
ignor