mysql 資料庫備份的多種實現方式總結
本文例項講述了mysql 資料庫備份的多種實現方式。分享給大家供大家參考,具體如下:
一、使用mysqldump進行備份
1、完整備份所有資料庫
mysqldump -u root -p --all-databases > E:/all.sql
在mysql8之前,儲存過程和事件儲存在mysql.proc和mysql.event表中。
從mysql8開始,相應物件的定義儲存在資料字典中,這些表不會被備份。
要將儲存過程和事件也包含,請使用如下語句:
mysqldump -u root -p --all-databases --routines --events > E:/all.sql
2、時間點恢復
要獲得時間點恢復,應該指定--single-transaction 和 --master-data
--single-transaction 在備份之前,會將事務隔離級別設為REPEATABLE READ模式,並執行 START TRANSACTION 來提供一致的備份。
--master-data 將伺服器的二進位制日誌的位置輸出到 sql 檔案。
mysqldump -u root -p --all-databases --routines --events --single-transaction --master-data > E:/all.sql
--master-data = 2表示在匯出過程中,記錄當前庫的binlog和pos點,並在匯出檔案中註釋這一行。
--master-data = 1表示在匯出過程中,記錄當前庫的binlog和pos點,並在匯出檔案中不註釋這一行。
3、在從庫匯出時,記錄主庫的二進位制日誌位置
mysqldump -u root -p --all-databases --routines --events --single-transaction --dump-slave > E:/all.sql
--dump-slave = 2表示在匯出過程中,記錄主庫的binlog和pos點,並在匯出檔案中註釋這一行。
--dump-slave = 1表示在匯出過程中,記錄主庫的binlog和pos點,並在匯出檔案中不註釋這一行。
4、指定資料庫和表匯出
mysqldump -u root -p --databases 資料庫 > E:/bak.sql mysqldump -u root -p --databases 資料庫 --tables 資料表 > E:/bak.sql
5、忽略表
mysqldump -u root -p --databases 資料庫 --ignore-table=資料庫.資料表 > E:/bak.sql
6、指定行
mysqldump -u root -p --databases 資料庫 --tables 資料表 --where="條件" > E:/bak.sql
或者用limit限制結果集
mysqldump -u root -p --databases 資料庫 --tables 資料表 --where="條件 LIMIT 條數" > E:/bak.sql
7、匯出遠端伺服器
mysqldump -u root -p -h 主機IP --all-databases --routines --events --triggers > E:/all.sql
8、用於與其他伺服器合併資料的備份
mysqldump -u root -p --databases 資料庫 --skip-add-drop-table --replace > E:/bak.sql
--skip-add-drop-table: 不會將drop table語句寫入匯出檔案中。
--replace:將使用replace into語句而不是insert語句匯出。
二、使用mysqlpump進行備份
1、並行處理,通過指定執行緒數量加速備份過程
mysqlpump --default-parallelism=8 > E:/all.sql
2、也可以指定每個資料庫的執行緒數
mysqlpump -u root -p --parallel-schemas=4:資料庫 --default-parallelism=2 > E:/all.sql
3、排除或包含資料庫
mysqlpump -u root -p --include-databases=%t > E:/bak.sql
對以 t 結尾的所有資料庫進行備份,多個數據庫用逗號分隔,資料庫名可以使用%或_萬用字元。
除此之外,還有類似--include-events,--include-routines,--include-tables,--include-triggers,--include-users等
mysqlpump -u root -p --exclude-databases=a% > E:/bak.sql
排除以 a 開頭的資料庫進行備份,多個數據庫用逗號分隔,資料庫名可以使用%或_萬用字元。
除此之外,還有類似--exclude-events,--exclude-routines,--exclude-tables,--exclude-triggers,--exclude-users等
4、備份使用者
mysqlpump -u root -p --exclude-databases=% --users > E:/user.sql
可以通過--exclude-users來排除某些使用者
mysqlpump --exclude-databases=% --exclude-users=root --users > E:/user.sql
5、壓縮備份
通過使用--compress-output = lz4 或 --compress-output = zlib
mysqlpump -u root -p --compress-output=lz4 > E:/all.lz4 mysqlpump -u root -p --compress-output=zlib > E:/all.zlib
通過如下語句進行解壓
lz4_decompress E:/all.lz4 all.sql zlib_decompress E:/all.zlib all.sql
三、使用mydumper進行備份
mydumper需要單獨安裝,官網:https://github.com/maxbube/mydumper/releases
1、完全備份
mydumper -u root --password=密碼 --outputdir 匯出路徑
2、備份單獨的表
mydumper -u root --password=密碼 -B 資料庫 -T 資料表 --triggers --events --routines --outputdir 匯出路徑
3、使用正則表示式來備份特定資料庫
mydumper -u root --passoword=密碼 --regex '^(?!(mysql|test))' --outputdir 匯出路徑
從備份中排除mysql和test資料庫。
4、備份大表
mydumper -u root --password=密碼 -B 資料庫 -T 資料表 --triggers --events --routines --rows=100000 -t 8 --trx-consistency-only --outputdir 匯出路徑
--rows 表示將表分成多少行的塊
--trx-consistency-only 如果是innodb,將使鎖定最小化。
-t 指定執行緒數量
5、壓縮備份
mydumper -u root --password=密碼 -B 資料庫 -T 資料表 -t 8 --trx-consistency-only --compress --outputdir 匯出路徑
6、僅備份資料
通過--no-schemas選項來跳過 schema 並且僅備份資料
mydumper -u root --password=密碼 -B 資料庫 -T 資料表 -t 8 --no-schemas --compress --trx-consistency-only --outputdir 匯出路徑
四、使用普通檔案進行備份
可以通過直接複製資料目錄中的檔案來進行備份,需先關閉mysql,複製檔案,然後啟動mysql。
五、使用xtrabackup進行備份
https://www.percona.com/downloads/XtraBackup/LATEST/
1、全量備份
xtrabackup --defaults-file=/etc/my.cnf --host=主機IP --user=使用者名稱 --password=密碼 --port=埠 --backup --parallel=3 --target-dir=備份目錄
--defaults-file 資料庫配置檔案
--backup 執行備份操作
--parallel 備份時併發的執行緒數
--target-dir 備份檔案的目錄
2、增量備份
xtrabackup --defaults-file=/etc/my.cnf \
--host=主機IP \
--user=使用者名稱 \
--password=密碼 \
--port=3306 \
--backup \
--parallel=3 \
--target-dir=增量備份目錄 \
--incremental-basedir=全量備份目錄 \
增量備份是基於全量備份的,--incremental-basedir 指向全量備份目錄
更多關於MySQL相關內容感興趣的讀者可檢視本站專題:《MySQL索引操作技巧彙總》、《MySQL常用函式大彙總》、《MySQL日誌操作技巧大全》、《MySQL事務操作技巧彙總》、《MySQL儲存過程技巧大全》及《MySQL資料庫鎖相關技巧彙總》
希望本文所述對大家MySQL資料庫計有所幫助。