我启动了一个 mysql docker conainer,我计划定期对数据库进行物理备份,只需复制
/var/lib/mysql
卷即可。我已将卷绑定到主机的文件夹,如下所示:
version: '2.1'
services:
db:
image: mysql:5.6
restart: always
volumes:
- ./db/data:/var/lib/mysql
- ./db/config:/etc/mysql/mysql.conf.d/
environment:
- MYSQL_ROOT_PASSWORD=${ROOT_PASSWORD}
- MYSQL_DATABASE=db
- MYSQL_USER=user
- MYSQL_PASSWORD=${USER_PASSWORD}
ports:
- "3308:3306"
当然,在开始复制卷之前,数据库必须处于只读模式:
FLUSH TABLES WITH READ LOCK;
复制完成后必须关闭只读模式:
UNLOCK TABLES;
只要数据库服务器在Linux下运行,这种方法有什么问题吗?我的意思是,如果将来尝试根据我的方法从 Linux 系统上的备份恢复数据库,它会起作用吗?
仅在 MySQL Server 运行时复制物理卷可能会导致备份不一致且无法恢复。
使用适用于 MySQL 的正确备份工具之一。