MySQL数据库备份:性能问题

Ale*_*ein 14 mysql backup performance mysqldump database-backups

伙计们,

我正在尝试设置一个包含InnoDB和MyISAM表的相当大的生产数据库(半场演出)的定期备份.到目前为止我一直在使用mysqldump,但我发现它需要越来越长的时间,并且当mysqldump运行时服务器完全没有响应.

我想问你的意见:我该怎么做

  1. 使mysqldump备份无阻塞 - 为进程或类似的东西分配低优先级,OR

  2. 找到另一种更好/更快/非阻塞的备份机制.

我知道MySQL企业备份产品(http://www.mysql.com/products/enterprise/backup.html)的存在 - 它很昂贵,这不是这个项目的选项.

我已经读过将第二台服务器设置为"复制从站",但这对我来说也不是一个选择(这需要硬件,这需要花费$$).

谢谢!

更新:有关我的环境的更多信息:Ubuntu,最新的LAMPP,Amazon EC2.

Ric*_*ams 8

如果无法复制到从属服务器,则可以利用文件系统,具体取决于您使用的操作系统,

我在一个相当大的MySQL数据库(30GB +)上使用ZFS快照作为备份方法,它很快完成(从不超过几分钟)并且不会阻塞.然后,您可以将快照安装在其他位置,然后将其备份到磁带等.


tim*_*dev 5

编辑:(之前的回答是建议一个奴隶数据库来备份,然后我注意到亚历克斯在他的问题中排除了这一点.)

假设硬件可以跟上,那么你的复制从设备无法在同一硬件上运行是没有理由的.抓住源代码tarball,./configure --prefix=/dbslave; make; make install;你将有第二个完全位于/ dbslave下的mysql服务器.

EDIT2:复制还有许多其他好处.例如,在复制运行的情况下,您可能能够恢复binlog并在最后一次备份时重放它,以便在发生某些类型的灾难后恢复额外的数据.

编辑3:你提到你在EC2上运行.保持成本降低的另一个有点人为的想法是尝试使用EBS卷设置另一个实例.然后使用AWS api将此实例旋转足够长的时间,以便赶上二进制日志中的写入,转储/压缩/发送快照,然后将其旋转下来.设置不是免费的,劳动密集型的,但比运行24x7的实例便宜得多.