MySQLDump的備份方法

大雄45發表於2021-08-12
導讀 mysqldump 是日常比較常用的一個工具了,在對資料庫進行匯出工作時,經常會用到 mysqldump 。本篇文章將介紹 mysqldump 工具的使用方法並分享幾點備份技巧。

MySQLDump的備份方法MySQLDump的備份方法

mysqldump使用簡介

mysqldump 是 MySQL 系統自帶的邏輯備份工具,主要用於轉儲資料庫。它主要產生一系列的 SQL 語句,可以封裝到檔案,該檔案包含重建資料庫所需要的 SQL  如 CREATE DATABASE ,CREATE TABLE ,INSERT 等等。當我們需要還原這些資料時,只需要執行此檔案,即可將對應的資料還原。

mysqldump 基礎使用語法如下:

Usage: mysqldump [OPTIONS] database [tables] 
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] 
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]

執行 mysqldump --help 或參考 MySQL 官方文件,我們發現 mysqldump 工具可配置的引數有很多,以下簡要說明部分常用的引數。

MySQLDump的備份方法MySQLDump的備份方法

上表展示了一些常見的 mysqldump 相關選項,當你不瞭解某個引數的作用時,可以執行 mysqldump --help 來獲取幫助。對於布林型別的引數,一般還存在一個與之對立的引數,如 --triggers 預設開啟,可以使用 --skip-triggers 來禁用它。

幾點備份小技巧

雖然 mysqldump 不太適用於大資料量的備份,但因其具有靈活方便、可根據場景定製引數等優點,還是被廣泛應用在資料匯出領域。

筆者根據自己的使用經驗,簡單分享幾點 mysqldump 備份小技巧:

  • 建議使用 --single-transaction 引數來獲得一致性備份,減少鎖表。
  • 按需求來匯出,只要自己想要的資料,儘量減少匯出檔案大小。
  • 若想用於搭建從庫,建議使用 --master-data = 2 引數記錄主庫 binlog 資訊。
  • 若想備份儲存過程、自定義函式及事件,請加 -R -E 引數,此二者預設不開啟。
  • 不瞭解的引數不要隨意加,按預設即可。
  • 下面分享幾個不同場景下的 mysqldump 使用方法:

# 備份全部資料庫(包含儲存過程、自定義函式及事件) 
mysqldump -uroot -pxxxxxx --single-transaction -R -E --all-databases > /tmp/all_database.sql 
 
# 要求記錄 binlog 位點資訊 可用於搭建從庫 
mysqldump -uroot -pxxxxxx --single-transaction -R -E --all-databases --master-data=2 > /tmp/all_database.sql 
 
# 備份指定資料庫 
mysqldump -uroot -pxxxxxx --single-transaction -R -E --databases db1 > /tmp/db1.sql 
mysqldump -uroot -pxxxxxx --single-transaction -R -E --databases db1 db2 > /tmp/db1_db2.sql 
 
# 備份部分表 
mysqldump -uroot -pxxxxxx --single-transaction db1 tb1 > /tmp/tb1.sql 
mysqldump -uroot -pxxxxxx --single-transaction db1 tb1 tb2 tb3 > /tmp/tb.sql 
 
# 匯出某個表,資料以單行insert顯示 
mysqldump -uroot -pxxxxxx --single-transaction --skip-extended-insert db1 tb1 > /tmp/tb1.sql 
 
# 匯出單表的部分資料 
mysqldump -uroot -pxxxxxx --single-transaction db1 tb1 --where=" create_time >= '2021-06-01 00:00:00' " > /tmp/tb1.sql 
mysqldump -uroot -pxxxxxx --single-transaction db1 tb1 --where='id < 10' > /tmp/tb1.sql 
 
# 排除某些表匯出 
mysqldump -uroot -pxxxxxx --single-transaction --databases db1 --ignore-table=db1.tb1 --ignore-table=db1.tb2 > /tmp/db1.sql 
 
# 只匯出結構或只匯出資料 
mysqldump -uroot -pxxxxxx db1 --no-data > /tmp/db1_jiegou.sql 
mysqldump -uroot -pxxxxxx db1 --no-create-info > /tmp/db1_data.sql 
 
# 只匯出某個庫的儲存過程及自定義函式 
mysqldump -uroot -pxxxxxx -d -t -R db1 > /tmp/db1_routine.sql 
 
# 遠端匯出 即MySQL服務端不在本地 
mysqldump -uroot -pxxxxxx -hxxx.xxx.xx -P3306 --single-transaction --databases db1 > /tmp/db1.sql
總結

本篇文章主要介紹了 mysqldump 工具的使用方法及一些常見場景。mysqldump 作為一個實用工具,希望各位都能上手學習下,比用 Navicat 等圖形化介面匯出更快速,且檔案體積小。

原文來自:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2783917/,如需轉載,請註明出處,否則將追究法律責任。

相關文章