MySQL資料備份多種引數介紹及簡單示例
上篇文章中,我們介紹了幾種 MySQL 資料備份方式的原理,本文我們將和大家來共同探討這些資料備份方式如何來使用。關於資料備份的使用攻略,各路大神都有示例文章,本文對此做了簡單的總結和彙總。
Mysqldump
Mysqldump 是 MySQL 自帶的很好用的備份工具,常用於 MySQL 資料庫的邏輯備份,將 MySQL 伺服器中的資料庫以標準的 sql 語言的方式匯出,並儲存到檔案中。其語法為: mysqldump (選項)。
常用的語法有:
--add-drop-table :在每個建立資料庫表語句前新增刪除資料庫表的語句;
--add-locks :備份資料庫表時鎖定資料庫表;
--all-databases :備份 MySQL 伺服器上的所有資料庫;
--comments :新增註釋資訊;
--compact :壓縮模式,產生更少的輸出;
--complete-insert :輸出完成的插入語句;
--databases :指定要備份的資料庫;
--default-character-set :指定預設字符集;
--force :當出現錯誤時仍然繼續備份操作;
--host :指定要備份資料庫的伺服器;
--lock-tables :備份前,鎖定所有資料庫表;
--no-create-db :禁止生成建立資料庫語句;
--no-create-info :禁止生成建立資料庫庫表語句;
--password :連線 MySQL 伺服器的密碼;
--port : MySQL 伺服器的埠號;
--user :連線 MySQL 伺服器的使用者名稱。
資料備份的簡單例項:
mysqldump 匯出整個資料庫 :
mysqldump -u 使用者名稱 -p 資料庫名 > 匯出的檔名
例: mysqldump -u linuxde -p smgp_apps_linuxde > linuxde.sql
mysqldump 匯出一個表
mysqldump -u 使用者名稱 -p 資料庫名 表名 > 匯出的檔名
例: mysqldump -u linuxde -p smgp_apps_linuxde users > linuxde_users.sql
mysqldump 匯出一個資料庫結構
mysqldump -u linuxde -p -d --add-drop-table smgp_apps_linuxde > linuxde_db.sql
Mydumper
mydumper
是
MySQL
資料庫備份的一個輕量級第三方開源工具,備份方式為邏輯備份,支援多執行緒,備份速度遠高於原生態的
mysqldump
。用法為:
mydumper [OPTION...] multi-threaded MySQL dumping
常用的語法:
-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 日誌檔案
-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
資料備份的簡單示例
1 備份單個庫
# mydumper -u 使用者名稱 -p 密碼 -B 需要備份的庫名 -o /tmp/bak
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 資料庫名字 --regex=actor* -o /tmp/bak
只備份以actor*開頭的表
Xtrabackup
前兩種工具都是邏輯備份,而Xtrabackup是物理備份,是商業備份工具InnoDB Hotbackup的替代品,包含的兩個主要工具分別是xtrabackup和innobackupex。其中xtrabackup只能備份innodb和xtradb兩種引擎的表,而不能備份myisam引擎的表,而innobackupex是一個封裝了xtrabackup的Perl指令碼,可同時備份innodb和myisam,但在對myisam備份時需要加一個全域性的讀鎖,且myisam不支援增量備份。
另外,還有兩個相對比較小眾的工具分別是xbcrypt和xbstream ,xbcrypt是加解密用的,xbstream 類似於tar,是 Percona 自己實現的一種支援併發寫的流檔案格式。
常用的引數
1) innobackupex 引數選項
--defaults-file=[MY.CNF] //指定配置檔案:只能從給定的檔案中讀取預設選項。 且必須作為命令列上的第一個選項;必須是一個真實的檔案,它不能是一個符號連結。
--databases=# //指定備份的資料庫和表,格式為:--database="db1[.tb1] db2[.tb2]" 多個庫之間以空格隔開,如果此選項不被指定,將會備份所有的資料庫。
--include 傳遞給 xtrabackup --tables。
--tables-file=FILE //此選項的引數需要是一個檔名,此檔案中每行包含一個要備份的表的完整名稱,格式為databasename.tablename。該選項傳遞給 xtrabackup --tables-file,與--tables選項不同,只有要備份的表的庫才會被建立。
--compact //建立緊湊型備份,忽略所有輔助索引頁,只備份data page;通過--apply-log中重建索引--rebuild-indexs。
--compress //此選項指示xtrabackup壓縮備份的InnoDB資料檔案,會生成 *.qp 檔案。
--decompress //解壓縮qp檔案,為了解壓縮,必須安裝 qpress 工具。
--no-timestamp //指定了這個選項備份將會直接儲存在 BACKUP-DIR 目錄,不再建立時間戳資料夾。
想檢視更多的引數,請戳:
https://www.percona.com/doc/perconaxtrabackup/2.4/innobackupex/innobackupex_option_reference.html
2) xtrabackup 引數選項
--apply-log-only //這個選項使在準備備份(prepare)時,只執行重做(redo)階段,這對於增量備份非常重要。
--backup //進行備份並將其放入
--check-privileges //此選項檢查Percona XtraBackup是否具有所有必需的許可權。
--compact //跳過輔助索引頁來建立壓縮備份。
想檢視更多的引數,請戳:
https://www.percona.com/doc/percona-xtrabackup/LATEST/xtrabackup_bin/xbk_option_reference.html
資料備份的簡單示例
innobackupex完全備份
#備份所有資料庫:備份目錄裡生成日期命名的資料夾
innobackupex --defaults-file=/etc/mysql/my.cnf --user=root --password=123 /home/zhoujy/xtrabackup/
#備份所有資料庫:指定備份目錄
innobackupex --defaults-file=/etc/mysql/my.cnf --user=root --password=123 --no-timestamp /home/zhoujy/xtrabackup/
#備份指定資料庫名,多個資料庫用空格分開
innobackupex --defaults-file=/etc/mysql/my.cnf --user=root --password=123 --no-timestamp --databases="dba_test xtra_test" /home/zhoujy/xtrabackup/
#備份指定表
備份不同庫下的不同表
1:innobackupex --defaults-file=/etc/mysql/my.cnf --user=root --password=123 --no-timestamp --databases="dba_test.tb1 xtra_test.M" /home/zhoujy/xtrabackup/
備份一個庫下面的表,支援正則,如:--include='^mydatabase[.]mytable'
2:innobackupex --defaults-file=/etc/mysql/my.cnf --user=root --password=123 --no-timestamp --include='xtra_test.I' /home/zhoujy/xtrabackup/
備份指定檔案裡的表,檔案裡每行的格式是:dbname.tbname
3:innobackupex --defaults-file=/etc/mysql/my.cnf --user=root --password=123 --no-timestamp --tables-file=/tmp/tbname.txt /home/zhoujy/xtrabackup/
innobackupex 增量備份
#全量備份,這裡舉例單個表,也可以是指定幾個庫,甚至所有庫
innobackupex --defaults-file=/etc/mysql/my.cnf --user=root --password=123 --no-timestamp --databases="xtra_test.I" /home/zhoujy/xtrabackup/
#增量備份1
innobackupex --defaults-file=/etc/mysql/my.cnf --user=root --password=123 --no-timestamp --databases="xtra_test.I" --incremental-basedir=/home/zhoujy/xtrabackup/ --incremental /home/zhoujy/increment_data/
#增量備份2
innobackupex --defaults-file=/etc/mysql/my.cnf --user=root --password=123 --no-timestamp --databases="xtra_test.I" --incremental-basedir=/home/zhoujy/increment_data/ --incremental /home/zhoujy/increment_data1/
Xtrabackup全量備份
1:指定--defaults-file
xtrabackup --defaults-file=/etc/mysql/my.cnf --user=root --password=123 --backup --target-dir=/home/zhoujy/xtrabackup/
2:用--datadir取代--defaults-file
xtrabackup --user=root --password=123 --backup --datadir=/var/lib/mysql/ --target-dir=/home/zhoujy/xtrabackup/
Xtrabackup增量備份
#備份,這裡指定幾個庫和表,也可以是所有庫
1:庫全量備份
xtrabackup --user=root --password=123 --datadir=/var/lib/mysql/ --backup --parallel=3 --databases="xtra_test dba_test" --target-dir=/home/zhoujy/xtrabackup/
2:增量備份
xtrabackup --user=root --password=123 --datadir=/var/lib/mysql/ --backup --parallel=3 --databases="xtra_test dba_test" --target-dir=/home/zhoujy/xtrabackup1/ --incremental-basedir=/home/zhoujy/xtrabackup/
注意:要是有多個增量備份,第2個增量需要指定第一個增量的目錄。和innobackupex一樣。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31137683/viewspace-2213717/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Docker(3):Dockerfile介紹及簡單示例Docker
- 初探MySQL資料備份及備份原理MySql
- MySql連線資料庫常用引數及程式碼示例MySql資料庫
- 簡單介紹mysql中資料庫覆蓋匯入的幾種方式MySql資料庫
- 簡單介紹MySQL索引失效的幾種情況MySql索引
- .net持續整合cake篇之cake介紹及簡單示例
- Mysql資料庫備份及恢復MySql資料庫
- 【手摸手玩轉 OceanBase 172】清理備份相關引數介紹
- Flownet 介紹 及光流的簡單介紹
- MySql資料庫備份的幾種方式MySql資料庫
- 簡單介紹MySQL開啟事務的兩種方式MySql
- MySQL資料備份MySql
- mysql一些引數的介紹MySql
- CSRF簡單介紹及利用方法
- Lucene介紹及簡單應用
- MySQL日誌引數配置簡介MySql
- impdp和expdp用法及引數介紹
- mysql 資料庫 備份MySql資料庫
- Mysql資料安全備份MySql
- MySQL 資料庫定時備份的幾種方式MySql資料庫
- 簡單介紹nginx 變數使用Nginx變數
- [譯]WebAssembly: 帶有程式碼示例的簡單介紹Web
- 簡單介紹Go 字串比較的實現示例Go字串
- 簡單介紹nginx反向代理及使用Nginx
- netcat 命令介紹及使用示例
- 免費個人資料備份軟體介紹:FreeFileSync、Syncthing
- 【mysqldump】mysqldump及備份恢復示例MySql
- 對GaussDB資料庫和資料管理的簡單介紹資料庫
- MYSQL資料匯出備份、匯入的幾種方式MySql
- innobackupex 備份MySQL資料庫MySql資料庫
- 簡單介紹Python drop方法刪除列之inplace引數例項Python
- 簡單介紹2種Java讀取Oracle大欄位資料(CLOB)的方法JavaOracle
- 簡單介紹SpringSecurity框架簡介及與shiro特點對比SpringGse框架
- SQL WHERE IN引數化編譯寫法簡單示例SQL編譯
- 【Xtrabackup】Xtrabackup全備、增量備份及恢復示例
- 達夢資料庫執行緒簡單介紹資料庫執行緒
- mysql備份時候兩個很有用的引數MySql
- 簡單介紹下各種 JavaScript 解析器JavaScript