【備份工具】mydumper

haoge0205發表於2017-02-20
Mydumper主要特性:是一個針對MySQL的高效能多執行緒備份和恢復工具,開發人員主要來自MySQL,Facebook,SkySQL公司。


特性:
    1:輕量級C語言寫的
    2:執行速度比mysqldump快10倍
    3:事務性和非事務性表一致的快照(適用於0.2.2以上版本)
    4:快速的檔案壓縮
    5:支援匯出binlog
    6:多執行緒恢復(適用於0.2.1以上版本)
    7:以守護程式的工作方式,定時快照和連續二進位制日誌(適用於0.5.0以上版本)
    8:開源 (GNU GPLv3)
    
安裝地址及安裝方法:
yum install glib2-devel mysql-devel zlib-devel pcre-devel zlib gcc-c++ gcc cmake -y
wget
tar xf mydumper-0.9.1.tar.gz
cd mydumper-0.9.1/
cmake .
make && make install




下面是percona-xtrabackup和mydumper壓縮備份後的大小:
[root@test-5-69 bak]# du -sh *
3.3G 2017-02-09_04-00-02
3.3G 2017-02-10_04-00-02
3.3G 2017-02-11_04-00-02
3.3G 2017-02-12_04-00-02
3.3G 2017-02-13_04-00-02
3.3G 2017-02-14_04-00-02
3.3G 2017-02-15_04-00-02
852M all_20170215




在測試庫中使用的優勢:
mydumper匯出的形式是每個表一個檔案,對開發和測試誤操作恢復十分有效。而percona-xtrabackup是對全庫,恢復也是全庫。 對單個表誤操作恢復繁瑣。




mydumper備份後的儲存格式:
[root@test-5-69 all_20170215]# ls
jxcommoninfo.orderinfo-schema.sql.gz              jxorder.ord_OrderCount.sql.gz                      metadata
jxcommoninfo.orderinfo.sql.gz                     jxorder.ord_OrderExchangeCodeDetail-schema.sql.gz  mysql.columns_priv-schema.sql.gz
jxcommoninfo-schema-create.sql.gz                 jxorder.ord_OrderExchangeCodeDetail.sql.gz         mysql.db-schema.sql.gz
jxorder.checksums-schema.sql.gz                   jxorder.ord_OrderExt-schema.sql.gz                 mysql.db.sql.gz
jxorder.dsns-schema.sql.gz                        jxorder.ord_OrderExt.sql.gz                        mysql.event-schema.sql.gz
jxorder.dsns.sql.gz                               jxorder.ord_OrderMarkLog-schema.sql.gz             mysql.func-schema.sql.gz
jxorder.dz_packingMaterialsOrder-schema.sql.gz    jxorder.ord_OrderMark-schema.sql.gz                mysql.help_category-schema.sql.gz




[root@test-5-69 all_20170215]# mydumper --help
Application Options:
  -B, --database              需要備份的資料庫,一個資料庫一條命令備份,要不就是備份所有資料庫,包括mysql。
  -T, --tables-list           需要備份的表,用逗號分隔。
  -o, --outputdir             備份檔案目錄
  -s, --statement-size        生成插入語句的位元組數,預設1000000,這個引數不能太小,不然會報 Row bigger than statement_size for tools.t_serverinfo
  -r, --rows                  試圖用行塊來分割表,該引數關閉--chunk-filesize
  -F, --chunk-filesize        行塊分割表的檔案大小,單位是MB
  -c, --compress              壓縮輸出檔案
  -e, --build-empty-files     即使表沒有資料,也產生一個空檔案
  -x, --regex                 正規表示式匹配,如'db.table'
  -i, --ignore-engines        忽略的儲存引擎,用逗號分隔 
  -m, --no-schemas            不匯出表結構
  -d, --no-data               不匯出表資料
  -G, --triggers              匯出觸發器
  -E, --events                匯出事件
  -R, --routines              匯出儲存過程
  -k, --no-locks              不執行共享讀鎖 警告:這將導致不一致的備份
  --less-locking              減到最小的鎖在innodb表上.
  -l, --long-query-guard      設定長查詢時間,預設60秒,超過該時間則會報錯:There are queries in PROCESSLIST running longer than 60s, aborting dump
  -K, --kill-long-queries kill掉長時間執行的查詢,備份報錯:Lock wait timeout exceeded; try restarting transaction


  -D, --daemon                啟用守護程式模式
  -I, --snapshot-interval     dump快照間隔時間,預設60s,需要在daemon模式下
  -L, --logfile               使用日誌檔案,預設標準輸出到終端
  --tz-utc                    備份的時候允許備份Timestamp,這樣會導致不同時區的備份還原會出問題,預設關閉,引數:--skip-tz-utc to disable.
  --skip-tz-utc               
  --use-savepoints            使用儲存點記錄後設資料的鎖資訊,需要SUPER許可權
  --success-on-1146           Not increment error count and Warning instead of Critical in case of table doesn't exist
  --lock-all-tables           鎖全表,代替FLUSH TABLE WITH READ LOCK
  -U, --updated-since         Use Update_time to dump only tables updated in the last U days
  --trx-consistency-only      Transactional consistency only
  -h, --host                  The host to connect to
  -u, --user                  Username with privileges to run the dump
  -p, --password              User password
  -P, --port                  TCP/IP port to connect to
  -S, --socket                UNIX domain socket file to use for connection
  -t, --threads               備份執行的執行緒數,預設4個執行緒
  -C, --compress-protocol     在mysql連線上使用壓縮協議
  -V, --version               Show the program version and exit
  -v, --verbose               更多輸出, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2
  
  
[root@test-5-69 all_20170215]# myloader --help
Application Options:
  -d, --directory                   備份檔案所在的目錄
  -q, --queries-per-transaction     每個事務的query數量, 預設1000
  -o, --overwrite-tables            如果表存在則先刪除,使用該引數,需要備份時候要備份表結構,不然還原會找不到表
  -B, --database                    指定需要還原的資料庫
  -s, --source-db                   還原的資料庫
  -e, --enable-binlog               啟用二進位制日誌恢復資料
  -h, --host                        The host to connect to
  -u, --user                        Username with privileges to run the dump
  -p, --password                    User password
  -P, --port                        TCP/IP port to connect to
  -S, --socket                      UNIX domain socket file to use for connection
  -t, --threads                     使用的執行緒數量,預設4
  -C, --compress-protocol           連線上使用壓縮協議
  -V, --version                     Show the program version and exit
  -v, --verbose                     更多輸出, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2


#!/bin/sh
. /etc/profile


DIR='/my/bak/'
DATE=`date +%Y%m%d_%H-%M`


/usr/local/bin/mydumper -c -o $DIR$DATE


find $DIR -mindepth 1 -maxdepth 1 -type d -mtime +3 -exec rm -rf {} \;







  




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28939273/viewspace-2133935/,如需轉載,請註明出處,否則將追究法律責任。

相關文章