共計(jì) 8266 個(gè)字符,預(yù)計(jì)需要花費(fèi) 21 分鐘才能閱讀完成。
這篇文章給大家介紹如何理解 mysqldump 備份數(shù)據(jù)庫,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
mysqldump 用于導(dǎo)出 mysql 數(shù)據(jù)庫的結(jié)構(gòu)和數(shù)據(jù)。
Usage: mysqldump [OPTIONS] database [tables] #導(dǎo)表
OR mysqldump [OPTIONS] –databases [OPTIONS] DB1 [DB2 DB3…] #導(dǎo)庫
OR mysqldump [OPTIONS] –all-databases [OPTIONS]
默認(rèn)選項(xiàng)按照給定順序從以下文件讀取:
/etc/my.cnf /etc/mysql/my.cnf /u01/app/mysql/my.cnf ~/.my.cnf
The following groups are read: mysqldump client
The following options may be given as the first argument:
–print-defaults 打印程序參數(shù)列表并退出。
–no-defaults 不要從任何選項(xiàng)文件讀取默認(rèn)選項(xiàng)。
–defaults-file=# 只讀從給定文件的默認(rèn)選項(xiàng) #.
–defaults-extra-file=# 讀取全局文件后讀取此文件.
-A, –all-databases 導(dǎo)出所有數(shù)據(jù)庫. 這和 –databases 選擇所有數(shù)據(jù)庫相同
-Y, –all-tablespaces 導(dǎo)出所有表空間
-y, –no-tablespaces 不轉(zhuǎn)儲任何表空間信息.
–add-drop-database 在每次創(chuàng)建之前添加一個(gè) DROP DATABASE.
–add-drop-table 在每次創(chuàng)建之前添加 DROP TABLE.(默認(rèn)開啟,使用 –skip-add-drop-table 將其禁用)
–add-locks 在 INSERT 語句周圍添加鎖定.(默認(rèn)開啟,使用 –skip-add-locks 將其禁用 )
–allow-keywords 允許創(chuàng)建作為關(guān)鍵字的列名稱.
–apply-slave-statements 在“CHANGE MASTER”和“START SLAVE”之前添加“STOP SLAVE”到轉(zhuǎn)儲底部。
–character-sets-dir=name 文件名錄的字符集
-i, –comments 注釋信息 (默認(rèn)開啟,使用 –skip-comments 將其禁用)
–compatible=name 將轉(zhuǎn)儲更改為與給定模式兼容。默認(rèn)情況下,表以適合 MySQL 的格式轉(zhuǎn)儲。合法的模式是:ansi,mysql323,mysql40,postgresql,oracle,mssql,db2,maxdb,no_key_options,no_table_options,no_field_options。可以使用由逗號分隔的幾種模式。注意:需要 MySQL 服務(wù)器版本 4.1.0 或更高版本。早期服務(wù)器版本將忽略此選項(xiàng)。
–compact 減少輸出(適用于調(diào)試)。禁用結(jié)構(gòu)注釋和頁眉 / 頁腳結(jié)構(gòu)。啟用選項(xiàng) –skip-add-drop-table –skip-add-locks –skip-comments –skip-disable-keys –skip-set-charset。
-c, –complete-insert 使用完整的 insert 語句
-C, –compress 在服務(wù)器 / 客戶端協(xié)議中使用壓縮。
-a, –create-options 包括所有 MySQL 特定的創(chuàng)建選項(xiàng)(默認(rèn)為 on; 使用 –skip-create-options 禁用)。
-B, –databases 轉(zhuǎn)儲幾個(gè)數(shù)據(jù)庫。所有名稱參數(shù)都被視為數(shù)據(jù)庫名稱。
-#, –debug[=#] 這是一個(gè)非調(diào)試版本。捕捉這個(gè)并退出。
–debug-check 檢查內(nèi)存并在退出時(shí)打開文件使用情況。
–debug-info 在退出時(shí)打印一些調(diào)試信息。
–default-character-set=name 設(shè)置默認(rèn)字符集。
–delayed-insert 使用 INSERT DELAYED 插入行。
–delete-master-logs 在備份后刪除主服務(wù)器上的日志。這會自動啟用 –master-data。
-K, –disable-keys /*!40000 ALTER TABLE tb_name DISABLE KEYS */; and
/*!40000 ALTER TABLE tb_name ENABLE KEYS */; will be put
in the output.
–dump-slave[=#] (默認(rèn)為 on; 使用 –skip-disable-keys 禁用。)這將導(dǎo)致主站的二進(jìn)制日志位置和文件名附加到轉(zhuǎn)儲數(shù)據(jù)輸出。將值設(shè)置為 1,將在轉(zhuǎn)儲數(shù)據(jù)輸出中作為 CHANGE MASTER 命令打印; 如果等于 2,該命令將以注釋符號作為前綴。該選項(xiàng)將打開 –lock-all-tables,除非指定了 –single-transaction(在這種情況下,全局讀鎖定只在轉(zhuǎn)儲開始時(shí)進(jìn)行一小段時(shí)間 – 不要忘記閱讀 –single-transaction 下面)。在所有情況下,對日志的任何操作將發(fā)生在 dump 的確切時(shí)刻.Option 會自動關(guān)閉 – 鎖定表。
-E, –events 轉(zhuǎn)儲事件。
-e, –extended-insert 使用包含多個(gè) VALUES 列表的多行 INSERT 語法(默認(rèn)為 on; 使用 –skip-extended-insert 禁用)。
–fields-terminated-by=name 終止符
–fields-enclosed-by=name 分隔符
–fields-optionally-enclosed-by=name 字段可選分隔符
–fields-escaped-by=name 轉(zhuǎn)義字符
-F, –flush-logs 在開始轉(zhuǎn)儲之前,刷新服務(wù)器中的日志文件。請注意,如果一次轉(zhuǎn)儲許多數(shù)據(jù)庫(使用選項(xiàng) –databases = 或 –all-databases),則將為每個(gè)轉(zhuǎn)儲的數(shù)據(jù)庫刷新日志。例外情況:使用 –lock-all-tables 或 –master-data:在這種情況下,日志將只刷新一次,對應(yīng)于所有表被鎖定的時(shí)刻。所以如果你想要你的轉(zhuǎn)儲和日志刷新發(fā)生在同一個(gè)確切的時(shí)刻,你應(yīng)該使用 –lock-all-tables 或 –master-data 和 –flush-logs。
–flush-privileges 在轉(zhuǎn)儲 mysql 數(shù)據(jù)庫后發(fā)出 FLUSH PRIVILEGES 語句。該選項(xiàng)應(yīng)該在任何時(shí)候使用轉(zhuǎn)儲包含 mysql 數(shù)據(jù)庫和任何其他數(shù)據(jù)庫依賴 mysql 數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行正確還原。
-f, –force 即使錯誤也繼續(xù)執(zhí)行
-?, –help 查看幫助信息
–hex-blob 以十六進(jìn)制轉(zhuǎn)儲二進(jìn)制文件
-h, –host=name 連接主機(jī)
–ignore-table=name 不備份指定的表。要指定要忽略的多個(gè)表,請多次使用指令,每個(gè)表使用一次。每個(gè)表必須同時(shí)指定數(shù)據(jù)庫和表名,例如,– ignore-table = database.table。
–include-master-host-port 在使用 –dump-slave 生成的轉(zhuǎn)儲中添加 MASTER_HOST = host,MASTER_PORT = port 到 CHANGE MASTER TO ..。
–insert-ignore 使用 INSERT IGNORE 插入行。
–lines-terminated-by=name 行終止符
-x, –lock-all-tables 備份期間鎖定所有表,通過添加全局鎖來實(shí)現(xiàn)。會自動關(guān)閉 –single-transaction 和 –lock-tables off.
-l, –lock-tables 鎖定所有表(默認(rèn)開啟,使用 –skip-lock-tables 禁用)
–log-error=name 錯誤日志文件
–master-data[=#] 這將導(dǎo)致二進(jìn)制日志位置和文件名附加到輸出。如果等于 1,將其作為 CHANGE MASTER 命令打印; 如果等于 2,該命令將以注釋符號作為前綴。此選項(xiàng)將打開 –lock-all-tables,除非指定了 –single-transaction(在這種情況下,全局讀鎖定只在轉(zhuǎn)儲開始時(shí)進(jìn)行很短的時(shí)間; 不要忘記閱讀 –single-transaction)。在所有情況下,對日志的任何操作都將發(fā)生在轉(zhuǎn)儲的確切時(shí)刻。選項(xiàng)自動關(guān)閉 –lock-tables。
–max-allowed-packet=# 發(fā)送到服務(wù)器或從服務(wù)器接收的最大包長度。
–net-buffer-length=# 用于 TCP / IP 和套接字通信的緩沖區(qū)大小。
–no-autocommit 使用 autocommit / commit 語句來封裝表。
-n, –no-create-db 不使用 CREATE DATABASE … IF EXISTS 語句,如果給出 –all-databases 或 –databases,則通常為每個(gè)轉(zhuǎn)儲的數(shù)據(jù)庫輸出。
-t, –no-create-info 不寫表的信息
-d, –no-data 不導(dǎo)出數(shù)據(jù)
-N, –no-set-names 不設(shè)置字符集,與 –skip-set-charset 一樣
–opt 與 –add-drop-table, –add-locks, –create-options,–quick, –extended-insert, –lock-tables, –set-charset,and –disable-keys. Enabled by default, disable with–skip-opt 一樣.
–order-by-primary 如果存在主鍵或者唯一鍵,則按此類鍵進(jìn)行排序。在轉(zhuǎn)儲從 MyISAM 到 InnoDB 表會很有用,但會使轉(zhuǎn)儲本身需要更長的時(shí)間。
-p, –password[=name] 密碼
-P, –port=# 連接端口
–protocol=name 連接協(xié)議 (tcp, socket, pipe,
memory).
-q, –quick 不要緩沖查詢,直接轉(zhuǎn)儲到 stdout(默認(rèn)為 on; 使用 –skip-quick 禁用)。
-Q, –quote-names 引號表和帶有反引號(`)的列名(默認(rèn)為 on; 使用 –skip-quote-names 禁用)。
–replace 使用 REPLACE INTO 而不是 INSERT INTO。
-r, –result-file=name 直接輸出到給定文件。此選項(xiàng)應(yīng)在使用回車換行對(\ r \ n)分隔文本行的系統(tǒng)(例如,DOS,Windows)中使用。此選項(xiàng)確保只使用單個(gè)換行符。
-R, –routines 轉(zhuǎn)儲存儲例程(函數(shù)和過程)。
–set-charset 將“SET NAMES default_character_set”添加到輸出。(默認(rèn)為 on; 使用 –skip-set-charset 禁用)。
–single-transaction 通過在單個(gè)事務(wù)中轉(zhuǎn)儲所有表來創(chuàng)建一致的快照。僅適用于存儲在支持多版本的存儲引擎中的表(當(dāng)前只有 InnoDB); 轉(zhuǎn)儲不保證對于其他存儲引擎是一致的。當(dāng)單事務(wù)轉(zhuǎn)儲正在進(jìn)行時(shí),為了確保有效的轉(zhuǎn)儲文件(正確的表內(nèi)容和二進(jìn)制日志位置),沒有其他連接應(yīng)該使用以下語句:ALTER TABLE,DROP TABLE,RENAME TABLE,TRUNCATE TABLE,as 一致的快照不與它們隔離。選項(xiàng)自動關(guān)閉 –lock-tables.
–dump-date 將轉(zhuǎn)儲日期放在輸出結(jié)尾。(默認(rèn)開啟; 使用 –skip-dump-date 禁用.)
–skip-opt 禁用 –opt. Disables –add-drop-table, –add-locks,
–create-options, –quick, –extended-insert,
–lock-tables, –set-charset, and –disable-keys.
-S, –socket=name 連接用的 socket
-T, –tab=name 為每個(gè)給定路徑的表創(chuàng)建制表符分隔的文本文件。(創(chuàng)建.sql 和.txt 文件。)注意:這僅在 mysqldump 在與 mysql 服務(wù)器相同的機(jī)器上運(yùn)行時(shí)才有效。
–tables 覆蓋選項(xiàng) –databases(-B)。
–triggers 轉(zhuǎn)儲每個(gè)轉(zhuǎn)儲表的觸發(fā)器.(默認(rèn)為 on; 使用 –skip-triggers 禁用)。
–tz-utc SET TIME_ZONE = 轉(zhuǎn)儲頂部的 + 00:00,以便當(dāng)服務(wù)器在不同時(shí)區(qū)中的數(shù)據(jù)在不同時(shí)區(qū)的服務(wù)器之間移動時(shí)允許轉(zhuǎn)儲 TIMESTAMP 數(shù)據(jù)(默認(rèn)為 on; use –skip- tz-utc 禁用。)
-u, –user=name 用戶名.
-v, –verbose 打印各個(gè)階段的信息.
-V, –version 輸出版本信息并退出。
-w, –where=name 導(dǎo)出查詢條件中的數(shù)據(jù)
-X, –xml 使用 XML 格式
–plugin-dir=name 客戶端插件目錄
–default-auth=name 使用的默認(rèn)認(rèn)證客戶端插件。
Variables (–variable-name=value)
and boolean options {FALSE|TRUE} Value (after reading options)
——————————— —————————————-
all-databases FALSE
all-tablespaces FALSE
no-tablespaces FALSE
add-drop-database FALSE
add-drop-table TRUE
add-locks TRUE
allow-keywords FALSE
apply-slave-statements FALSE
character-sets-dir (No default value)
comments TRUE
compatible (No default value)
compact FALSE
complete-insert FALSE
compress FALSE
create-options TRUE
databases FALSE
debug-check FALSE
debug-info FALSE
default-character-set utf8
delayed-insert FALSE
delete-master-logs FALSE
disable-keys TRUE
dump-slave 0
events FALSE
extended-insert TRUE
fields-terminated-by (No default value)
fields-enclosed-by (No default value)
fields-optionally-enclosed-by (No default value)
fields-escaped-by (No default value)
flush-logs FALSE
flush-privileges FALSE
force FALSE
hex-blob FALSE
host (No default value)
include-master-host-port FALSE
insert-ignore FALSE
lines-terminated-by (No default value)
lock-all-tables FALSE
lock-tables TRUE
log-error (No default value)
master-data 0
max-allowed-packet 25165824
net-buffer-length 1046528
no-autocommit FALSE
no-create-db FALSE
no-create-info FALSE
no-data FALSE
order-by-primary FALSE
port 0
quick TRUE
quote-names TRUE
replace FALSE
routines FALSE
set-charset TRUE
single-transaction FALSE
dump-date TRUE
socket (No default value)
tab (No default value)
triggers TRUE
tz-utc TRUE
user (No default value)
verbose FALSE
where (No default value)
plugin-dir (No default value)
default-auth (No default value)
—————————————————————————————————–
1、導(dǎo)單表
mysqldump -uroot -p mysql user;
2、導(dǎo)單庫
mysqldump -uroot -phwj3509 –databases hwj test.sql
3、導(dǎo)多表
mysqldump -uroot -p mysql user proc test.sql
4、導(dǎo)多庫
mysqldump -uroot -p –databases hwj 51vj test.sql
5、增量備份
mysqldump 下實(shí)現(xiàn)增量備份,其實(shí)是靠 mysqldump 全備和 binlog 日志實(shí)現(xiàn),通過在 mysqldump 命令中添加 –flush-logs 來生成新的日志。恢復(fù)時(shí)使用 mysqlbinlog 進(jìn)行恢復(fù)。
mysqldump -uroot -phwj3509 –single-transaction –flush-logs –master-data=2 –all_databases backup.sql;
關(guān)于如何理解 mysqldump 備份數(shù)據(jù)庫就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。