我每天晚上手工做一个mysqldump。
我只是注意到,完成后,我试图访问该网站是非常缓慢的。 在我看看free -mh之后,我注意到服务器现在正在交换,否则它不在mysqldump之前。
在这种情况下我该怎么做? 每次备份时重新启动服务器? 这似乎不是很有效。
转储后,我的数据库文件raw是1.1gb。
我们每晚转储更大的MySQL数据库,没有任何交换问题。 这是执行的命令行:
mysqldump –host = $ HOST -u $ USER –password = $ PASSWORD –max_allowed_packet = 512M –port = 3306 –single-transaction –skip-add-locks –quick -e databasename
你是否包括“ – 快速”选项? 这可以防止mysqldump在单个查询中检索大表。 这可能是什么迫使你的服务器交换。 它使mysqldump逐行获取大表。
如果你没有使用mysqldump的–quick选项,服务器会在发送给客户端之前缓冲整个响应,这很容易导致与大表交换。
另外,如果将转储保存到运行服务器的主机上,它可能会对mysqld进行caching。 尝试使用–quick并在networking上运行mysqldump,如果你还没有做这两件事。
祝你好运!
Mysqldump在备份时locking所有必要的表,而不是使用mysqlhotcopy。
听起来像mysqldump可能会加载更多的数据到caching不必要的。 无论如何,如果你的服务器交换,你可能有你的caching值设置得太高。
尝试在转储之前和之后运行SHOW GLOBAL STATUS
,并比较值
另外,请尝试在转储后重新启动mysql。 如果有帮助,它可能与caching相关