mysql xtrabackup docker
时间: 2024-12-30 14:27:54 浏览: 12
### 使用 Docker 中 MySQL XtraBackup 进行备份
为了在 Docker 环境中使用 Percona XtraBackup 对 MySQL 数据库进行备份,可以按照如下方法操作:
#### 准备工作
确保 `mysql` 和 `percona-xtrabackup` 都已经安装并配置好。由于这两个服务通常会分别位于不同的容器内,在同一台主机上的部署方式有助于简化网络连接设置。
#### 创建备份卷
创建一个新的 Docker 卷用于存储备份文件,这一步骤并非强制性的但是推荐做法以便于管理和迁移备份数据[^2]。
```bash
docker volume create mysql_backup_volume
```
#### 执行全量备份
启动一个临时的 percona/xtrabackup 容器来执行完整的备份过程,并指定目标路径为之前创建好的卷位置。
```bash
docker run --rm \
--name=mysql-backup-job \
-v mysql_backup_volume:/backup \
-e MYSQL_ROOT_PASSWORD=your_password \
--network some-network \
percona/percona-xtrabackup:latest \
bash -c "xtrabackup --backup --target-dir=/backup --user=root --password=$MYSQL_ROOT_PASSWORD"
```
此命令将会把整个数据库实例的数据复制到 `/backup` 文件夹下,该文件夹映射到了宿主机的一个持久化卷上[^1]。
#### 增量备份(可选)
如果希望减少每次完全备份所需的时间和空间开销,则可以选择增量备份策略。这种方式只保存自上次成功完成之后发生变化的部分。
```bash
docker run --rm \
--name=mysql-incremental-e MYSQL_ROOT_PASSWORD=your_password \
--network some-network \
percona/percona-xtrabackup:latest \
bash -c "xtrabackup --incremental-basedir=/backup/full/path --backup --target-dir=/backup/incremental --user=root --password=$MYSQL_ROOT_PASSWORD"
```
这里假设已经有了名为 `full` 的完整备份作为基础版本;新的更改会被追加至 `incremental` 目录之中。
---
### 恢复操作指南
当需要从已有的备份还原数据时,请遵循以下步骤:
停止当前正在运行的服务以防止冲突发生:
```bash
docker stop your_mysql_container_name
```
准备一个干净的工作区用来解压备份档案:
```bash
mkdir -p /path/to/restore_point && cd $_
tar zxvf /data/backup/mysql7006-20181101.tar.gz .
```
接下来通过另一个一次性容器来进行实际的数据恢复流程:
```bash
docker run --rm \
--name=mysql-recover-job \
-v $(pwd):/source \
-v your_mysql_data_volume:/var/lib/mysql \
--entrypoint="" \
percona/percona-xtrabackup:latest \
bash -c "innobackupex --apply-log /source && innobackupex --copy-back /source"
```
最后重启 MySQL 实例使其生效:
```bash
docker start your_mysql_container_name
```
注意替换上述脚本中的变量名以及环境参数以匹配具体的项目需求[^3]。
阅读全文