做一个mysql转储导致交换问题

我每天晚上手工做一个mysqldump。

我只是注意到,完成后,我试图访问该网站是非常缓慢的。 在我看看free -mh之后,我注意到服务器现在正在交换,否则它不在mysqldump之前。

在这种情况下我该怎么做? 每次备份时重新启动服务器? 这似乎不是很有效。

转储后,我的数据库文件raw是1.1gb。

我们每晚转储更大的MySQL数据库,没有任何交换问题。 这是执行的命令行:

mysqldump –host = $ HOST -u $ USER –password = $ PASSWORD –max_allowed_pa​​cket = 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相关