我知道你可以使用mysqldump。 我目前倾倒的方式如下:
${MYSQLDUMP} --single-transaction -u ${MUSER} -h ${MHOST} -p${MPASS} $db | ${GZIP} -9 > $FILE
从我的理解,这locking数据库,并防止任何types的数据库的使用,甚至可以locking网站。 如果数据库的大小在100mbs甚至1gbs,那么有没有更好的方法可以做每日/每小时的MySQL数据库备份?
你可能想要:
为了使备份成为非阻塞,您需要将InnoDB引擎用于所有表。
对于替代scheme – 不捆绑MySQL的解决scheme – 请看看:
这只会lockingMyISAM表。 --single-transaction只能通过在事务中运行它来防止表locking。
100MB到1GB实际上是一个很小的尺寸,所以,如果你可以忍受不一致的机会,你可以添加--skip-lock-tables ,也可以避免lockingMyISAM表。 这样你的网站不会受到影响。
在有更新两个表的应用程序的情况下会发生不一致。 如果在备份这两个表之间发生这种情况,则备份可能包含对第二个表的更新,而不是第一个表。
这是一个罕见的情况,特别是如果你有一个小的数据库。 如果你不能忍受这一点,你可能需要使用更复杂的解决scheme,如lvm快照或使用复制。