1

我目前正在使用 mysqldump 来备份快速增长的数据库。尽管我在深夜运行它,但在交通繁忙的时刻(有时会在晚上发生)运行时偶尔会出现问题。例如,昨晚我的一个站点在数据库备份之后锁定了一个完全完整(且未清除)的进程列表。

有没有人建议更好的方法来解决这个问题?在备份期间将站点置于临时维护状态不是一种选择,因为目标是最大化可用性(某些 sql 转储需要一段时间)。想到的一个想法是同时运行主副本和从属副本并关闭+备份从属副本,在此过程中单独留下主副本。希望有一个更简单的解决方案 - 我宁愿不运行从属副本仅用于备份目的,除非绝对必要。有什么建议么?

谢谢。

4

2 回答 2

2

两个想法:

  1. 运行奴隶。如果不出意外,它可以为您的生产流量提供一个热备件,以防出现故障。您还可以从中运行报告和工具,从而从生产服务器中释放周期。
  2. 进入 innodb 并使用 mysqldump --single-transaction (参见手册页)

祝你好运!

于 2011-03-31T21:51:24.257 回答
0

我使用Percona Xtrabackup,它类似于InnoDB Hot Backup,但功能更多,并且免费分发。Xtrabackup 在不锁定 innodb 表的情况下拍摄快照,并将记录当前的主日志文件信息,如果您从从属服务器获取备份,则在请求时记录从属信息。

我建议运行一个从属设备并像这样或使用 mysqldump 进行备份。从服务器为您提供热备份,如果您的主服务器由于硬件问题或各种软件或用户错误问题导致服务器崩溃,您可以快速切换到该备份并在几分钟内启动并运行。使用 xtrabackup 或 mysqldump 的备份为您提供了一个备份,您可以使用该备份来恢复数据,以防您不小心删除了表或删除了一些您不应该拥有的行,因为复制的服务器不会将您保存在那里。

于 2011-03-31T22:11:52.873 回答