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