MySQL Xtrabackup 备份期间会阻塞 DDL 吗?
MySQL 通常使用开源工具 Xtrabackup 进行物理备份,备份过程中不会影响正常业务的写入,但是是否会阻塞 DDL 操作呢?或者 DDL 操作是否会导致 Xtrabackup 备份失败?下面通过实例测试来看一下。
- MySQL 版本:Percona Server for MySQL 5.7.19
- Xtrabackup 版本:2.4.3
1. 先执行 DDL,然后执行备份
步骤:
- 创建一张表,该表磁盘占用约 5G,对该表进行 DDL,增加一个字段。
- 在 DDL 执行过程中,启动 xtrabackup 进行备份,观察备份的输出日志,其中拷贝 ibd 文件正常,最后执行 lock tables for backup 被阻塞,显示 Waiting for backup lock。备份过程会一直等待,直到 DDL 执行完成之后,xtrabackup 会报错退出,报错信息如下:
[FATAL] InnoDB: An optimized(without redo logging)
DDLoperation has been performed. All modified pages may
not have been flushed to the disk yet.
PXB will not be able take a consistent backup. Retry
the backup operation
...