1. 程式人生 > 其它 >mydumper備份工具介紹與使用

mydumper備份工具介紹與使用

前言:

前面文章有介紹過 MySQL 系統自帶的 mysqldump 備份工具的使用,其實還有一個開源工具 mydumper 同樣適用於 MySQL 的邏輯備份。之前一直沒有正式體驗過,只是聽說比 mysqldump 要快很多,具體使用效果如何, 一起來看下吧。

1. mydumper 簡介

mydumper 是一款社群開源的邏輯備份工具。該工具主要由 C 語言編寫,目前由 MySQL 、Facebook 等公司人員開發維護。

官網地址:https://launchpad.net/mydumper
GitHub 地址:https://github.com/maxbube/mydumper

參考官方介紹,mydumper 主要有以下幾點特性:

  • 支援多執行緒匯出資料,速度更快。
  • 支援一致性備份。
  • 支援將匯出檔案壓縮,節約空間。
  • 支援多執行緒恢復。
  • 支援以守護程序模式工作,定時快照和連續二進位制日誌。
  • 支援按照指定大小將備份檔案切割。
  • 資料與建表語句分離。

2. mydumper 安裝

安裝方法大概有兩種,一種是編譯安裝,一種是 yum 直接安裝 rpm 包。下面以 CentOS 系統為例,簡單展示下安裝方法:

# 1.編譯安裝
[root@localhost ~]# yum -y  install glib2-devel mysql-devel zlib-devel pcre-devel zlib gcc-c++ gcc cmake
[root@localhost ~]# wget https://launchpad.net/mydumper/0.9/0.9.1/+download/mydumper-0.9.1.tar.gz
[root@localhost ~]# tar zxf mydumper-0.9.1.tar.gz
[root@localhost ~]# cd mydumper-0.9.1/
[root@localhost mydumper-0.9.1]# cmake .
[root@localhost mydumper-0.9.1]# make
[root@localhost mydumper-0.9.1]# make install
# 安裝完成後生成兩個二進位制檔案 mydumper 和 myloader 位於 /usr/local/bin 目錄下
[root@localhost bin]# ls /usr/local/bin/
mydumper  myloader

# 2.直接安裝 rpm 包
# rpm包地址:https://github.com/maxbube/mydumper/releases 請根據自己的系統型別選擇下載版本
[root@localhost ~]# yum install https://github.com/maxbube/mydumper/releases/download/v0.10.7-2/mydumper-0.10.7-2.el7.x86_64.rpm
# 安裝完成後生成兩個二進位制檔案 mydumper 和 myloader 位於 /usr/bin 目錄下

3. mydumper 使用

安裝完成後,可以很明顯看出,mydumper 和 myloader 是相對應的一組可執行程式,二者的作用分別是匯出資料與匯入資料。我們先來看下如何使用 mydumper 來備份資料。

首先執行 mydumper --help 命令可以獲取幫助資訊,同 mysqldump 類似,mydumper 也可以自定義很多引數,參考官方介紹,以下簡要說明部分常用的引數。

引數名 縮寫 含義
--user -u 備份所使用的使用者
--pasword -p 連線所用的使用者密碼
--host -h MySQL 服務端地址
--port -P MySQL 埠號
--threads -t 開啟的備份執行緒數,預設是4
--database -B 要備份的資料庫,不指定則備份所有庫
--tables-list -T 需要備份的表,名字用逗號隔開
--outputdir -o 備份檔案輸出的目錄
--statement-size -s 生成的insert語句的位元組數,預設1000000
--rows -r 將表按行分割,指定這個選項會關閉 --chunk-filesize
--chunk-filesize -F 將表按大小分割時,指定分割大小,單位是 MB
--regex -x 使用正則表示式匹配'db.table'
--compress -c 壓縮輸出檔案
--ignore-engines -i 忽略的儲存引擎
--no-schemas -m 不備份表結構
--no-data -d 不備份表資料
--triggers -G 備份觸發器
--events -E 備份事件
--routines -R 備份儲存過程和函式
--no-views -W 不備份檢視
--no-locks -k 不使用臨時共享只讀鎖,使用這個選項會造成資料不一致
--daemon -D 啟用守護程序模式,守護程序模式以某個間隔不間斷對資料庫進行備份
--where 只匯出選擇的資料

