微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用`mysqldump`慢速写入数据库

我正在尝试从Azure数据库MySQL服务器自动化所有数据库MysqL转储.当前数据库大小:

MysqL> SELECT table_schema "DB Name", Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" 
       FROM information_schema.tables GROUP  BY table_schema;
+--------------------+---------------+
| DB Name            | DB Size in MB |
+--------------------+---------------+
| db1                |         278.3 |
| db2                |          51.8 |
| information_schema |           0.2 |
| MysqL              |           8.9 |
| performance_schema |           0.0 |
| db3                |          43.3 |
| sys                |           0.0 |
+--------------------+---------------+
7 rows in set (31.80 sec)

我有一个python脚本,在不同的VM上,调用MysqLdump将所有这些转储到一个文件中.但是,我遇到了db1的问题.它被转储到一个文件但它很慢,在30分钟内不到〜4MB.但是db2和db3几乎立即被转储,只需几秒钟.

我已经尝试了以下所有选项和组合来查看写入速度是否发生变化,但它没有:

--compress
--lock-tables (true / false)
--skip-lock-tables
--max-allowed-packet (512M)
--quick
--single-transaction
--opt

我目前甚至没有使用脚本,只是在shell中运行命令,结果相同.

MysqLdump -h <host> -P <port> -u'<user>' -p'<password>' db1 > db1.sql

db1有~500个表.

我知道它比db2和db3大,但它不是那么多,我想知道是否有人知道这里可能出现什么问题?

编辑

在这些有用的答案和谷歌研究显示数据库很可能正常后,我通过将服务器上的db1数据库复制到测试数据库然后逐个删除表来减小大小来运行测试.大约50MB的写入就像其他数据库一样瞬间完成.这让我相信Azure中存在一些限制,因为数据库很好,我们将与他们的支持团队一起讨论.我还发现谷歌上有很多关于抱怨Azure数据库速度的帖子.

与此同时,我更改了脚本以忽略大型数据库.我们将尝试将数据库移动到Azure提供的sql Server或带有MysqL服务器的简单VM,以查看我们可以在哪里获得更好的性能.

解决方法:

它有可能在MysqL服务器端缓慢,但似乎不太可能.您可以打开第二个shell窗口,连接到MysqL并使用SHOW PROCESSLIST或SHOW ENGINE INNODB STATUS来检查卡住的查询或锁定.

如果存储速度很慢,也可能无法将数据写入db1.sql.但4MB是30分钟.太荒谬了.确保您正在保存到运行MysqLdump的实例的本地存储.不要保存到远程存储.如果您正在写入转储的存储卷有其他繁重的I / O流量使其饱和,也要小心,这可能会减慢写入速度.

另一种测试慢速数据写入的方法是尝试MysqLdump …> / dev / null如果这很快,那么这是一个很好的线索,缓慢是磁盘写入的错误.

最后,网络可能导致速度缓慢.如果将转储文件保存到/ dev / null仍然很慢,我会怀疑网络.

一个答案
https://serverfault.com/questions/233963/mysql-checking-permission-takes-a-long-time表明“检查权限”的缓慢可能是由于MysqL授权表中的数据太多(例如MysqL.user)造成的.如果您有数千个用户凭据,这可能是原因.您可以尝试删除这些条目(然后运行FLUSH HOSTS).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