我知道您可以使用mysqldump。我目前正在使用以下方式转储:
${MYSQLDUMP} --single-transaction -u ${MUSER} -h ${MHOST} -p${MPASS} $db | ${GZIP} -9 > $FILE
据我所知,这会锁定数据库并阻止任何类型的数据库使用,甚至可以锁定网站。如果数据库大小为 100mbs 甚至 1gbs,是否有更好的方法来对 MySQL 数据库进行每日/每小时备份?
答案1
答案2
这只会锁定 MyISAM 表。--single-transaction
仅通过将其运行到事务中来防止表锁定。
100MB 到 1GB 实际上是很小的规模,因此,如果您可以忍受出现不一致的可能性,则可以添加--skip-lock-tables
并避免锁定 MyISAM 表。这样您的网站就不会受到影响。
如果某个应用程序更新了两个表,就会发生不一致。如果这种情况发生在备份两个表的时间间隔内,则备份可能包含对第二个表的更新,而不是第一个表的更新。
这种情况很少见,尤其是当您的数据库较小时。如果您无法忍受这种情况,您可能需要使用更复杂的解决方案,例如 lvm 快照或使用复制。