mydumper備份資料庫詳解(已詳細說明)
mydumper是針對mysql資料庫備份的一個輕量級第三方的開源工具,備份方式為邏輯備份。它支援多執行緒,備份速度遠高於原生態的mysqldump以及眾多優異特性。因此該工具是DBA們的不二選擇。本文主要描述該工具的使用方法並給出示例。
有關mydumper安裝參考:mydumper安裝及安裝故障彙總
1、mydumper的特點
a、多執行緒邏輯備份,生產的多個備份檔案
b、與mysqldump相同,備份時對 MyISAM 表施加FTWRL (FLUSH TABLES WITH READ LOCK), 會阻塞DML 語句
c、保證備份資料的一致性
d、支援檔案壓縮,支援匯出binlog,支援多執行緒恢復,支援將備份檔案切塊
e、支援以守護程式模式工作,定時快照和連續二進位制日誌
2、mydumper語法
mydumper -u [USER] -p [PASSWORD] -h [HOST] -P [PORT] -t [THREADS] -b -c -B [DB] -o [directory]
注意:命令列之間要有空格 -u 使用者名稱 -p 密碼 之間必須有空格
引數說明
-B, –database 需要備份的庫
-T, –tables-list 需要備份的表,多表,用逗號分隔
-o, –outputdir 輸出檔案的目錄
-s, –statement-size 生成插入語句的位元組數, 預設 1000000
-r, –rows 分裂成很多行塊表
-c, –compress 壓縮輸出檔案
-e, –build-empty-files 即使表沒有資料,還是產生一個空檔案
-x, –regex 正規表示式: `db.table`
-i, –ignore-engines 忽略的儲存引擎,用逗號分隔
-m, –no-schemas 不匯出表結構
-k, –no-locks 不執行共享讀鎖 警告:這將導致不一致的備份
-l, –long-query-guard 設定長查詢時間,預設60秒
–kill-long-queries kill掉長時間執行的查詢
-b, –binlogs 匯出binlog
-D, –daemon 啟用守護程式模式
-I, –snapshot-interval dump快照間隔時間,預設60s,需要在daemon模式下
-L, –logfile 日誌檔案
-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
3、mydumper的工作過程
a、連線目標資料庫;
b、通過show processlist來判斷是否有長查詢,根據引數long-query-guard和kill-long-queries決定退出或殺掉長查詢;
c、鎖定myisam表,flush tables with read lock;針對innodb table開啟事務,start transaction;
d、建立worker子執行緒,預設為4個;
e、確定候選表,根據類別分別插入innodb_table,non_innodb_table以及table_schemas連結串列(表結構);
f、將候選表通過g_async_queue_push加入任務佇列(佇列最後元素是thread shutdown),由worker子執行緒從佇列中讀取表資訊並執行資料匯出
g、執行unlock tables,處理完myisam表後立即解鎖,以減少鎖定時間;
h、等待worker退出;
4、備份檔案相關資訊
a、所有的備份檔案在一個目錄中,未指定時為當前目錄, 且自動生成備份日期時間資料夾,如export-20150703-145806
b、目錄中包含一個 metadata 檔案,該檔案記錄了備份時間點的二進位制日誌檔名,日誌的寫入位置
c、如果是在從庫進行備份,還會記錄備份時同步至主庫的二進位制日誌檔案及寫入位置
d、每個表有兩個備份檔案:database.table-schema.sql 表結構檔案,database.table.sql 表資料檔案
e、如果對錶檔案分片,將生成多個備份資料檔案,可以指定行數或指定大小分片
5、常用備份示例:
1 備份單個庫
# mydumper -u 使用者名稱 -p 密碼 -B 需要備份的庫名 -o /tmp/bak
-B,需要備份的庫 -o 輸出檔案的目錄(備份輸出指定的目錄)
2 備份所有資料庫:全庫備份期間除了information_schema與performance_schema之外的庫都會被備份
# mydumper -u 使用者名稱 -p 密碼 -o /tmp/bak
-o 輸出檔案的目錄(備份輸出指定的目錄)
3 備份單表
# mydumper -u 使用者名稱 -p 密碼 -B 庫名 -T 表名 -o /tmp/bak
-T 需要備份的表,多表用逗號分隔 -o指定輸出備份檔案路徑
4 備份多表
# mydumper -u 使用者名稱 -p 密碼 -B 庫名 -T 表1,表2 -o /tmp/bak
5、當前目錄自動生成備份日期時間資料夾,不指定-o引數及值時預設為:export-20150703-145806
mydumper -u 使用者名稱 -p 密碼 -B 資料庫名字 -T 表名
6、不帶表結構備份表
# mydumper -u 使用者名稱 -p 密碼 -B 資料名字 -T 表名 -m
-m 不匯出表結構
7、壓縮備份及連線使用壓縮協議(非本地備份時)
# mydumper -u 使用者名稱 -p 密碼 -B 資料庫名字 -o /tmp/bak -c -C
-c, 壓縮輸出檔案 -C 在mysql連線上使用壓縮協議 -o 輸出檔案的目錄(備份輸出指定的目錄)
8、備份特定表
# mydumper -u 使用者名稱 -p 密碼 -B 資料庫名字 –regex=actor*
-o /tmp/bak
只備份以actor*開頭的表
-x 正規表示式: `db.table` –regex
9、過濾特定庫,如本來不備份mysql及test庫
# mydumper -u 使用者名稱 -p 密碼 -B 資料庫名字 –regex `^(?!(mysql|test))` -o /tmp/bak
10、基於空表產生表結構檔案
# mydumper -u 使用者名稱 -p 密碼 -B 資料庫名字 -T
空表 -e -o /tmp/bak
-e 即使表沒有資料,還是產生一個空檔案
12、備份時輸出詳細更多日誌
# mydumper -u 使用者名稱 -p 密碼 -B 資料庫名字 -T 空表 -v 3 -o /tmp/bak
-v 更多輸出, 0 = silent, 1 = errors, 2 = warnings, 3 = info,詳細輸出 default
2
11、設定長查詢的上限,如果存在比這個還長的查詢則退出mydumper,也可以設定殺掉這個長查詢
#mydumper -u leshami -p pwd -B sakila –long-query-guard 200 –kill-long-queries
13、匯出binlog,使用-b引數,會自動在匯出目錄生成binlog_snapshot資料夾及binlog
# mydumper -u leshami -p pwd -P 3306 -b -o /tmp/bak
http://blog.csdn.net/u010098331/article/details/50896175
http://blog.csdn.net/u010098331/article/details/50896725
http://www.itopers.com/blog/posts/wp/826.html
http://www.cnblogs.com/linuxnote/p/3817698.html
贈送:
三、使用方法
備份出來的sql檔案,檔案以資料庫開頭.表名[-schema].sql,有schema的為表的表結構建立語句,沒有的為表資料插入語句。
[root@mysql.dmc.com bin]$./mydumper --database=tools --outputdir=/root/mydumper-0.6.2/test/ [root@mysql.dmc.com bin]$cd ot/mydumper-0.6.2/test/ [root@mysql.dmc.com test]$ll -rth total 112K -rw-r--r--. 1 root root 972 Jan 2 18:09 tools.django_session.sql -rw-r--r--. 1 root root 1.1K Jan 2 18:09 tools.t_guid.sql -rw-r--r--. 1 root root 423 Jan 2 18:09 tools.t_ftpserver-schema.sql -rw-r--r--. 1 root root 325 Jan 2 18:09 tools.django_session-schema.sql -rw-r--r--. 1 root root 1.6K Jan 2 18:09 tools.t_serverinfo-schema.sql-rw-r--r--. 1 root root 133 Jan 2 18:09 metadata -rw-r--r--. 1 root root 133 Jan 2 18:09 metadata
metadata這個檔案記錄的是當裡的binlog檔案及pos,可以使用這個資訊搭建slave.
[root@mysql.dmc.com test]$cat metadata Started dump at: 2015-01-02 18:09:40 SHOW MASTER STATUS: Log: mysql-bin.000006 Pos: 4196075Finished dump at: 2015-01-02 18:09:40 Finished dump at: 2015-01-02 18:09:40
只備份t_task和t_guid表
[root@mysql.dmc.com bin]$./mydumper --database=tools --outputdir=/root/mydumper-0.6.2/test/ --tables-list=t_task,t_guid
只備份以t_server開通的表
[root@mysql.dmc.com bin]$./mydumper --database=tools --outputdir=/root/mydumper-0.6.2/test/ --regex="tools.t_server*"
-B,–database只能指定一個庫備份,如果需要同時備份多個資料庫,可能這樣:
[root@mysql.dmc.com bin]$./mydumper --outputdir=/root/mydumper-0.6.2/test/ --regex="beebol.*|tools.*"
–threads併發度
[root@mysql.dmc.com bin]$./mydumper --outputdir=/root/mydumper-0.6.2/test/ --regex="beebol.*|tools.*" --threads=8
相關文章
- nginx 詳解 – 詳細配置說明Nginx
- nginx 詳解 - 詳細配置說明Nginx
- (7) MySQL資料庫備份詳解MySql資料庫
- MongoDB資料檔案備份與恢復詳解及實驗說明MongoDB
- Oracle資料庫備份還原詳解XKUSOracle資料庫
- 細說SQL Server資料庫備份方法SQLServer資料庫
- mysql processlist詳細說明MySql
- MySQL資料庫備份工具Mydumper使用介紹MySql資料庫
- mydumper使用詳解
- 資料庫的聚集索引和非聚集索引 很好的詳細說明資料庫索引
- mysqldump引數詳細說明MySql
- mysql replace into用法詳細說明MySql
- redis info命令詳細說明Redis
- Emacs詳細使用說明(轉)Mac
- memset函式詳細說明函式
- winscp操作說明,winscp操作說明的詳細解讀
- PHP擴充套件資料庫連線引數說明詳解PHP套件資料庫
- Mysqldump備份說明及資料庫備份指令碼分享-運維筆記MySql資料庫指令碼運維筆記
- Flask-Limit使用詳細說明FlaskMIT
- Linux sed命令詳細說明Linux
- VNC安裝配置詳細說明VNC
- Nginx配置檔案詳細說明Nginx
- CocoaPods | iOS詳細使用說明iOS
- session的詳細說明和用法Session
- 總帳介面表詳細說明
- asp.net連線資料庫(SQL Server 2005 Express)詳細說明ASP.NET資料庫SQLServerExpress
- 深圳企業辦理等保備案流程詳細說明
- 【備份工具】mydumper
- Linux 硬碟克隆備份詳細圖解(轉)Linux硬碟圖解
- RMAN 備份詳解
- RMAN備份詳解
- Mysqlbackup 備份詳解MySql
- -- RMAN備份詳解
- 流量控制工具TC詳細說明
- sql server系統表詳細說明SQLServer
- mysql uninstall plugins 詳細說明MySqlPlugin
- jpa 方法 命名規則 詳細說明
- ORACLE中採用rman備份異機恢復資料庫詳細過程Oracle資料庫