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技術』公眾號私信我。一定盡力回答。 |