作者 | 吳守陽
審校 | 重樓
簡介
MySQLDump 是 MySQL 數(shù)據(jù)庫管理系統(tǒng)提供的一個(gè)實(shí)用工具,用于創(chuàng)建數(shù)據(jù)庫的邏輯備份。它通過生成 SQL 腳本文件,將數(shù)據(jù)庫中的數(shù)據(jù)和結(jié)構(gòu)導(dǎo)出,以便進(jìn)行備份和恢復(fù)。這個(gè)工具非常適用于需要遷移數(shù)據(jù)庫、備份數(shù)據(jù)、或者將數(shù)據(jù)庫內(nèi)容導(dǎo)出為 SQL 文件的場景。
工作原理
MySQLDump 的工作原理如下:
- 連接數(shù)據(jù)庫:MySQLDump 通過指定的用戶憑證連接到 MySQL 服務(wù)器。
- 鎖定表:為了保證數(shù)據(jù)一致性,MySQLDump 在導(dǎo)出數(shù)據(jù)之前會(huì)鎖定表或使用事務(wù)(具體取決于使用的選項(xiàng),如--lock-tables 或--single-transaction)。
- 導(dǎo)出數(shù)據(jù)和結(jié)構(gòu):MySQLDump 生成包含CREATE TABLE 和INSERT INTO 語句的 SQL 文件,這些語句可以重建表的結(jié)構(gòu)并重新插入數(shù)據(jù)。
- 寫入文件:最終生成的 SQL 腳本文件被寫入到指定的輸出文件中,或者直接輸出到標(biāo)準(zhǔn)輸出(如控制臺(tái))。
優(yōu)點(diǎn)
- 簡單易用:MySQLDump 提供了多種選項(xiàng),可以靈活地導(dǎo)出數(shù)據(jù)和表結(jié)構(gòu)。
- 廣泛支持:它支持幾乎所有的 MySQL 和 MariaDB 版本。
- 易于恢復(fù):導(dǎo)出的 SQL 文件可以直接用于恢復(fù)數(shù)據(jù)庫,通過簡單的 MySQL 命令即可重新導(dǎo)入數(shù)據(jù)。
- 兼容性好:SQL 文件是純文本格式,易于編輯和傳輸。
缺點(diǎn)
- 性能問題:對(duì)于大型數(shù)據(jù)庫,MySQLDump 的備份和恢復(fù)速度可能較慢,尤其是在網(wǎng)絡(luò)較慢或磁盤性能不佳的環(huán)境下。
- 數(shù)據(jù)一致性問題:在備份過程中,如果沒有正確使用事務(wù)或鎖定表,可能會(huì)導(dǎo)致數(shù)據(jù)不一致。
- 無增量備份:MySQLDump 不支持增量備份,每次備份都需要導(dǎo)出整個(gè)數(shù)據(jù)庫。
使用場景
- 小型數(shù)據(jù)庫備份:對(duì)于小型數(shù)據(jù)庫,MySQLDump 是一個(gè)簡單且高效的備份工具。
- 數(shù)據(jù)庫遷移:在將數(shù)據(jù)庫從一個(gè)服務(wù)器遷移到另一個(gè)服務(wù)器時(shí),MySQLDump 可以生成完整的 SQL 腳本,方便在新服務(wù)器上重建數(shù)據(jù)庫。
- 開發(fā)和測試:在開發(fā)和測試環(huán)境中,可以使用MySQLDump 創(chuàng)建數(shù)據(jù)庫的快照,以便隨時(shí)恢復(fù)到某個(gè)特定狀態(tài)。
- 數(shù)據(jù)導(dǎo)出:將數(shù)據(jù)庫數(shù)據(jù)導(dǎo)出為 SQL 文件,以便進(jìn)行數(shù)據(jù)分析、歸檔或傳輸。
備份示例
備份整個(gè)數(shù)據(jù)庫帶備份點(diǎn):
mysqldump -u username -p password --single-transaction --source-data=2 --all-databases > all_databases.sql
備份整個(gè)數(shù)據(jù)庫帶備份點(diǎn)、GTID點(diǎn)位:
mysqldump -u username -p password --single-transaction --source-data=2 --set-gtid-purged=on --all-databases > all_databases.sql
備份整個(gè)數(shù)據(jù)庫將行合并一起批量 INSERT:
mysqldump -u username -p password --single-transaction --extended-insert --all-databases > all_databases.sql
備份整個(gè)數(shù)據(jù)庫將每行數(shù)據(jù)拆分成一個(gè)INSERT:
mysqldump -u username -p password --single-transaction --skip-extended-insert --all-databases > all_databases.sql
備份整個(gè)數(shù)據(jù)庫使用完整的insert語句(包含列名稱):
mysqldump -u username -p password --single-transaction --complete-insert --all-databases > all_databases.sql
備份整個(gè)數(shù)據(jù)庫包括觸發(fā)器、存儲(chǔ)過程、事件:
mysqldump -u username -p password --single-transaction --triggers --routines --events --all-databases > all_databases.sql
備份整個(gè)數(shù)據(jù)庫:
mysqldump -u username -p password --single-transaction --all-databases > all_databases.sql
備份單個(gè)數(shù)據(jù)庫:
mysqldump -u username -p password --single-transaction database_name > database_name.sql
備份多個(gè)指定的數(shù)據(jù)庫:
mysqldump -u username -p password --single-transaction --databases database1 database2 > databases.sql
備份單個(gè)表:
mysqldump -u username -p password --single-transaction database_name table_name > table_name.sql
備份多個(gè)指定的表:
mysqldump -u username -p password --single-transaction database_name table1 table2 > tables.sql
僅備份表結(jié)構(gòu):
mysqldump -u username -p password --single-transaction --no-data database_name > schema.sql
僅備份數(shù)據(jù):
mysqldump -u username -p password --single-transaction --no-create-info database_name > data.sql
使用 gzip 壓縮備份文件:
mysqldump -u username -p password --single-transaction database_name | gzip > database_name.sql.gz
備份并排除某些表:
mysqldump -u username -p password --single-transaction --ignore-table=database_name.table_name database_name > database_name.sql
備份時(shí)不包含 CREATE DATABASE 語句:
mysqldump -u username -p password --single-transaction --no-create-db database_name > database_name.sql
備份過程中添加清除表的語句:
mysqldump -u username -p password --single-transaction --add-drop-table database_name > database_name.sql
備份時(shí)生成帶有時(shí)間戳的文件名:
mysqldump -u username -p password --single-transaction database_name > database_name_`date +%Y%m%d_%H%M%S`.sql
備份帶where條件關(guān)閉GTID點(diǎn)位:
mysqldump username -p password -t --single-transaction --set-gtid-purged=OFF --where="id>=2 and id <=8" database_name table_name >t1.sql
備份整個(gè)數(shù)據(jù)庫將INSERT替換為REPLACE INTO:
mysqldump -u username -p password --single-transaction --replace --all-databases > all_databases.sql
備份整個(gè)數(shù)據(jù)庫避免備份語句寫入slowlog:
mysqldump -u username -p password --single-transaction --mysqld-long-query-time=30s --all-databases > all_databases.sql
參數(shù)
--print-defaults
打印程序參數(shù)列表并退出。
--no-defaults
不從任何選項(xiàng)文件中讀取默認(rèn)選項(xiàng),除了登錄文件。
--defaults-file=#
僅從給定文件#讀取默認(rèn)選項(xiàng)。
--defaults-extra-file=#
在全局文件讀取后再讀取這個(gè)文件#。
--defaults-group-suffix=#
也讀取group與suffix拼接的組。
--login-path=#
從登錄文件中讀取此路徑。
--no-login-paths
不從登錄路徑文件中讀取登錄路徑。
-A, --all-databases
傾倒所有數(shù)據(jù)庫。這與--databases選項(xiàng)相同,只是選擇了所有數(shù)據(jù)庫。
-Y, --all-tablespaces
傾倒所有表空間。
-y, --no-tablespaces
不傾倒任何表空間信息。
--add-drop-database
在每個(gè)CREATE之前添加一個(gè)DROP DATABASE。
--add-drop-table
在每個(gè)CREATE之前添加一個(gè)DROP TABLE。 (默認(rèn)為開啟;使用--skip-add-drop-table禁用。)
--add-drop-trigger
在每個(gè)CREATE之前添加一個(gè)DROP TRIGGER。
--add-locks
在INSERT語句周圍添加鎖定。 (默認(rèn)為開啟;使用--skip-add-locks禁用。)
--allow-keywords
允許創(chuàng)建關(guān)鍵字列名。
--apply-replica-statements
在“CHANGE REPLICATION SOURCE”之前添加“STOP REPLICA”,并在轉(zhuǎn)儲(chǔ)底部添加“START REPLICA”。使用--output-as-version切換為舊術(shù)語。
--apply-slave-statements
此選項(xiàng)已棄用,將在將來的版本中刪除。請(qǐng)改用apply-replica-statements。
--bind-address=name
綁定到的IP地址。
--character-sets-dir=name
字符集文件目錄。
--column-statistics
添加一個(gè)ANALYZE TABLE語句以重新生成任何現(xiàn)有的列統(tǒng)計(jì)信息。 (默認(rèn)為開啟;使用--skip-column-statistics禁用。)
-i, --comments
寫入額外信息。 (默認(rèn)為開啟;使用--skip-comments禁用。)
--compatible=name
更改轉(zhuǎn)儲(chǔ)以與給定模式兼容。默認(rèn)情況下,表以針對(duì)MySQL優(yōu)化的格式轉(zhuǎn)儲(chǔ)。唯一合法的模式是ANSI。需要MySQL服務(wù)器版本4.1.0或更高。
--compact
提供更少冗長的輸出(用于調(diào)試)。禁用結(jié)構(gòu)注釋和頁眉/頁腳構(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)為開啟;使用--skip-create-options禁用。)
-B, --databases
轉(zhuǎn)儲(chǔ)多個(gè)數(shù)據(jù)庫。注意在用法上的不同;在這種情況下不給出表。所有名稱參數(shù)都被視為數(shù)據(jù)庫名稱。將包括“USE db_name;”在輸出中。
-#, --debug[=#]
這是非調(diào)試版本。捕獲此錯(cuò)誤并退出。
--debug-check
這是非調(diào)試版本。捕獲此錯(cuò)誤并退出。
--debug-info
這是非調(diào)試版本。捕獲此錯(cuò)誤并退出。
--default-character-set=name
設(shè)置默認(rèn)字符集。
--delete-source-logs
在備份之前輪換日志,等同于FLUSH LOGS,并在備份后清除所有舊的二進(jìn)制日志,等同于PURGE LOGS。這將自動(dòng)啟用--source-data。
--delete-master-logs
此選項(xiàng)已棄用,將在將來的版本中刪除。請(qǐng)改用delete-source-logs。
-K, --disable-keys
將“/*!40000 ALTER TABLE tb_name DISABLE KEYS */;”和“/*!40000 ALTER TABLE tb_name ENABLE KEYS */;”放入輸出中。 (默認(rèn)為開啟;使用--skip-disable-keys禁用。)
--dump-replica[=#]
這導(dǎo)致源的二進(jìn)制日志位置和文件名附加到轉(zhuǎn)儲(chǔ)的數(shù)據(jù)輸出中。將值設(shè)置為1,將其打印為CHANGE REPLICATION SOURCE命令在轉(zhuǎn)儲(chǔ)的數(shù)據(jù)輸出中;如果等于2,那個(gè)命令將以注釋符號(hào)前綴。此選項(xiàng)將打開--lock-all-tables,除非還指定了--single-transaction(在這種情況下,全局讀鎖僅在轉(zhuǎn)儲(chǔ)開始時(shí)短暫持有 - 不要忘記閱讀有關(guān)--single-transaction的內(nèi)容)。在所有情況下,日志上的任何操作都將在轉(zhuǎn)儲(chǔ)的確切時(shí)刻發(fā)生。選項(xiàng)會(huì)自動(dòng)關(guān)閉--lock-tables。
--dump-slave[=#]
此選項(xiàng)已棄用,將在將來的版本中刪除。請(qǐng)改用dump-replica。
-E, --events
轉(zhuǎn)儲(chǔ)事件。
-e, --extended-insert
使用包含多個(gè)VALUES列表的多行INSERT語法。 (默認(rèn)為開啟;使用--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)儲(chǔ)之前在服務(wù)器中刷新日志文件。請(qǐng)注意,如果一次性轉(zhuǎn)儲(chǔ)多個(gè)數(shù)據(jù)庫(使用--databases=或--all-databases選項(xiàng)),則將為每個(gè)轉(zhuǎn)儲(chǔ)的數(shù)據(jù)庫刷新日志。例外情況是使用--lock-all-tables或--source-data:在這種情況下,日志將僅刷新一次,對(duì)應(yīng)于所有表被鎖定的時(shí)刻。因此,如果您希望您的轉(zhuǎn)儲(chǔ)和日志刷新在完全相同的時(shí)刻發(fā)生,您應(yīng)該使用--lock-all-tables或--source-data與--flush-logs。
--flush-privileges
在轉(zhuǎn)儲(chǔ)MySQL數(shù)據(jù)庫后發(fā)出FLUSH PRIVILEGES語句。應(yīng)在轉(zhuǎn)儲(chǔ)包含MySQL數(shù)據(jù)庫及任何其他依賴于MySQL數(shù)據(jù)庫數(shù)據(jù)的數(shù)據(jù)庫時(shí)使用。
-f, --force
即使遇到SQL錯(cuò)誤也繼續(xù)。
-?, --help
顯示此幫助消息并退出。
--hex-blob
以十六進(jìn)制格式轉(zhuǎn)儲(chǔ)二進(jìn)制字符串(BINARY、VARBINARY、BLOB)。
-h, --host=name
連接的主機(jī)。
--ignore-error=name
遇到時(shí)要忽略的錯(cuò)誤號(hào)列表,用逗號(hào)分隔。
--ignore-table=name
不轉(zhuǎn)儲(chǔ)指定表。要忽略多個(gè)表,多次使用此指令,每次指定數(shù)據(jù)庫和表名,例如--ignore-table=database.table。
--include-source-host-port
在使用--dump-replica生成的轉(zhuǎn)儲(chǔ)中的“CHANGE REPLICATION SOURCE TO..”中添加“SOURCE_HOST=<host>,SOURCE_PORT=<port>”。
--include-master-host-port
此選項(xiàng)已棄用,將在將來的版本中刪除。請(qǐng)改用include-source-host-port。
--insert-ignore
使用INSERT IGNORE插入行。
--lines-terminated-by=name
輸出文件中的行以給定字符串終止。
-x, --lock-all-tables
鎖定所有數(shù)據(jù)庫中的所有表。通過在整個(gè)轉(zhuǎn)儲(chǔ)期間獲取全局讀鎖來實(shí)現(xiàn)。自動(dòng)關(guān)閉--single-transaction和--lock-tables。
-l, --lock-tables
鎖定所有表以供讀取。 (默認(rèn)為開啟;使用--skip-lock-tables禁用。)
--log-error=name
將警告和錯(cuò)誤追加到給定文件中。
--mysqld-long-query-time=#
為此轉(zhuǎn)儲(chǔ)會(huì)話設(shè)置long_query_time。省略標(biāo)志意味著使用服務(wù)器值。
--source-data[=#]
將二進(jìn)制日志位置和文件名附加到輸出。如果等于1,則輸出為CHANGE REPLICATION SOURCE命令;如果等于2,則該命令以注釋符號(hào)為前綴。該選項(xiàng)會(huì)自動(dòng)打開--lock-all-tables,除非同時(shí)指定了--single-transaction(在這種情況下,在轉(zhuǎn)儲(chǔ)的開始時(shí)會(huì)短暫地獲取全局讀鎖)。
--master-data[=#]
此選項(xiàng)已棄用,并將在將來的版本中移除。請(qǐng)改用--source-data。
--max-allowed-packet=#
發(fā)送到服務(wù)器或從服務(wù)器接收的最大數(shù)據(jù)包長度。
--net-buffer-length=#
TCP/IP和套接字通信的緩沖區(qū)大小。
--no-autocommit
在表周圍包裹autocommit/commit語句。
-n, --no-create-db
如果給出了--all-databases或--databases,則不輸出每個(gè)轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫的CREATE DATABASE ... IF EXISTS語句。
-t, --no-create-info
不輸出表創(chuàng)建信息。
-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和--disable-keys。默認(rèn)情況下啟用,使用--skip-opt禁用。
--order-by-primary
按主鍵或第一個(gè)唯一鍵排序每個(gè)表的行。當(dāng)轉(zhuǎn)儲(chǔ)MyISAM表以加載到InnoDB表時(shí)很有用,但會(huì)使轉(zhuǎn)儲(chǔ)本身需要更長時(shí)間。
-p, --password[=name]
連接到服務(wù)器時(shí)使用的密碼。如果未提供密碼,則會(huì)從tty中詢問。
-,, --password1[=name]
第一因子認(rèn)證插件的密碼。
-,, --password2[=name]
第二因子認(rèn)證插件的密碼。
-,, --password3[=name]
第三因子認(rèn)證插件的密碼。
- P, --port=#
連接時(shí)要使用的端口號(hào)。
--protocol=name
連接使用的協(xié)議(tcp,socket,pipe,memory)。
-q, --quick
不緩沖查詢,直接轉(zhuǎn)儲(chǔ)到stdout。默認(rèn)情況下啟用,使用--skip-quick禁用。
-Q, --quote-names
使用反引號(hào)(`)引用表和列名。默認(rèn)情況下啟用,使用--skip-quote-names禁用。
--replace
使用REPLACE INTO而不是INSERT INTO。
-r, --result-file=name
將輸出直接寫入給定的文件。此選項(xiàng)應(yīng)在使用回車換行對(duì)(\r\n)分隔文本行的系統(tǒng)(例如DOS、Windows)中使用。此選項(xiàng)確保只使用單個(gè)換行符。
-R, --routines
轉(zhuǎn)儲(chǔ)存儲(chǔ)過程和函數(shù)。
--set-charset
將'SET NAMES default_character_set'添加到輸出中。默認(rèn)情況下啟用,使用--skip-set-charset禁用。
--set-gtid-purged[=name]
將'SET @@GLOBAL.GTID_PURGED'添加到輸出中。此選項(xiàng)的可能值包括ON、COMMENTED、OFF和AUTO。如果使用ON并且服務(wù)器上未啟用GTIDs,則會(huì)生成錯(cuò)誤。如果使用COMMENTED,則將'SET @@GLOBAL.GTID_PURGED'作為注釋添加。如果使用OFF,則此選項(xiàng)不起作用。如果使用AUTO并且服務(wù)器上啟用了GTIDs,則會(huì)將'SET @@GLOBAL.GTID_PURGED'添加到輸出中。如果禁用了GTIDs,則AUTO不起作用。如果未提供任何值,則將考慮默認(rèn)值(AUTO)。
--single-transaction
通過在單個(gè)事務(wù)中轉(zhuǎn)儲(chǔ)所有表來創(chuàng)建一致的快照。僅適用于支持多版本控制的存儲(chǔ)引擎(目前僅有InnoDB);不能保證對(duì)其他存儲(chǔ)引擎是一致的。在進(jìn)行--single-transaction轉(zhuǎn)儲(chǔ)時(shí),為確保一個(gè)有效的轉(zhuǎn)儲(chǔ)文件(正確的表內(nèi)容和二進(jìn)制日志位置),不應(yīng)有其他連接使用以下語句:ALTER TABLE、DROP TABLE、RENAME TABLE、TRUNCATE TABLE,因?yàn)橐恢碌目煺张c這些操作不是隔離的。此選項(xiàng)會(huì)自動(dòng)關(guān)閉--lock-tables。
--dump-date
在輸出的末尾加上轉(zhuǎn)儲(chǔ)日期。默認(rèn)情況下啟用,使用--skip-dump-date禁用。
--skip-opt
禁用--opt。禁用--add-drop-table、--add-locks、--create-options、--quick、--extended-insert、--lock-tables、--set-charset和--disable-keys。
-S, --socket=name
要使用的套接字文件。
--server-public-key-path=name
服務(wù)器公共RSA密鑰的文件路徑(PEM格式)。
--get-server-public-key
獲取服務(wù)器的公共密鑰。
--ssl-mode=name
SSL連接模式。
--ssl-ca=name
CA文件的路徑(PEM格式)。
--ssl-capath=name
CA目錄的路徑。
--ssl-cert=name
X509證書的路徑(PEM格式)。
--ssl-cipher=name
要使用的SSL密碼。
--ssl-key=name
X509密鑰的路徑(PEM格式)。
--ssl-crl=name
證書吊銷列表。
--ssl-crlpath=name
證書吊銷列表路徑。
--tls-version=name
要使用的TLS版本。允許的值為:TLSv1.2、TLSv1.3。
--ssl-fips-mode=name
SSL FIPS模式(僅適用于OpenSSL)。允許的值為:OFF、ON、STRICT。
--tls-ciphersuites=name
要使用的TLS v1.3密碼。
--ssl-session-data=name
要使用的會(huì)話數(shù)據(jù)文件以啟用SSL會(huì)話重用。
--ssl-session-data-continue-on-failed-reuse
如果設(shè)置為ON,則此選項(xiàng)將允許連接在會(huì)話數(shù)據(jù)無法重用時(shí)仍然成功。
--tls-sni-servername=name
要傳遞給服務(wù)器的SNI服務(wù)器名稱。
-T, --tab=name
為每個(gè)表創(chuàng)建制表符分隔的文本文件并指定路徑。注意:僅當(dāng)mysqldump在與mysqld服務(wù)器相同的機(jī)器上運(yùn)行時(shí)才起作用。
--tables
覆蓋選項(xiàng)--databases(-B)。
--output-as-version[=name]
定義轉(zhuǎn)儲(chǔ)中用于副本和事件命令的術(shù)語,允許創(chuàng)建與僅接受過時(shí)命令的較低版本兼容的轉(zhuǎn)儲(chǔ)。此選項(xiàng)的可能值為SERVER、BEFORE_8_0_23和BEFORE_8_2_0。默認(rèn)為SERVER,如果設(shè)置,則讀取服務(wù)器版本并輸出與該版本兼容的命令。這意味著如果服務(wù)器低于8.2.0,則會(huì)輸出事件的DEPRECATED DISABLE ON SLAVE術(shù)語;如果低于8.0.23,則還會(huì)使用事件的DEPRECATED SLAVE/CHANGE MASTER術(shù)語。如果設(shè)置為BEFORE_8_2_0,則SHOW CREATE EVENT命令將始終顯示如何在低于8.2.0版本的服務(wù)器上創(chuàng)建事件。如果設(shè)置為BEFORE_8_0_23,則轉(zhuǎn)儲(chǔ)還將包含像START SLAVE或CHANGE MASTER TO等已棄用的副本命令。這會(huì)影響--events、--dump-replica、--source-data、--apply-replica-statements和--include-source-host-port的輸出。
--triggers
為每個(gè)轉(zhuǎn)儲(chǔ)的表轉(zhuǎn)儲(chǔ)觸發(fā)器。默認(rèn)情況下啟用,使用--skip-triggers禁用。
--tz-utc
在轉(zhuǎn)儲(chǔ)的頂部設(shè)置'TIME_ZONE='+00:00',允許在服務(wù)器具有不同時(shí)區(qū)數(shù)據(jù)或在具有不同時(shí)區(qū)的服務(wù)器之間移動(dòng)數(shù)據(jù)時(shí)轉(zhuǎn)儲(chǔ)TIMESTAMP數(shù)據(jù)。默認(rèn)情況下啟用,使用--skip-tz-utc。
-u, --user=name
指定用于登錄的用戶名,如果不是當(dāng)前用戶。
-v, --verbose
打印有關(guān)各個(gè)階段的詳細(xì)信息。
-V, --version
輸出版本信息并退出。
-w, --where=name
僅轉(zhuǎn)儲(chǔ)所選記錄。引號(hào)是必需的。
-X, --xml
將數(shù)據(jù)庫轉(zhuǎn)儲(chǔ)為格式良好的XML。
--plugin-dir=name
指定客戶端插件的目錄。
--default-auth=name
指定默認(rèn)的認(rèn)證客戶端插件。
--enable-cleartext-plugin
啟用/禁用明文認(rèn)證插件。
-M, --network-timeout
允許通過將max_allowed_packet設(shè)置為最大值,net_read_timeout/net_write_timeout設(shè)置為大值來轉(zhuǎn)儲(chǔ)大表。默認(rèn)情況下啟用,使用--skip-network-timeout禁用。
--show-create-table-skip-secondary-engine
控制是否轉(zhuǎn)儲(chǔ)SECONDARY_ENGINE CREATE TABLE子句。對(duì)不支持服務(wù)器端選項(xiàng)的舊服務(wù)器沒有影響。
--compression-algorithms=name
在服務(wù)器/客戶端協(xié)議中使用的壓縮算法。有效值是任何'zstd'、'zlib'、'uncompressed'的組合。
--zstd-compression-level=#
在客戶端/服務(wù)器協(xié)議中使用的此壓縮級(jí)別,如果--compression-algorithms=zstd。有效范圍是1到22(包括)。默認(rèn)值為3。
--skip-generated-invisible-primary-key
控制是否轉(zhuǎn)儲(chǔ)生成的不可見主鍵和鍵列。
--init-command=name
連接到MySQL服務(wù)器時(shí)要執(zhí)行的單個(gè)SQL命令。在重新連接時(shí)將自動(dòng)重新執(zhí)行。
--init-command-add=name
添加要在連接到MySQL服務(wù)器時(shí)執(zhí)行的SQL命令到列表中。在重新連接時(shí)將自動(dòng)重新執(zhí)行。
--ignore-views
跳過轉(zhuǎn)儲(chǔ)表視圖。
總結(jié)
MySQLDump 是 MySQL 數(shù)據(jù)庫管理系統(tǒng)中一個(gè)非常有用的工具,適用于各種備份和遷移場景。盡管它在處理大型數(shù)據(jù)庫時(shí)可能存在性能和一致性問題,但其簡單性和廣泛支持使其在許多情況下仍然是首選工具。通過合理配置選項(xiàng)和參數(shù),MySQLDump 可以滿足大多數(shù) MySQL 數(shù)據(jù)庫的備份和恢復(fù)需求。
作者介紹
吳守陽,51CTO社區(qū)編輯,擁有8年DBA工作經(jīng)驗(yàn),熟練管理MySQL、Redis、MongoDB等開源數(shù)據(jù)庫。精通性能優(yōu)化、備份恢復(fù)和高可用性架構(gòu)設(shè)計(jì)。善于故障排除和自動(dòng)化運(yùn)維,保障系統(tǒng)穩(wěn)定可靠。具備良好的團(tuán)隊(duì)合作和溝通能力,致力于為企業(yè)提供高效可靠的數(shù)據(jù)庫解決方案。