mysqldump工具在MySQL數(shù)據(jù)庫(kù)備份過(guò)程的作用

下文主要給大家?guī)?lái)MySQLdump工具在MySQL數(shù)據(jù)庫(kù)備份過(guò)程的作用,希望這些文字能夠帶給大家實(shí)際用處,這也是我編輯mysqldump工具在MySQL數(shù)據(jù)庫(kù)備份過(guò)程的作用這篇文章的主要目的。好了,廢話(huà)不多說(shuō),大家直接看下文吧。

創(chuàng)新互聯(lián)建站是專(zhuān)業(yè)的三門(mén)網(wǎng)站建設(shè)公司,三門(mén)接單;提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行三門(mén)網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

mysqldump工具是MySQL數(shù)據(jù)庫(kù)備份時(shí), 經(jīng)常用到的一個(gè)工具. 可以指定數(shù)據(jù)表, 某些數(shù)據(jù)庫(kù), 所有數(shù)據(jù)庫(kù)級(jí)別的備份, 在命令行上敲入mysqldump回車(chē), 可看到該三種方式的示例.

mysql@db01:~$ mysqldump

Usage: mysqldump[OPTIONS] database [tables]

OR     mysqldump [OPTIONS] --databases [OPTIONS]DB1 [DB2 DB3...]

OR     mysqldump [OPTIONS] --all-databases[OPTIONS]

For moreoptions, use mysqldump --help

mysqldump工具在MySQL數(shù)據(jù)庫(kù)備份過(guò)程的作用 

通過(guò)mysqldump --help, 可看到有非常多的選項(xiàng)(OPTIONS), 也見(jiàn)其功能的豐富性. 這些選項(xiàng)按作用, 可劃分成若干組, 接下來(lái)就看下每組中重點(diǎn)選項(xiàng)的含義.

 

HelpOptions 組

 

1.--version

該組除了--help選項(xiàng), 還有一個(gè)--version, 用于查看mysqldump的版本.

mysql@db01:~$ mysqldump --version

mysqldump  Ver 10.13 Distrib 5.6.24, for Linux (x86_64)

 

另外, 為了下面的說(shuō)明演示, 用到的數(shù)據(jù)庫(kù)和數(shù)據(jù)表如下所示:

(root@localhost)[(none)]> SHOW DATABASES;

+--------------------+

|Database           |

+--------------------+

|information_schema |

|mysql              |

|performance_schema |

|stage              |

|test               |

+--------------------+

5 rows inset (0.00 sec)

 

(root@localhost)[(none)]> SHOW TABLES FROM stage;

+-----------------+

|Tables_in_stage |

+-----------------+

|st1             |

|st2             |

+-----------------+

2 rows inset (0.00 sec)

 

(root@localhost)[(none)]> SHOW TABLES FROM test;

+----------------+

|Tables_in_test |

+----------------+

|tb1_bak        |

|tb2            |

|v_tb1          |

|v_tb2          |

+----------------+

4 rows inset (0.00 sec)

 

ConnectionOptions 組

 

1.--bind-address=ip_address

若數(shù)據(jù)庫(kù)云服務(wù)器有多個(gè)網(wǎng)絡(luò)接口, 使用該選項(xiàng)設(shè)置其只監(jiān)聽(tīng)在某個(gè)接口上, 且只能通過(guò)該接口訪(fǎng)問(wèn)數(shù)據(jù)庫(kù).

 

2.--login-path=name

登錄路徑, 其是host, password, port, socket, user選項(xiàng)的集合. 后面的演示, 使用該登錄方式, 相關(guān)細(xì)節(jié)已在"MySQL數(shù)據(jù)庫(kù)登錄小貼士"中介紹過(guò).

 

Option-FileOptions 組

 

1.--defaults-file=file_name

mysqldump只讀取該選項(xiàng)指定的配置文件中, client和mysqldump標(biāo)簽下的參數(shù). 若同時(shí)還指定了--login-path選項(xiàng), 其還會(huì)讀取文件.mylogin.cnf.

 

2.--no-defaults

mysqldump不讀取任何配置文件, 一般用于讀到錯(cuò)誤參數(shù)時(shí)的調(diào)試. 若同時(shí)還指定了--login-path選項(xiàng), 其還會(huì)讀取文件.mylogin.cnf.

 

3.--print-defaults

mysqldump會(huì)按此順序/etc/my.cnf, /etc/mysql/my.cnf,/data/3316/conf-DMYSQL_DATADIR=/data/3316/my.cnf, ~/.my.cnf 讀取這些配置文件中, client和mysqldump標(biāo)簽下的參數(shù), 然后打印該參數(shù), 即使有重復(fù)的. 對(duì)于重復(fù)參數(shù)后面的生效, 和mysql命令該選項(xiàng)含義是一樣的.

 

DDLOptions 組

 

1.--add-drop-database

在備份的SQL文件中, 每個(gè)CREATE DATABASE語(yǔ)句前都明確寫(xiě)入DROP DATABASE語(yǔ)句, SQL文件中顯示如下:

/*!40000DROP DATABASE IF EXISTS `stage`*/;

CREATEDATABASE /*!32312 IF NOT EXISTS*/ `stage` /*!40100 DEFAULT CHARACTER SETutf8mb4 */;

 

該選項(xiàng)一般和--all-databases或—databases一塊使用, 其默認(rèn)是關(guān)閉的.

 

2.--add-drop-table

在CREATE TABLE語(yǔ)句前面, 寫(xiě)入DROP TABLE語(yǔ)句, SQL文件中顯示如下:

DROPTABLE IF EXISTS `st1`;

CREATETABLE `st1` ...

 

其默認(rèn)是開(kāi)啟的.

 

3. --add-drop-trigger

在CREATE TRIGGER語(yǔ)句前, 寫(xiě)入DROP TRIGGER語(yǔ)句.

 

其默認(rèn)是關(guān)閉的.

 

4.--no-create-db, -n

和--databases或--all-databases一塊使用時(shí), SQL文件中不寫(xiě)入CREATE DATABASE語(yǔ)句.

 

其默認(rèn)是關(guān)閉的.

 

5.--no-create-info, -t

SQL文件中不寫(xiě)入CREATE TABLE語(yǔ)句, 即不導(dǎo)出數(shù)據(jù)表結(jié)構(gòu).

 

其默認(rèn)是關(guān)閉的.

 

DebugOptions 組

 

1. --force,-f

mysqldump執(zhí)行過(guò)程中, 若有SQL錯(cuò)誤, 該過(guò)程仍會(huì)繼續(xù), 同時(shí)打印錯(cuò)誤日志到終端.

 

如有視圖v_tb1, 其依賴(lài)的表tb1改名為tb1_bak, 備份數(shù)據(jù)庫(kù)test時(shí), 會(huì)有如下報(bào)錯(cuò), 且遇到錯(cuò)誤, 備份過(guò)程就退出了.

mysql@db01:~/dbbackup$ mysqldump --login-path=mytest --default-character-set=utf8mb4--result-file=test.sql --single-transaction --databases test

mysqldump:Couldn't execute 'SHOW FIELDS FROM `v_tb1`': View 'test.v_tb1' referencesinvalid table(s) or column(s) or function(s) or definer/invoker of view lackrights to use them (1356)

 

若上述命令行加上--force選項(xiàng), 備份過(guò)程即使有錯(cuò)誤, 其也會(huì)執(zhí)行完.

 

2.--log-error=file_name

警告和錯(cuò)誤日志輸會(huì)出到指定的文件中.

 

參考在--force選項(xiàng)中給出的例子, 如下所示, 報(bào)錯(cuò)輸出到文件error.txt中.

mysql@db01:~/dbbackup$ mysqldump --login-path=mytest --default-character-set=utf8mb4--force --log-error=error.txt --result-file=test.sql --single-transaction--databases test

 

mysql@db01:~/dbbackup$ cat error.txt

