Xtrabackup8.0对容器内的mysql进行备份和还原

备份:

docker run --rm --name percona-xtrabackup --volumes-from zentao-mysql --network container:zentao-mysql -v /appdata/zentao/full_db_backup:/backup --user root percona/percona-xtrabackup:8.0.27 xtrabackup --backup --datadir=/var/lib/mysql --target-dir=/backup --host=127.0.0.1 --port=3306 --user=root --password='7da6b87c0ff9'

--network container:zentao-mysql: 让备份容器共享 MySQL 容器的网络命名空间,这样 127.0.0.1 就指向了 MySQL 容器。

--host=127.0.0.1: 强制 XtraBackup 使用 TCP 而非 Socket 连接。

--user & --password: 必须提供数据库账号密码。

恢复:

1、先把备份文件准备好(apply log)

docker run --rm -v /appdata/zentao/full_db_backup:/backup percona/percona-xtrabackup:8.0.27 xtrabackup --prepare --target-dir=/backup

2、恢复前准备,先停mysql

docker stop zentao-mysql

3、先把数据库目录(映射到宿主机的)重命名备份一下 (mv)

4、开始恢复(覆盖数据)

docker run --rm --volumes-from zentao-mysql \
-v /appdata/zentao/full_db_backup:/backup \
percona/percona-xtrabackup:8.0.27 \
xtrabackup --copy-back --datadir=/var/lib/mysql --target-dir=/backup

5、恢复权限并启动

docker start zentao-mysql
Categories: docker与kubernetes, 数据库运维