MySQL備份與恢復——基於MyDumper/MyLoader 邏輯備份恢復
一、說明
MyDumper是一個針對MySQL和Drizzle的高效能多執行緒備份和恢復工具。開發人員主要來自MySQL,Facebook,SkySQL公司。備份格式為邏輯備份,每張表(非空表)會預設生成兩個檔案,分別包括建表語句及資料。
1.1 MyDumper優勢
1.多執行緒備份工具
2.支援檔案壓縮功能
3.一致性:在所有的threads之間維護快照,提供master和slave日誌的準確位置等
4.支援多執行緒恢復
5.比mysqldump備份速度及恢復速度都更快
預設是關閉了binlog的dump功能,要想開啟,需要在cmke編譯的時候新增-DWITH_BINLOG=ON
1.2 MyDumper如何獲取一致性快照的
1.server上正在執行的慢查詢或中斷或者被kill掉
2.需要施加全域性寫鎖("flush tables with read lock")
3.讀取不同的後設資料("show slave status","show master status")
4.建立具有事務性和非事務性表一致的快照(0.2.2+)
3.一旦所有的工作現成通知已經建立好快照,master會執行"unlock tables",開始執行佇列中的job
二、MyDumper/ MyLoader安裝
2.1 下載地址
2.2 安裝MyDumper依賴包
* Ubuntu or Debian: apt-get install libglib2.0-dev libmysqlclient15-dev zlib1g-dev libpcre3-dev libssl-dev * Fedora, RedHat and CentOS: yum install glib2-devel mysql-devel zlib-devel pcre-devel openssl-devel * openSUSE: zypper install glib2-devel libmysqlclient-devel pcre-devel zlib-devel * MacOSX: port install glib2 mysql5 pcre pkgconfig cmake
2.3 安裝MyDumper
shell> tar -zxvf mydumper-0.9.1.tar.gz shell> cd mydumper-0.9.1 shell> cmake . shell> make
注:安裝完畢會生成兩個檔案mydumper和myloader
2.4 檢驗是否安裝成功
shell> mydumper -V mydumper 0.9.1, built against MySQL 5.6.38
三、MyDumper常用引數列表
常用引數 |
說明 |
-B, --database |
要匯出的資料庫名 |
-T, --tables-list |
要匯出的表名,多個表用逗號分隔。不支援正規表示式 |
-o, --outputdir |
匯出資料檔案存放的目錄, mydumper 會自動建立 |
-c, --compress |
壓縮匯出的檔案 |
-e, --build-empty-files |
即使是空表也為表建立檔案 |
-x, --regex |
使用正規表示式匹配 'db.table' |
-i, --ignore-engines |
忽略的儲存引擎,多個儲存引擎使用逗號分隔 |
-m, --no-schemas |
只匯出資料,不匯出建庫建表語句 |
-d, --no-data |
僅僅匯出建表結構,建立 db 的語句,不匯出表的資料 |
-G, --triggers |
匯出觸發器 |
-E, --events |
匯出 events |
-R, --routines |
匯出儲存過程和函式 |
-k, --no-locks |
不施加臨時的共享讀鎖,會導致備份不一致 |
-L, --logfile |
指定 mydumper 輸出的日誌檔案,預設使用控制檯輸出 |
-h, --host |
主機 |
-u, --user |
使用者名稱 |
-p, --password |
密碼 |
-P, --port |
埠 |
-S, --socket |
套接字檔案 |
-t, --threads |
所使用的執行緒數,預設是 4 |
-C, --compress-protocol |
壓縮協議 |
-v, --verbose |
輸出模式 , 0 = silent, 1 = errors, 2 = warnings, 3 = info, 預設為 2 |
四、匯出示例
注:
1.新增--compress引數,會生成.sql.gz檔案
2.加上-G -E -R引數,會生成dbname-schema-post.sql檔案
3.--outputdir目錄不要求為空,同名檔案會直接覆蓋
4.可以用 --regex '^(?!(mysql))' 來忽略某個庫
5.-B 後面不指定即所有庫(不包括performance_schema), 後面指定即匯出指定庫
4.1 全庫匯出
mydumper --user=root --password='mysql' --socket=/tmp/mysql.sock --outputdir=/backup/mydumper -G -E -R --verbose=3 --logfile=/backup/mydumper/mydumper.log
4.2備份指定庫指定表
mydumper --user=root --password='mysql' --socket=/tmp/mysql.sock -B db1 -T t1,t2 --outputdir=/backup/mydumper --verbose=3 --logfile=/backup/mydumper/mydumper.log
4.3 只匯出結構
mydumper --user=root --password='mysql' --socket=/tmp/mysql.sock -B db1 -d --outputdir=/backup/mydumper --verbose=3 --logfile=/backup/mydumper/mydumper.log
注:可用於測試升級
4.4 只匯出資料
mydumper --user=root --password='mysql' --socket=/tmp/mysql.sock -B db1 -m --outputdir=/backup/mydumper --verbose=3 --logfile=/backup/mydumper/mydumper.log
4.5 遠端壓縮及使用壓縮協議
mydumper --user=root --password='mysql' --socket=/tmp/mysql.sock -B db1 -d --outputdir=/backup/mydumper -c -C tar --verbose=3 --logfile=/backup/mydumper/mydumper.log
4.6 匹配多張表備份
mydumper --user=root --password='mysql' --socket=/tmp/mysql.sock -B db1 --regex=db* --outputdir=/backup/mydumper --verbose=3 --logfile=/backup/mydumper/mydumper.log
4.7 過濾多個庫
mydumper --user=root --password='mysql' --socket=/tmp/mysql.sock --regex '^(?!(mysql|db2))' --outputdir=/backup/mydumper --verbose=3 --logfile=/backup/mydumper/mydumper.log
4.8 即使是空表也生成.sql
mydumper --user=root --password='mysql' --socket=/tmp/mysql.sock --regex '^(?!(mysql))' -B db1 -e --outputdir=/backup/mydumper --verbose=3 --logfile=/backup/mydumper/mydumper.log
五、MyLoader常用引數
常用引數 |
說明 |
-d,--directory |
備份檔案目錄 |
-q,--queries-per-transaction |
每次事務執行的查詢時間,預設為 1 000 |
-o,--overwrite-tables |
如果恢復表存在,先 drop |
-B,--database |
需要還原的資料庫 |
-s,--source-db |
源資料庫 |
-e,--enable-binlog |
啟動還原資料的二進位制日誌 |
-h,--host |
主機 /I P |
-u,--user |
還原時使用者 |
-p,--password |
密碼 |
-P,--port |
埠 |
-S,--socket |
套接字 |
-t,--threads |
執行緒數,預設為 4 |
-C,--compress-protocol |
壓縮協議 |
-V,--version |
檢視版本 |
六、匯入示例
6.1 恢復指定庫
myloader --user=root --password='mysql' --socket=/tmp/mysql.sock --directory=/backup/mydumper --verbose=3 -s db3
6.2 恢復一個庫到原來的例項
myloader --user=root --password='mysql' --socket=/tmp/mysql.sock --directory=/backup/mydumper --verbose=3 -s db1 -B 目標庫
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30310891/viewspace-2781424/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL備份與恢復——基於OUTFILE /LOAD DATA 邏輯備份恢復MySql
- Mysql備份與恢復(2)---邏輯備份MySql
- MySQL備份與恢復——基於Xtrabackup物理備份恢復MySql
- mydumper備份恢復
- MySQL 備份與恢復MySql
- Mysql備份與恢復(1)---物理備份MySql
- RAC備份恢復之Voting備份與恢復
- Mysql備份恢復MySql
- MySQL 非常規恢復與物理備份恢復MySql
- 備份與恢復:polardb資料庫備份與恢復資料庫
- Oracle邏輯備份與恢復選項說明Oracle
- 《入門MySQL—備份與恢復》MySql
- MySQL備份與恢復——實操MySql
- 入門MySQL——備份與恢復MySql
- MySQL備份與恢復操作解析MySql
- Mysql資料備份與恢復MySql
- 【MySQL】MySQL備份和恢復MySql
- mysql 開發進階篇系列 42 邏輯備份與恢復MySql
- Jenkins備份與恢復Jenkins
- Postgresql 備份與恢復SQL
- 達夢DM備份恢復(物理和邏輯)
- Mysql的幾種備份與恢復MySql
- MySQL入門--備份與恢復(三)MySql
- MySQL入門--備份與恢復(一)MySql
- MySQL入門--備份與恢復(二)MySql
- MySQL 日誌管理、備份與恢復MySql
- 阿里面試官:知道 MySQL 邏輯備份與恢復測試麼?阿里面試MySql
- 備份和恢復
- Oracle 備份 與 恢復 概述Oracle
- DB的備份與恢復
- GitLab的備份與恢復Gitlab
- docker 中 MySQL 備份及恢復DockerMySql
- GitLab的自動備份、清理備份與恢復Gitlab
- 詳解叢集級備份恢復:物理細粒度備份恢復
- 備份與恢復:Polardb資料庫資料基於時間點恢復資料庫
- 備份與恢復oracle_homeOracle
- DB2備份與恢復DB2
- RMAN備份與恢復測試