我试图从Azure Database for MySQL Server
自动化所有数据库的mysql转储。数据库的当前大小:使用mysqldump缓慢写入数据库
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脚本,在不同的虚拟机,调用mysqldump
所有这些转储到一个文件中。但是,我遇到了db1
的问题。它被转储到一个文件中,但速度很慢,在30分钟内低于〜4MB。然而,db2
和db3
几乎立即被转储,以秒为单位。
我已经尝试了所有的下列选项和组合,看是否写入速度的变化,但它并不:
--compress
--lock-tables (true/false)
--skip-lock-tables
--max-allowed-packet (512M)
--quick
--single-transaction
--opt
我目前甚至没有使用脚本,只是运行中的命令一个外壳,结果相同。
mysqldump -h <host> -P <port> -u'<user>' -p'<password>' db1 > db1.sql
db1
有〜500个表格。
据我所知,它大于db2
和db3
但它不是那么多,我想知道是否有人知道这里可能是什么问题?
编辑
这些有用的答案,谷歌的研究后表明,该数据库是最有可能的罚款,我通过复制服务器上的db1
数据库到测试数据库,然后逐个删除表一个运行测试减小尺寸。在大约50MB的时候,写入变得像其他数据库一样。这让我相信Azure中会有一些限制,因为数据库没问题,我们会和他们的支持团队一起讨论。我在Google上也发现了很多关于Azure数据库速度的帖子。
与此同时,我将脚本更改为忽略大型数据库。我们将尝试将数据库移动到由Azure提供的SQL Server
或带有mysql服务器的简单虚拟机,以查看哪里可以获得更好的性能。
谢谢您的答复。我将命令运行到'/ dev/null'并监视进程列表。在'db1'上,所有表按字母顺序都有一个循环过程'检查权限'。这个过程在'Time'列中显示10-30,我相信这是每个表的秒数。在其他数据库上运行相同的测试,时间总是0.我认为这不是网络问题,我认为这个特定的数据库有问题。 – tima
是的,我看到了一个,但我们有4个用户,其中一个是'mysql.sys',一个是我们正在使用的(应该是“admin”,所以有所有的授权),另外两个是Azure拥有的超级用户。 – tima