在实时生产服务器上使用单事务选项的mysqldump

我目前正在调查一个mysql备份解决scheme,以在一些生产服务器上实现。

读了一段时间后,我得出结论,最好的解决scheme是使用主/从方法来实现mysql复制。

老实说,考虑到我真正的需求,一旦简单的数据库转储就足够了,可能有点矫枉过正。

所以,我会尝试通过rsync和mysqldump来实现一个备份解决scheme。

一旦数据库的大小不是很大(ibdata1的大小是42MB,mysqldump命令执行速度很快,生成一个6.7M的转储文件)和数据库访问都相当的减less了,使用mysqldump就足够安全了在工作期间,select单一交易

采用这种方法,configuration一个cron任务可以在白天进行2-3次转储。 如果我是正确的, -single-transaction选项的用法授予一些数据的完整性。

预先感谢所有的帮助,关心

对于InnoDB表,–single-transaction将确保每个表的转储是一致的,但它不一定与其他表保持一致,因为它一次一个地locking和转储它们,而不是locking所有的持续时间的倾倒。 当然,如果在转储过程中尝试写入表格,则会延迟写入,等待locking释放。

更好的办法是使用一个LVM或文件系统,允许你拍摄快照,然后locking整个数据库足够长的时间来拍摄快照,然后你就可以随时备份。

对于我来说,很难说出来:你的站点的访问模式,数据库,数据库stream量,或者你期望数据库得到多大。 如果你没事的话会有任何forms的locking,我会说。

我处于超出典型使用范围的任何locking都是不可接受的环境,我们的数据库大约为750GB。 我们所做的就是创build一个LVM快照,然后从快照中运行一个mysqldump。 当然,在快照期间我们会得到一些降级的性能,但是它比完全locking表要好。

mysqldumplocking了一个正在备份的数据库,所以你应该考虑使用一个像xtrabackup这样的活动备份工具。 您将需要使用Percona的MySQL构build并将所有表转换为InnoDB。 来自Oracle的最新InnoDB插件也支持实时备份,不能记住他们的实时备份工具的名称。

我认为MySQL复制是一个不错的select。 Mysql在提交事务后生成新的日志。 所以,只要您正确使用交易,您将拥有一致的备份。

一开始就有一个完整的备份,然后你可以通过复制系统获得生成的二进制日志。 应用二进制日志文件应该以一致的方式更新数据库。

这总是可以使用的。 但是,使用系统快照的选项可能不可行,因为它与您正在使用的文件系统有关。