我試圖從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