MySQL多線程資料匯入匯出工具Mydumper

來源:互聯網
上載者:User

標籤:

http://afei2.sinaapp.com/?p=456

今天線上上使用mysqldump將資料表從一個庫匯入到另外一個庫,結果速度特別慢,印象中有個多線程的資料匯入匯出工具Mydumper,於是簡單的調查和測試一下。
下午導資料的過程中,這個表是沒有更新的,因此不需要確保多個資料之間的一致性,就簡單的寫個shell指令碼啟動多個mysqldumper來導資料,這樣有幾個問題:

  1. 需要處理表資料大小不均勻的問題,有的會很快結束,有的會比較慢。
  2. 如果需要保證多個匯出之間的一致性時,則無法保證。
Mydumper是一個使用c語言編寫的多線程匯出匯入工具,並且能夠保證多個表之間的一致性。Mydumper已經好幾篇blog在討論:Mydumper效能測試,Mydumper使用和源碼分析。通過stronghearted的測試,我們看到不是線程越多越好,6個線程的時候速度最快(這個肯定跟機器的配置等諸多因素有關,只能作為一個經驗值而不是絕對值,機器好的時候,線程越多越好)。一、原理Mydumper如何保證資料的一致性?下面是官方給出的解答,摘抄如下,主要是使用flush tables with read lock和start transaction with consistent snapshot,在flush tables with read lock時開啟所有的線程,並且通過show master status和show slave status獲得當前的position(便於使用Mydumper重建slave以及確保多個表之間的資料一致性)。
  1. Global write lock is acquired (“FLUSH TABLES WITH READ LOCK”)
  2. Various metadata is read (“SHOW SLAVE STATUS”,”SHOW MASTER STATUS”)
  3. Other threads connect and establish snapshots (“START TRANSACTION WITH CONSISTENT SNAPSHOT”),On pre-4.1.8 it creates dummy InnoDB table, and reads from it.
  4. Once all worker threads announce the snapshot establishment, master executes “UNLOCK TABLES” and starts queueing jobs.
二、安裝
  1. 下載源碼,https://launchpad.net/mydumper
  2. 閱讀README,根據不同的OS,安裝不同的依賴
  3. cmake .
  4. make
三、使用

Mydumper不能讀取/etc/my.cnf中設定檔,需要手工制定使用者名稱、密碼等等

mydumper -P 3306 -u admin -p ‘***‘ -h db23 -B meituan -T test1,test2,test3,test4,test5 -o ./ myloader -v 3 --threads=6 -P 3306 -u admin -p ‘***‘ -h 127.0.0.1 -S /opt/tmp/mysql3306.sock -B test  -d ./

四、測試

對mysqldump和Mydumper做了一個簡單測試,測試結果如下(測試結果受環境影響,結果僅供參考):5張表,每張表600M。 匯出:遠程進行,匯出兩遍,取最小值。mysqldump 37sMydumper 21s 匯入:mysqldump 14m4smydumper 9m4s五、結論結論:Mydumper在匯出匯入處理程序因為可以多線程進行,因此速度上肯定是優於mysqldump,可以用來替換mysqldump;Mydumper不能讀取/etc/my.cnf中的設定檔,這個挺麻煩的,必須進行指定。0  您可能也喜歡:
  • MYSQL資料檔案--.frm檔案(表結構恢複)
  • mysql使用event每天將資料備份為一張表
  • MySQL Replication過濾選項replicate*過濾規則
  • 更改Innodb 資料頁大小最佳化MySQL

MySQL多線程資料匯入匯出工具Mydumper

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.