通过 ZFS 快照备份 MySQL/MariaDB 数据库,不会出现错误

通过 ZFS 快照备份 MySQL/MariaDB 数据库,不会出现错误

因此,我使用 zrepl 拍摄生产机器的快照并将其复制到备份服务器。这也包括 MariaDB,它有自己的数据集,recordsize=16k

我今天一直在测试快照,看看是否可以在备份服务器上安装一个快照以将一个表转储到文件中,但每当我启动 MariaDB 时,我总是收到以下错误:

[Note] InnoDB: Starting crash recovery from checkpoint LSN=xxxxxx
[Note] InnoDB: To recover: LSN xxxxxx
InnoDB: At LSN: 15347562372082: unable to open file ./<dbname>/#sql-ib93859.ibd for tablespace 93856

由于备份机器只有速度较慢的 HDD,因此需要很长时间才能恢复并真正启动 MariaDB。目前 DB 完整性还不能 100% 确定。

FLUSH TABLES WITH READ LOCK我在快照之前和之后运行UNLOCK TABLES。但是我的 mysql 日志目录位于不同的 ZFS 数据集 (recordsize=128k) 中,这是 OpenZFS 和许多其他人所推荐的。

我也用innodb_flush_log_at_trx_commit=0

我的问题可能ib_logfile0是在不同数据集中?这意味着zrepl可能每个数据集都运行FLUSH TABLES。那么在两个快照之间,它可能会在一瞬间解锁表并将一些内容写入日志文件?

如果是这样。会innodb_flush_log_at_trx_commit=2修复它吗?还是唯一的选择是移ib_logfile0回与 MariaDB datadir 相同的数据集?

如果是后者,那么日志记录大小为 16k 相对于 128k 是否存在性能缺陷?

相关内容