寻找备份Mysql的最佳方法

什么是备份Mysql数据库最合适的方法? 我希望至less每隔1小时备份一次。 我虽然mysqldump是唯一的select,但事实certificate,还有其他的select,如二进制日志。

我想知道“大家伙怎么做”

我的表是innodb想要尽可能经常备份(至less每小时)

即使间隔1小时也不是一个完美的解决scheme,因为我仍然会使用上次备份后的更改,长达1小时。

我相信mysqldump最适用于你不会阻止任何stream量的服务器上。 在myisam表上,这会创build一个读锁。 我知道你说你使用innodb,所以有几个解决scheme。

我会开始检查这个工具了。 http://www.percona.com/software/percona-xtrabackup/ Percona家伙被认为是mysql的一些专家,这是他们对innodb表进行“热备份”的​​工具之一。 这意味着即使在数据库正在使用时也可以运行它。 我个人还没有任何经验。

我目前正在使用的站点有数百个并发用户,为了实现可靠的备份,我们首先必须设置复制到从站。 然后我们在从服务器上运行mysqldump,这不会干扰主服务器的性能。 有关复制的更多信息,请参阅http://dev.mysql.com/doc/refman/5.5/en/replication.html

我相信这个意思是,你想使用像mysqldump这样非常可靠的方法每天运行一次备份。 在你有一个主从复制和生产二进制日志。 二进制日志可以用来做轻微的追赶。 在我的经验中,热备份工具往往会阻止一个或另一个操作,导致一些糟糕的用户有一个不好的经验。

一定程度上取决于你想要的恢复选项。 有些方法可以工作(大部分),但大大限制了恢复function。 例如,文件系统级备份只允许您还原到同一台计算机或克隆。 使用二进制日志进行备份是充满风险的,因为二进制日志不能说明整个故事。

在绝大多数情况下,在复制品上使用mysqldump是最好的select。 它不仅可以在不干扰主站的情况下进行备份,而且如果您configuration主站/主站而不是主站/从站,还可以添加冗余。 如果您因为某种原因需要离线工作,请先将您的应用程序指向第二个系统。

结合使用mysqldump备份,您可以将数据复制到MySQL从站,数据存储在具有快照function(如ZFS)的文件系统上。 在这种情况下,您停止从站,拍摄快照并重新启动从站。

基本的数据库备份scheme将包括以下组件:

  1. 数据库数据和事务日志在不同的物理磁盘上
  2. 频繁的可恢复备份

这背后的想法是,如果数据库磁盘发生磁盘(或磁盘arrays)故障,您将能够使用以前进行的备份将数据恢复到最后一个事务,并重放最新的事务日志不受故障的影响。

关于如何做到这一点, 以前曾经有过类似的问题,并且引用了描述一些选项的MySQL文档。

我当然强烈build议不要将复制作为备份“策略” – 它不是作为备份而devise的。 有些人使用副本来减less主数据库服务器上的负载和locking并发性,通过使用从数据库作为备份源。 然而,你仍然存在着对从设备数据集进行一致性检查的问题 – MySQL不会为你做这件事,而且通过错误configuration很容易搞乱MySQL复制 。 有一些工具可以像mackkit中的mk-table-checksum那样进行一致性检查,但是再次获得的一点儿也不会 – 一致性检查会将负载和locking放在主表的表中。