看完這些引數,是不是想躍躍欲試嘗試下啦,下面我們來具體使用下,感受下效果如何。

# 備份全部資料庫 
mydumper -u root -p 123456 -o /mysql_backup/all/
# 全量備份 會備份 mysql、sys 系統庫及其他自建庫

# 備份全部資料庫 包含觸發器、事件、儲存過程及函式
mydumper -u root -p 123456 -G -R -E -o /mysql_backup/all2/

# 備份指定庫
mydumper -u root -p 123456 -G -R -E -B db1 -o /mysql_backup/db1/

# 使用正則 排除系統庫
mydumper -u root -p 123456 -G -R -E --regex '^(?!(mysql|sys))' -o /mysql_backup/all3

# 備份指定表
mydumper -u root -p 123456 -B db1 -T tb1,tb2 -o /mysql_backup/tb/

# 只備份表結構
mydumper -u root -p 123456 -d -B db1 -o /mysql_backup/nodata/

# 只備份表資料
mydumper -u root -p 123456 -m -B db1 -o /mysql_backup/noschema/

# 壓縮備份某個表
mydumper -u root -p 123456 -B db1 -T tb1 -c -o /mysql_backup/compress/

以上是針對不同場景給出的相應備份語句,實際執行後,我們發現:mydumper 備份會產生多個檔案,比如建庫、建表、表資料等都分別在不同檔案中。以 db1 庫的全備為例,來看下備份出的檔案命名規則及作用。

[root@localhost ~]# cd /mysql_backup/db1/
[root@localhost db1]# tree .
.
├── db1-schema-create.sql
├── db1-schema-post.sql
├── db1.tb1.metadata
├── db1.tb1-schema.sql
├── db1.tb1-schema-triggers.sql
├── db1.tb1.sql
├── db1.tb2.metadata
├── db1.tb2-schema.sql
├── db1.tb2.sql
├── db1.tb3.metadata
├── db1.tb3-schema.sql
├── db1.view1-schema.sql
├── db1.view1-schema-view.sql
└── metadata

0 directories, 14 files

可能各個版本備份出來的檔案命名稍有不同,從檔案命名可以較為明顯的看出該檔案的內容,大致總結下檔案命名規則如下:

  • dbname-schema-create.sql:建庫語句。
  • dbname-schema-post.sql:包含事件、儲存過程及函式建立語句(若存在則有該檔案)。
  • dbname.tbname.metadata:記錄這個表的行數。
  • dbname.tbname-schema.sql:此表的建立語句。
  • dbname.tbname-schema-triggers.sql:建立觸發器語句(若該表存在觸發器 則有此檔案)。
  • dbname.tbname.sql:該表的插入資料語句(若該表為空 則不存在此檔案)。
  • dbname.viewname-schema.sql:建立檢視語句(只列舉出檢視欄位)。
  • dbname.viewname-schema-view.sql:建立檢視的真正語句。
  • metadata:記錄開始及結束備份的時間以及二進位制日誌位置。

總結:

本篇文章簡單介紹了 mydumper 備份工具的安裝及使用方法,作為自己學習的一種記錄,希望本篇文章能對各位有所幫助,想體驗 mydumper 工具的小夥伴可以參考下。 要想用好這個工具還需要自己積累實戰經驗,只有用得多了才會更順手。

作者:MySQL技術
出處:https://www.cnblogs.com/kunjian/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。
如果文中有什麼錯誤,歡迎指出。以免更多的人被誤導。有需要溝通的,可以站內私信,文章留言,或者關注『MySQL技術』公眾號私信我。一定盡力回答。