溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MySQL備份命令mysqldump參數(shù)說明與示例

發(fā)布時間:2020-07-19 13:12:16 來源:網(wǎng)絡(luò) 閱讀:601 作者:xyj105303 欄目:MySQL數(shù)據(jù)庫

1. 語法選項說明

  • -h, --host=name
    主機名

  • -P[ port_num], --port=port_num
    用于連接MySQL服務(wù)器的的TCP/IP端口號

  • --master-data
    這個選項可以把binlog的位置和文件名添加到輸出中,如果等于1,將會打印成一個CHANGE MASTER命令;如果等于2,會加上注釋前綴。并且這個選項會自動打開--lock-all-tables,除非同時設(shè)置了--single-transaction(這種情況下,全局讀鎖只會在開始dump的時候加上一小段時間,不要忘了閱讀--single-transaction的部分)。在任何情況下,所有日志中的操作都會發(fā)生在導(dǎo)出的準(zhǔn)確時刻。這個選項會自動關(guān)閉--lock-tables。

  • -x, --lock-all-tables
    鎖定所有庫中所有的表。這是通過在整個dump的過程中持有全局讀鎖來實現(xiàn)的。會自動關(guān)閉--single-transaction--lock-tables。

  • --single-transaction
    通過將導(dǎo)出操作封裝在一個事務(wù)內(nèi)來使得導(dǎo)出的數(shù)據(jù)是一個一致性快照。只有當(dāng)表使用支持MVCC的存儲引擎(目前只有InnoDB)時才可以工作;其他引擎不能保證導(dǎo)出是一致的。當(dāng)導(dǎo)出開啟了--single-transaction選項時,要確保導(dǎo)出文件有效(正確的表數(shù)據(jù)和二進(jìn)制日志位置),就要保證沒有其他連接會執(zhí)行如下語句:ALTER TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE,這會導(dǎo)致一致性快照失效。這個選項開啟后會自動關(guān)閉--lock-tables。

  • -l, --lock-tables
    對所有表加讀鎖。(默認(rèn)是打開的,用--skip-lock-tables來關(guān)閉,上面的選項會把關(guān)閉-l選項)

  • -F, --flush-logs
    在開始導(dǎo)出前刷新服務(wù)器的日志文件。注意,如果你一次性導(dǎo)出很多數(shù)據(jù)庫(使用 -databases=--all-databases選項),導(dǎo)出每個庫時都會觸發(fā)日志刷新。例外是當(dāng)使用了--lock-all-tables--master-data時:日志只會被刷新一次,那個時候所有表都會被鎖住。所以如果你希望你的導(dǎo)出和日志刷新發(fā)生在同一個確定的時刻,你需要使用--lock-all-tables,或者--master-data配合--flush-logs。

  • --delete-master-logs
    備份完成后刪除主庫上的日志。這個選項會自動打開``--master-data`。

  • --opt
    -add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, --disable-keys。(默認(rèn)已開啟,--skip-opt關(guān)閉表示這些選項保持它的默認(rèn)值)應(yīng)該給你為讀入一個MySQL服務(wù)器的盡可能最快的導(dǎo)出,--compact差不多是禁用上面的選項。

  • -q, --quick
    不緩沖查詢,直接導(dǎo)出至stdout。(默認(rèn)打開,用--skip-quick來關(guān)閉)該選項用于轉(zhuǎn)儲大的表。

  • --set-charset
    SET NAMES default_character_set加到輸出中。該選項默認(rèn)啟用。要想禁用SET NAMES語句,使用--skip-set-charset。

  • --add-drop-tables
    在每個CREATE TABLE語句前添加DROP TABLE語句。默認(rèn)開啟。

  • --add-locks
    在每個表導(dǎo)出之前增加LOCK TABLES并且之后UNLOCK TABLE。(為了使得更快地插入到MySQL)。默認(rèn)開啟。

  • --create-option
    在CREATE TABLE語句中包括所有MySQL表選項。默認(rèn)開啟,使用--skip-create-options來關(guān)閉。

  • -e, --extended-insert
    使用全新多行INSERT語法,默認(rèn)開啟(給出更緊縮并且更快的插入語句)

  • -d, --no-data
    不寫入表的任何行信息。如果你只想得到一個表的結(jié)構(gòu)的導(dǎo)出,這是很有用的。

  • --add-drop-database
    在create數(shù)據(jù)庫之前先DROP DATABASE,默認(rèn)關(guān)閉,所以一般在導(dǎo)入時需要保證數(shù)據(jù)庫已存在。

  • --default-character-set=
    使用的默認(rèn)字符集。如果沒有指定,mysqldump使用utf8。

  • -B, --databases
    轉(zhuǎn)儲幾個數(shù)據(jù)庫。通常情況,mysqldump將命令行中的第1個名字參量看作數(shù)據(jù)庫名,后面的名看作表名。使用該選項,它將所有名字參量看作數(shù)據(jù)庫名。CREATE DATABASE IF NOT EXISTS db_nameUSE db_name語句包含在每個新數(shù)據(jù)庫前的輸出中。

  • --tables
    覆蓋--database選項。選項后面的所有參量被看作表名。

  • -u[ name], --user=
    連接服務(wù)器時使用的MySQL用戶名。

  • -p[password], --password[=password]
    連接服務(wù)器時使用的密碼。如果你使用短選項形式(-p),不能在選項和密碼之間有一個空格。如果在命令行中,忽略了--password-p選項后面的 密碼值,將提示你輸入一個。

2. 示例

導(dǎo)出一個數(shù)據(jù)庫:

$ mysqldump -h localhost -uroot -ppassword \--master-data=2 --single-transaction --add-drop-table --create-options --quick \--extended-insert --default-character-set=utf8 \--databases discuz > backup-file.sql

導(dǎo)出一個表:

$ mysqldump -u pak -p --opt --flush-logs pak t_user > pak-t_user.sql

將備份文件壓縮:

$ mysqldump -hhostname -uusername -ppassword --databases dbname | gzip > backup-file.sql.gz
對應(yīng)的還原動作為
gunzip < backup-file.sql.gz | mysql -uusername -ppassword dbname

導(dǎo)入數(shù)據(jù)庫:

mysql> use target_dbname
mysql> source /mysql/backup/path/backup-file.sql
或
$ mysql target_dbname <backup-file.sql

導(dǎo)入還有一個mysqlimport命令,暫未研究。

直接從一個數(shù)據(jù)庫向另一個數(shù)據(jù)庫轉(zhuǎn)儲:

mysqldump -u用戶名 -p --opt dbname | mysql --host remote_host -C dbname2


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI