mydumper備份工具介紹與使用
前言:
前面文章有介紹過(guò) MySQL 系統(tǒng)自帶的 mysqldump 備份工具的使用,其實(shí)還有一個(gè)開(kāi)源工具 mydumper 同樣適用于 MySQL 的邏輯備份。之前一直沒(méi)有正式體驗(yàn)過(guò),只是聽(tīng)說(shuō)比 mysqldump 要快很多,具體使用效果如何, 一起來(lái)看下吧。
1. mydumper 簡(jiǎn)介
mydumper 是一款社區(qū)開(kāi)源的邏輯備份工具。該工具主要由 C 語(yǔ)言編寫(xiě),目前由 MySQL 、Facebook 等公司人員開(kāi)發(fā)維護(hù)。
官網(wǎng)地址:https://launchpad.net/mydumper
GitHub 地址:https://github.com/maxbube/mydumper
參考官方介紹,mydumper 主要有以下幾點(diǎn)特性:
支持多線程導(dǎo)出數(shù)據(jù),速度更快。
支持一致性備份。
支持將導(dǎo)出文件壓縮,節(jié)約空間。
支持多線程恢復(fù)。
支持以守護(hù)進(jìn)程模式工作,定時(shí)快照和連續(xù)二進(jìn)制日志。
支持按照指定大小將備份文件切割。
數(shù)據(jù)與建表語(yǔ)句分離。
2. mydumper 安裝
安裝方法大概有兩種,一種是編譯安裝,一種是 yum 直接安裝 rpm 包。下面以 CentOS 系統(tǒng)為例,簡(jiǎn)單展示下安裝方法:
# 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
# 安裝完成后生成兩個(gè)二進(jìn)制文件 mydumper 和 myloader 位于 /usr/local/bin 目錄下
[root@localhost bin]# ls /usr/local/bin/
mydumper myloader
# 2.直接安裝 rpm 包
# rpm包地址:https://github.com/maxbube/mydumper/releases 請(qǐng)根據(jù)自己的系統(tǒng)類(lèi)型選擇下載版本
[root@localhost ~]# yum install https://github.com/maxbube/mydumper/releases/download/v0.10.7-2/mydumper-0.10.7-2.el7.x86_64.rpm
# 安裝完成后生成兩個(gè)二進(jìn)制文件 mydumper 和 myloader 位于 /usr/bin 目錄下3. mydumper 使用
安裝完成后,可以很明顯看出,mydumper 和 myloader 是相對(duì)應(yīng)的一組可執(zhí)行程序,二者的作用分別是導(dǎo)出數(shù)據(jù)與導(dǎo)入數(shù)據(jù)。我們先來(lái)看下如何使用 mydumper 來(lái)備份數(shù)據(jù)。
首先執(zhí)行 mydumper --help 命令可以獲取幫助信息,同 mysqldump 類(lèi)似,mydumper 也可以自定義很多參數(shù),參考官方介紹,以下簡(jiǎn)要說(shuō)明部分常用的參數(shù)。

看完這些參數(shù),是不是想躍躍欲試嘗試下啦,下面我們來(lái)具體使用下,感受下效果如何。
# 備份全部數(shù)據(jù)庫(kù)
mydumper -u root -p 123456 -o /mysql_backup/all/
# 全量備份 會(huì)備份 mysql、sys 系統(tǒng)庫(kù)及其他自建庫(kù)
# 備份全部數(shù)據(jù)庫(kù) 包含觸發(fā)器、事件、存儲(chǔ)過(guò)程及函數(shù)
mydumper -u root -p 123456 -G -R -E -o /mysql_backup/all2/
# 備份指定庫(kù)
mydumper -u root -p 123456 -G -R -E -B db1 -o /mysql_backup/db1/
# 使用正則 排除系統(tǒng)庫(kù)
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/
# 只備份表結(jié)構(gòu)
mydumper -u root -p 123456 -d -B db1 -o /mysql_backup/nodata/
# 只備份表數(shù)據(jù)
mydumper -u root -p 123456 -m -B db1 -o /mysql_backup/noschema/
# 壓縮備份某個(gè)表
mydumper -u root -p 123456 -B db1 -T tb1 -c -o /mysql_backup/compress/以上是針對(duì)不同場(chǎng)景給出的相應(yīng)備份語(yǔ)句,實(shí)際執(zhí)行后,我們發(fā)現(xiàn):mydumper 備份會(huì)產(chǎn)生多個(gè)文件,比如建庫(kù)、建表、表數(shù)據(jù)等都分別在不同文件中。以 db1 庫(kù)的全備為例,來(lái)看下備份出的文件命名規(guī)則及作用。
[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可能各個(gè)版本備份出來(lái)的文件命名稍有不同,從文件命名可以較為明顯的看出該文件的內(nèi)容,大致總結(jié)下文件命名規(guī)則如下:
dbname-schema-create.sql:建庫(kù)語(yǔ)句。
dbname-schema-post.sql:包含事件、存儲(chǔ)過(guò)程及函數(shù)創(chuàng)建語(yǔ)句(若存在則有該文件)。
dbname.tbname.metadata:記錄這個(gè)表的行數(shù)。
dbname.tbname-schema.sql:此表的創(chuàng)建語(yǔ)句。
dbname.tbname-schema-triggers.sql:創(chuàng)建觸發(fā)器語(yǔ)句(若該表存在觸發(fā)器 則有此文件)。
dbname.tbname.sql:該表的插入數(shù)據(jù)語(yǔ)句(若該表為空 則不存在此文件)。
dbname.viewname-schema.sql:創(chuàng)建視圖語(yǔ)句(只列舉出視圖字段)。
dbname.viewname-schema-view.sql:創(chuàng)建視圖的真正語(yǔ)句。
metadata:記錄開(kāi)始及結(jié)束備份的時(shí)間以及二進(jìn)制日志位置。
總結(jié):
本篇文章簡(jiǎn)單介紹了 mydumper 備份工具的安裝及使用方法,作為自己學(xué)習(xí)的一種記錄,希望本篇文章能對(duì)各位有所幫助,想體驗(yàn) mydumper 工具的小伙伴可以參考下。要想用好這個(gè)工具還需要自己積累實(shí)戰(zhàn)經(jīng)驗(yàn),只有用得多了才會(huì)更順手。
推薦閱讀
(點(diǎn)擊標(biāo)題可跳轉(zhuǎn)閱讀)