mysqldump:Couldn't execute 'SHOW FIELDS FROM `v_tb1`': View 'test.v_tb1' referencesinvalid table(s) or column(s) or function(s) or definer/invoker of view lackrights to use them (1356)

 

InternationalizationOptions 組

 

1.--default-character-set=charset_name

指明mysqldump備份使用的字符集, 一般要和SHOW GLOBAL VARIABLES LIKE'character_set_server'顯示的一樣. 若數(shù)據(jù)庫(kù)字符集是utf8mb4的, 備份時(shí)未指明字符集, 其默認(rèn)會(huì)使用utf8字符集, 如此恢復(fù)數(shù)據(jù)時(shí), 就有可能出現(xiàn)亂碼.

 

2.--set-charset

在備份的SQL文件中, 頭部加上SET NAMES語(yǔ)句, SQL文件中顯示如下:

/*!40101SET NAMES utf8mb4 */;

 

ReplicationOptions 組

mysqldump經(jīng)常用于在主從復(fù)制環(huán)境中, 搭建一個(gè)從數(shù)據(jù)庫(kù)節(jié)點(diǎn), 以下是兩個(gè)相關(guān)參數(shù).

 

1.--master-data[=value]

mysqldump通過(guò)在主庫(kù)獲取GLOBAL READ LOCK, 取得從庫(kù)復(fù)制開(kāi)始的坐標(biāo), 即主庫(kù)上binlog日志的名稱(chēng)和位置. 該過(guò)程在general log中顯示如下:

1457271Query   FLUSH /*!40101 LOCAL */ TABLES

1457271Query   FLUSH TABLES WITH READ LOCK

1457271Query   SHOW MASTER STATUS

1457271Query   UNLOCK TABLES

 

上面說(shuō)的binlog日志名稱(chēng)和位置, 會(huì)寫(xiě)入CHANGE MASTER TO語(yǔ)句中, SQL文件中顯示如下:

-- CHANGEMASTER TO MASTER_LOG_FILE='mysql-bin.000036', MASTER_LOG_POS=345;

 

該選項(xiàng)有2和1兩個(gè)值, 前者代表CHANGE MASTER TO語(yǔ)句是被注釋的, 后者沒(méi)注釋, 一般使用前者.

 

2.--dump-slave[=value]

該選項(xiàng)的含義, 和--master-data類(lèi)似, 只不過(guò)是在從庫(kù)上執(zhí)行的. 其通過(guò)停止從庫(kù)的SQL線(xiàn)程, 來(lái)獲取對(duì)應(yīng)主庫(kù)上binlog日志的名稱(chēng)和位置. 該過(guò)程在general log中顯示如下:

1770998Query   SHOW SLAVE STATUS

1770998Query   STOP SLAVE SQL_THREAD

1770998Query   SHOW SLAVE STATUS

1770998Query   UNLOCK TABLES

 

FormatOptions 組

 

1.--complete-insert, -c

INSERT語(yǔ)句中包含數(shù)據(jù)表字段列名, SQL文件中顯示如下:

INSERTINTO `st1` (`a`, `b`, `c`) VALUES (1,'aa',2);

 

2.--create-options

在CREATE TABLE語(yǔ)句中, 包含MySQL數(shù)據(jù)表的特定信息, 如字段的AUTO_INCREMENT屬性, 存儲(chǔ)引擎, 字符集等信息.

 

3.--hex-blob

對(duì)于BINARY, VARBINARY, BLOB和BIT二進(jìn)制數(shù)據(jù)類(lèi)型的數(shù)據(jù), 以十六進(jìn)制方式導(dǎo)出. 建議以該方式導(dǎo)出二進(jìn)制數(shù)據(jù), 這樣會(huì)避免一些由字符集轉(zhuǎn)換帶來(lái)的錯(cuò)誤.

 

4.--result-file=file_name, -r file_name

將備份數(shù)據(jù)輸出到指定的文件中, 使用該選項(xiàng)時(shí), 不能邊備份邊壓縮, 對(duì)磁盤(pán)空間要求多些.

 

