在我们的一个数据库上使用mysqldump进行预定的备份将导致Too many connections。数据库由大小约为500 of的InnoDB表和MyISAM表组成。Too many connections出现约2-3分钟
我们理解mysqldump锁定了表,并导致所有其他查询和连接堆积起来并阻塞mysql服务器。
我们需要频繁的备份,我们负担不起服务器停机时间,或将网站的维护模式,同时做它。我们的网站是全球性的,流量一直很高,所以很难找到一个时刻的备份。
如何避免备份期间的停机?
是否有一种方式来使用mysqldump,使其不会同时锁定所有表?
除了使用mysqldump备份之外,还有其他替代方法吗?
发布于 2012-06-13 12:03:30
首先,尝试按表备份表或按DB备份数据库--不要锁定所有内容。
增加max_connections,否则尝试使用连接限制:http://dev.mysql.com/doc/refman/5.5/en/user-resources.html
我不确定增加的max_connections会占用太多的内存。
如果您正在使用MyISAM,则没有其他备份方法。与InnoDB或XTraDB -没有问题。http://www.innodb.com/doc/hot_backup/manual.html
发布于 2012-06-13 11:04:16
1)安装第二台服务器,将数据库复制到服务器上,从那里进行备份
如果主服务器上有大量更改,这可能不是一个好的解决方案,因为从服务器上的复制是单线程的。
2)使用http://www.percona.com/doc/percona-xtrabackup/
或一如既往,查阅概述其他备选办法的正式文件:
http://dev.mysql.com/doc/refman/5.1/en/backup-methods.html
发布于 2012-06-13 11:13:49
除了使用mysqldump备份之外,还有其他替代方法吗?
你打算如何使用它们?如果您想要快速而廉价的增量备份,我只需要使用rsync (或者rsnapshot,它使用rsync保存多个并发副本,而不占用太多额外的磁盘空间)来备份/var/lib/mysql (或者不管数据文件可能在哪里)。
我假设您不会真正使用它们来复制/解析或以其他方式解释,但万一您的服务器(S)失败,您需要(本质上)进行全磁盘恢复。这也使得这样的恢复非常快(但是很严格,您可以恢复所有东西,或者什么都不恢复),因为它是一个标准的复制操作。充其量,您可以随心所欲地使用它,使用另一种备份机制(比如在非高峰时间使用mysqldump ),以确保永远不会没有更新的可解析转储。
https://serverfault.com/questions/398237
复制相似问题