Daniel Fischer Asked: 2010-02-04 03:32:28 +0800 CST2010-02-04 03:32:28 +0800 CST 2010-02-04 03:32:28 +0800 CST 执行 mysql 转储会导致交换问题 772 我每晚手动执行一次 mysqldump。 我刚刚注意到,完成后我尝试访问该网站非常慢。在查看了免费的 -mh 之后,我注意到服务器现在正在交换,否则它不在 mysqldump 之前。 在这种情况下我该怎么办?每次备份都重启服务器?这似乎不是很有效。 转储后,我的数据库文件 raw 为 1.1gb。 backup mysql 4 个回答 Voted Best Answer Craig 2010-02-04T06:52:12+08:002010-02-04T06:52:12+08:00 我们每晚转储更大的 MySQL 数据库,没有任何交换问题。这是执行的命令行: mysqldump --host=$HOST -u $USER --password=$PASSWORD --max_allowed_packet=512M --port=3306 --single-transaction --skip-add-locks --quick -e databasename 您是否包括“--quick”选项?这可以防止 mysqldump 在单个查询中检索大表。这可能是迫使您的服务器交换的原因。它使 mysqldump 逐行获取大表。 mbac32768 2010-04-03T04:37:56+08:002010-04-03T04:37:56+08:00 如果省略 mysqldump 的 --quick 选项,服务器将在将整个响应发送到客户端之前缓冲整个响应,这很容易导致与大表交换。 此外,如果您将转储保存到运行服务器的主机,它可能会与 mysqld 争夺缓存。如果您还没有做这两件事,请尝试使用 --quick 并通过网络运行 mysqldump。 祝你好运! sntg 2010-02-04T03:57:18+08:002010-02-04T03:57:18+08:00 mysqldump 在备份时锁定所有必要的表,尝试使用 mysqlhotcopy 代替。 Jorge Bernal 2010-02-12T17:19:22+08:002010-02-12T17:19:22+08:00 听起来 mysqldump 可能会将更多的数据加载到缓存中而不是必要的。无论如何,如果您的服务器交换,您可能将缓存值设置得太高。 尝试SHOW GLOBAL STATUS在转储之前和之后运行,并比较值 另外,请尝试在转储后重新启动 mysql。如果这有帮助,它可能与缓存相关
我们每晚转储更大的 MySQL 数据库,没有任何交换问题。这是执行的命令行:
mysqldump --host=$HOST -u $USER --password=$PASSWORD --max_allowed_packet=512M --port=3306 --single-transaction --skip-add-locks --quick -e databasename
您是否包括“--quick”选项?这可以防止 mysqldump 在单个查询中检索大表。这可能是迫使您的服务器交换的原因。它使 mysqldump 逐行获取大表。
如果省略 mysqldump 的 --quick 选项,服务器将在将整个响应发送到客户端之前缓冲整个响应,这很容易导致与大表交换。
此外,如果您将转储保存到运行服务器的主机,它可能会与 mysqld 争夺缓存。如果您还没有做这两件事,请尝试使用 --quick 并通过网络运行 mysqldump。
祝你好运!
mysqldump 在备份时锁定所有必要的表,尝试使用 mysqlhotcopy 代替。
听起来 mysqldump 可能会将更多的数据加载到缓存中而不是必要的。无论如何,如果您的服务器交换,您可能将缓存值设置得太高。
尝试
SHOW GLOBAL STATUS
在转储之前和之后运行,并比较值另外,请尝试在转储后重新启动 mysql。如果这有帮助,它可能与缓存相关