FilteringOptions 組

 

1. --all-databases,-A

備份除information_schema和performance_schema兩個(gè)數(shù)據(jù)庫(kù)之外的全部數(shù)據(jù)庫(kù).

 

2.--databases, -B

備份指定的數(shù)據(jù)庫(kù), 多個(gè)庫(kù)名間用空格分隔.

 

3. --events, -E

備份事件.

 

4.--ignore-table=db_name.tbl_name

指定不導(dǎo)出某數(shù)據(jù)庫(kù)中某數(shù)據(jù)表的數(shù)據(jù), 若有多張這樣的數(shù)據(jù)表, 需多次指定. 一般用于忽略視圖.

 

5.--no-data, -d

不導(dǎo)出數(shù)據(jù)表中的數(shù)據(jù).

 

6.--routines, -R

導(dǎo)出存儲(chǔ)過(guò)程.

 

7.--triggers

導(dǎo)出觸發(fā)器.

 

PerformanceOptions 組

 

1.--disable-keys

在備份的SQL文件中, 每個(gè)數(shù)據(jù)表的INSERT語(yǔ)句前后添加ALTER TABLE … DISABLE| ENABLE KEYS語(yǔ)句, SQL文件中顯示如下:

/*!40000ALTER TABLE `st1` DISABLE KEYS */;

INSERTINTO `st1` ...

/*!40000ALTER TABLE `st1` ENABLE KEYS */;

 

數(shù)據(jù)導(dǎo)入完成后, 再建立索引, 該導(dǎo)入效率會(huì)高些, 但此選項(xiàng)僅對(duì)MyISAM表的非唯一索引起作用.

 

2.--extended-insert, -e

使用Multiple-Row語(yǔ)法導(dǎo)出數(shù)據(jù), 即VALUES關(guān)鍵字后帶有多組值列表, 這樣產(chǎn)生的備份文件較小, 導(dǎo)入速斷也較快. SQL文件中顯示如下:

INSERTINTO `st1` VALUES (1,'aa',2),(2,'bb',4),(3,'cc',6),(4,'dd',8);

 

3. --opt

該選項(xiàng)代表一個(gè)選項(xiàng)組, 其包含的選項(xiàng)如下所示, 選項(xiàng)含義在前后都介紹到了.

--add-drop-table,--add-locks, --create-options, --disable-keys, --extended-insert,--lock-tables, --quick, --set-charset

 

其默認(rèn)是開(kāi)啟的.

 

4.--quick, -q

該選項(xiàng)指示mysqldump直接將備份數(shù)據(jù)寫(xiě)入SQL文件, 而不是先緩存到內(nèi)存中, 再寫(xiě)入文件.

 

其默認(rèn)是開(kāi)啟的.

 

TransactionalOptions 組

 

1.--add-locks

在備份的SQL文件中, 每個(gè)數(shù)據(jù)表的INSERT語(yǔ)句前后, 添加LOCK|UNLOCK TABLES語(yǔ)句, SQL文件中顯示如下:

LOCKTABLES `st1` WRITE;

INSERTINTO `st1` ...

UNLOCKTABLES;

 

這樣導(dǎo)入時(shí), 可以提升SQL文件中INSERT語(yǔ)句的插入速度.

 

其默認(rèn)是開(kāi)啟的.

 

2.--flush-privileges

備份完mysql(系統(tǒng)庫(kù))數(shù)據(jù)庫(kù)后, 加入FLUSH PRIVILEGES語(yǔ)句, 在SQL文件中顯示如下:

-- FlushGrant Tables

/*! FLUSHPRIVILEGES */;

 

3.--lock-all-tables, -x

通過(guò)該參數(shù), 獲取GLOBAL READ LOCK, 保證備份數(shù)據(jù)的一致性.

 

該選項(xiàng)和--single-transaction同時(shí)使用, 會(huì)有如下報(bào)錯(cuò):

