我有什麼似乎是減緩MySQL恢復,並尋找一些調整建議(我是一個PostgreSQL和SQL Server的傢伙)。MySQL恢復性能
dev服務器有48GB內存,8個內核,運行Centos 6.2 64位和MySQL 5.1.61(與生產MySQL相同),以及軟件管理RAID-10/XFS中的4 x 7200 RPM SAS驅動器。唯一的MySQL客戶端進程是還原。轉儲是在生產服務器上的所有數據庫的普通mysqldump上進行的。
我已經應用了http://derwiki.tumblr.com/post/24490758395/loading-half-a-billion-rows-into-mysql中的一些選項,包括將FOREIGN_KEY_CHECKS和UNIQUE_CHECKS設置爲零。我在下面包含了my.cnf。
使用mytop和pv監視還原(pv backup.sql | mysql -u root -p),看起來INSERT INTO語句開始逐漸變慢。 mytop顯示的qps從3開始,並通過轉儲文件以60%下降到0。不確定在這種情況下mytop的準確度如何,因爲3個插入(帶有值)仍然看起來很慢。 htop顯示< MySQL使用的CPU的CPU利用率爲10%,使用的內存小於8GB。
不同的數據庫,但類似的恢復技術,使用PostgreSQL在同一臺服務器上運行速度快5-10倍。
想法?
[mysqld]
# my.cnf
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
slow-query-log
long_query_time = 60
log-slow-admin-statements
slow_query_log_file = /var/log/mysql_slow.log
innodb_buffer_pool_size = 2G
max_allowed_packet = 1G
key_buffer_size = 1G
concurrent_insert = 1
innodb_flush_log_at_trx_commit = 2
bulk_insert_buffer_size = 1G
innodb_flush_method = O_DIRECT
爲了增加神祕感,似乎一個MySQL 5.0轉儲恢復到5.1服務器是問題的一部分。將轉儲應用於5.0實例需要40分鐘,而5.1則需要3.75小時。 – MattK