目前我的数据库几乎有 20 GB 大,而且还在不断增长。 我正在使用 mysqldump 进行每日备份,它变得非常慢。 如此之慢,以至于同时新连接堆积并最终导致此错误:
SQLSTATE[HY000] [1040] Too many connections
(我可以提高接受的连接数量,但这不会做任何事情,因为连接仍然处于卡住状态,等待备份完成,这将导致超时)
我一直在阅读一些提高速度的选项,这是我发现的:
- 选项 --quick(可能会有帮助)
- 选项 --single-transaction (将防止表被锁定,但可能导致数据库变得不正确)
- 主从复制(可能是我能做的最好的事情,一个问题,我只有一台服务器可用)
主从复制听起来确实是最好的选择,因为我可以阻止从更新,进行备份,然后让它恢复同步。问题是我只有一台物理机器可以使用。
我知道我可以在这台服务器上设置多个 mysql 实例。问题是:这样做明智吗? 从属实际上仅用于生成该备份文件(将被复制到网络上的不同磁盘),以便主可以保持事件状态。
最佳答案
如果你只使用 innodb - 尝试 xtrabackup .
如果您同时使用 myisam 和 innodb - flush + lvm snapshot + file-level copy可能对你有用。
确实,用于备份的复制从属也是个好主意。只记得定期check data consistency between the master and the slave .
关于mysql - 当 mysqldump 变得非常慢时怎么办,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11713705/