天天看點

MySQL多線程備份恢複工具mydumper,myloder

mydumper是多線程備份工具,預設開啟4個線程,比mysqldump的速度更快

mydumper備份時,資料和表結構是分開的,比如備份test表時,會生成test.sql檔案和test.schema.sql檔案。

myloader導資料的時候預設不會記錄二進制日志,即使你的sql_log_bin=on.

準備安裝媒體:

下載下傳mydumper-0.6.2.tar.gz

安裝依賴包:

# yum install glib2-devel mysql-devel zlib-devel pcre-devel

編譯安裝

# tar zxvf mydumper-0.6.2.tar.gz 

# cd mydumper-0.6.2

# mkdir bin

# cd bin

# cmake ../

# make

# make install

安裝好後可以看到/usr/local/bin目錄下面多了mydumper和myloader兩個指令

# ll /usr/local/bin/

total 188

-rwxr-xr-x 1 root root 132868 Aug  3 22:51 mydumper

-rwxr-xr-x 1 root root  47491 Aug  3 22:51 myloader

# ./mydumper  --database=test --outputdir=/data/backup/test

./mydumper: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory

建立軟連結即可解決這個報錯:

# ln -s /usr/local/mysql/lib/libmysqlclient.so.18/usr/lib/

# ldconfig -v

導出:

# mydumper  --database=test --outputdir=/data/backup/test

導入:

#  myloader  -B test  -d /data/backup/test

利用備份建從庫:

cd /data/backup/test

裡面有一個metadata檔案,這個檔案記錄的是目前的binlog檔案及pos,可以使用這個資訊搭建從庫 

mydumper參數介紹:

  -B, --database              備份資料庫

  -T, --tables-list           備份表清單,多個表以“,”逗号分隔

  -o, --outputdir             指定備份目錄

  -s, --statement-size        insert長度,機關是byte, default 1000000,這個參數不能太小,不然會報 Row bigger than statement_size for tools.t_serverinfo

  -r, --rows                  分割表,多少行記錄為一個chunk. 預設是off的

  -F, --chunk-filesize        分割表,以多個檔案備份,機關是MB

  -c, --compress              壓縮備份

  -e, --build-empty-files     如果表沒有資料,還是建立這個檔案

  -x, --regex                 正則比對資料庫、表,如db.table1

  -i, --ignore-engines        忽略指定引擎的表

  -m, --no-schemas            不備份表結構

  -k, --no-locks              不加臨時的share read lock,這個可能會造成資料不一緻

  --less-locking              innodb表時,最小時間lock

  -l, --long-query-guard      設定最長查詢時間,預設是60s

  -K, --kill-long-queries     将長查詢進行殺掉

  -D, --daemon                開啟守護程序模式

  -I, --snapshot-interval     快照時間,預設是60s

  -L, --logfile               日志檔案,預設是标準輸出

  --tz-utc                    設定時區,隻有備份應用到不同時區的時使用,預設是 --skip-tz-utc是關閉的.

  --skip-tz-utc               

  --use-savepoints            Use savepoints to reduce metadata locking issues, needs SUPER privilege

  --success-on-1146           Not increment error count and Warning instead of Critical in case of table doesn't exist

  --lock-all-tables           Use LOCK TABLE for all, instead of FTWRL

  -h, --host                  主機

  -u, --user                  使用者

  -p, --password              密碼

  -P, --port                  端口

  -S, --socket                socket檔案

  -t, --threads               并發線程數,預設是4

  -C, --compress-protocol     Use compression on the MySQL connection

  -V, --version               Show the program version and exit

  -v, --verbose               Verbosity of output, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2

本文轉自 emma_cql 51CTO部落格,原文連結:http://blog.51cto.com/chenql/1681643