mysqldump:You can't use --single-transaction and --lock-all-tables at the same time.

 

4.--lock-tables, -l

在備份每個(gè)數(shù)據(jù)庫(kù)之前, 會(huì)將其所有數(shù)據(jù)表鎖住, 在general log日志中顯示如下:

1459882Query   LOCK TABLES `st1` READ /*!32311LOCAL */,`st2` READ /*!32311 LOCAL */

1459882Query   UNLOCK TABLES

 

由于是分別鎖定的每個(gè)數(shù)據(jù)庫(kù), 備份數(shù)據(jù)可能會(huì)不一致.

 

5.--single-transaction

備份時(shí), 將隔離級(jí)別設(shè)置為REPEATABLE, 然后START TRANSACTION開(kāi)啟一個(gè)事物, 利用InnoDB存儲(chǔ)引擎的MVCC特性, 進(jìn)行數(shù)據(jù)一致性的備份.

 

注意, --single-transaction和--lock-all-tables選項(xiàng)是互斥的; --lock-tables和前面任何一個(gè)選項(xiàng)連用, 其都會(huì)被關(guān)閉.

 

 

下面看幾個(gè)實(shí)際使用到的mysqldump的實(shí)例

 

1. 導(dǎo)出數(shù)據(jù)庫(kù)stage的表結(jié)構(gòu).

mysql@db01:~/dbbackup$ mysqldump --login-path=mytest --default-character-set=utf8mb4--force --no-data --quick --result-file=stage_struc.sql --single-transactionstage

 

2. 備份數(shù)據(jù)庫(kù)stage中的數(shù)據(jù)表st2.

mysql@db01:~/dbbackup$ mysqldump --login-path=mytest --default-character-set=utf8mb4--force --hex-blob --quick --result-file=stage_st2.sql --single-transactionstage st2

 

3. 備份數(shù)據(jù)庫(kù)stage和test, 在日志error.txt可看到報(bào)錯(cuò)信息.

mysql@db01:~/dbbackup$ mysqldump --login-path=mytest --default-character-set=utf8mb4--force --log-error=error.txt --hex-blob --quick --result-file=stage_test.sql--single-transaction --databases stage test

 

mysql@db01:~/dbbackup$ cat error.txt

mysqldump:Couldn't execute 'SHOW FIELDS FROM `v_tb1`': View 'test.v_tb1' referencesinvalid table(s) or column(s) or function(s) or definer/invoker of view lackrights to use them (1356)

 

4. 在從數(shù)據(jù)庫(kù)進(jìn)行備份, 用于搭建另一個(gè)從數(shù)據(jù)庫(kù)節(jié)點(diǎn).

[mysql@db02dbbackup]$ mysqldump --login-path=mytest --add-drop-database --add-drop-trigger--default-character-set=utf8mb4 --dump-slave=2 --events --flush-privileges--force --log-error=error.txt --hex-blob --quick --routines--single-transaction --triggers --all-databases | gzip > all.sql.gz

 

[mysql@db02dbbackup]$ gzip -d all.sql.gz

 

[mysql@db02dbbackup]$ grep '\-\- CHANGE MASTER TO' all.sql

-- CHANGEMASTER TO MASTER_LOG_FILE='mysql-bin.000041', MASTER_LOG_POS=3068;

對(duì)于以上關(guān)于mysqldump工具在MySQL數(shù)據(jù)庫(kù)備份過(guò)程的作用,大家是不是覺(jué)得非常有幫助。如果需要了解更多內(nèi)容,請(qǐng)繼續(xù)關(guān)注我們的行業(yè)資訊,相信你會(huì)喜歡上這些內(nèi)容的。

網(wǎng)站題目:mysqldump工具在MySQL數(shù)據(jù)庫(kù)備份過(guò)程的作用
當(dāng)前鏈接:http://bm7419.com/article4/jdjdoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷(xiāo)、微信公眾號(hào)、全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站收錄網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷(xiāo)型網(wǎng)站建設(shè)