91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

mysqldump工具在MySQL數據庫備份過程的作用

發布時間:2020-05-07 10:57:16 來源:億速云 閱讀:593 作者:三月 欄目:MySQL數據庫

下文主要給大家帶來mysqldump工具在MySQL數據庫備份過程的作用,希望這些文字能夠帶給大家實際用處,這也是我編輯mysqldump工具在MySQL數據庫備份過程的作用這篇文章的主要目的。好了,廢話不多說,大家直接看下文吧。

mysqldump工具是MySQL數據庫備份時, 經常用到的一個工具. 可以指定數據表, 某些數據庫, 所有數據庫級別的備份, 在命令行上敲入mysqldump回車, 可看到該三種方式的示例.

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數據庫備份過程的作用 

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

 

HelpOptions 組

 

1.--version

該組除了--help選項, 還有一個--version, 用于查看mysqldump的版本.

mysql@db01:~$ mysqldump --version

mysqldump  Ver 10.13 Distrib 5.6.24, for Linux (x86_64)

 

另外, 為了下面的說明演示, 用到的數據庫和數據表如下所示:

(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

若數據庫云服務器有多個網絡接口, 使用該選項設置其只監聽在某個接口上, 且只能通過該接口訪問數據庫.

 

2.--login-path=name

登錄路徑, 其是host, password, port, socket, user選項的集合. 后面的演示, 使用該登錄方式, 相關細節已在"MySQL數據庫登錄小貼士"中介紹過.

 

Option-FileOptions 組

 

1.--defaults-file=file_name

mysqldump只讀取該選項指定的配置文件中, client和mysqldump標簽下的參數. 若同時還指定了--login-path選項, 其還會讀取文件.mylogin.cnf.

 

2.--no-defaults

mysqldump不讀取任何配置文件, 一般用于讀到錯誤參數時的調試. 若同時還指定了--login-path選項, 其還會讀取文件.mylogin.cnf.

 

3.--print-defaults

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

 

DDLOptions 組

 

1.--add-drop-database

在備份的SQL文件中, 每個CREATE DATABASE語句前都明確寫入DROP DATABASE語句, SQL文件中顯示如下:

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

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

 

該選項一般和--all-databases或—databases一塊使用, 其默認是關閉的.

 

2.--add-drop-table

在CREATE TABLE語句前面, 寫入DROP TABLE語句, SQL文件中顯示如下:

DROPTABLE IF EXISTS `st1`;

CREATETABLE `st1` ...

 

其默認是開啟的.

 

3. --add-drop-trigger

在CREATE TRIGGER語句前, 寫入DROP TRIGGER語句.

 

其默認是關閉的.

 

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

和--databases或--all-databases一塊使用時, SQL文件中不寫入CREATE DATABASE語句.

 

其默認是關閉的.

 

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

SQL文件中不寫入CREATE TABLE語句, 即不導出數據表結構.

 

其默認是關閉的.

 

DebugOptions 組

 

1. --force,-f

mysqldump執行過程中, 若有SQL錯誤, 該過程仍會繼續, 同時打印錯誤日志到終端.

 

如有視圖v_tb1, 其依賴的表tb1改名為tb1_bak, 備份數據庫test時, 會有如下報錯, 且遇到錯誤, 備份過程就退出了.

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選項, 備份過程即使有錯誤, 其也會執行完.

 

2.--log-error=file_name

警告和錯誤日志輸會出到指定的文件中.

 

參考在--force選項中給出的例子, 如下所示, 報錯輸出到文件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'顯示的一樣. 若數據庫字符集是utf8mb4的, 備份時未指明字符集, 其默認會使用utf8字符集, 如此恢復數據時, 就有可能出現亂碼.

 

2.--set-charset

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

/*!40101SET NAMES utf8mb4 */;

 

ReplicationOptions 組

mysqldump經常用于在主從復制環境中, 搭建一個從數據庫節點, 以下是兩個相關參數.

 

1.--master-data[=value]

mysqldump通過在主庫獲取GLOBAL READ LOCK, 取得從庫復制開始的坐標, 即主庫上binlog日志的名稱和位置. 該過程在general log中顯示如下:

1457271Query   FLUSH /*!40101 LOCAL */ TABLES

1457271Query   FLUSH TABLES WITH READ LOCK

1457271Query   SHOW MASTER STATUS

1457271Query   UNLOCK TABLES

 

上面說的binlog日志名稱和位置, 會寫入CHANGE MASTER TO語句中, SQL文件中顯示如下:

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

 

該選項有2和1兩個值, 前者代表CHANGE MASTER TO語句是被注釋的, 后者沒注釋, 一般使用前者.

 

2.--dump-slave[=value]

該選項的含義, 和--master-data類似, 只不過是在從庫上執行的. 其通過停止從庫的SQL線程, 來獲取對應主庫上binlog日志的名稱和位置. 該過程在general log中顯示如下:

1770998Query   SHOW SLAVE STATUS

1770998Query   STOP SLAVE SQL_THREAD

1770998Query   SHOW SLAVE STATUS

1770998Query   UNLOCK TABLES

 

FormatOptions 組

 

1.--complete-insert, -c

INSERT語句中包含數據表字段列名, SQL文件中顯示如下:

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

 

2.--create-options

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

 

3.--hex-blob

對于BINARY, VARBINARY, BLOB和BIT二進制數據類型的數據, 以十六進制方式導出. 建議以該方式導出二進制數據, 這樣會避免一些由字符集轉換帶來的錯誤.

 

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

將備份數據輸出到指定的文件中, 使用該選項時, 不能邊備份邊壓縮, 對磁盤空間要求多些.

 

FilteringOptions 組

 

1. --all-databases,-A

備份除information_schema和performance_schema兩個數據庫之外的全部數據庫.

 

2.--databases, -B

備份指定的數據庫, 多個庫名間用空格分隔.

 

3. --events, -E

備份事件.

 

4.--ignore-table=db_name.tbl_name

指定不導出某數據庫中某數據表的數據, 若有多張這樣的數據表, 需多次指定. 一般用于忽略視圖.

 

5.--no-data, -d

不導出數據表中的數據.

 

6.--routines, -R

導出存儲過程.

 

7.--triggers

導出觸發器.

 

PerformanceOptions 組

 

1.--disable-keys

在備份的SQL文件中, 每個數據表的INSERT語句前后添加ALTER TABLE … DISABLE| ENABLE KEYS語句, SQL文件中顯示如下:

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

INSERTINTO `st1` ...

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

 

數據導入完成后, 再建立索引, 該導入效率會高些, 但此選項僅對MyISAM表的非唯一索引起作用.

 

2.--extended-insert, -e

使用Multiple-Row語法導出數據, 即VALUES關鍵字后帶有多組值列表, 這樣產生的備份文件較小, 導入速斷也較快. SQL文件中顯示如下:

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

 

3. --opt

該選項代表一個選項組, 其包含的選項如下所示, 選項含義在前后都介紹到了.

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

 

其默認是開啟的.

 

4.--quick, -q

該選項指示mysqldump直接將備份數據寫入SQL文件, 而不是先緩存到內存中, 再寫入文件.

 

其默認是開啟的.

 

TransactionalOptions 組

 

1.--add-locks

在備份的SQL文件中, 每個數據表的INSERT語句前后, 添加LOCK|UNLOCK TABLES語句, SQL文件中顯示如下:

LOCKTABLES `st1` WRITE;

INSERTINTO `st1` ...

UNLOCKTABLES;

 

這樣導入時, 可以提升SQL文件中INSERT語句的插入速度.

 

其默認是開啟的.

 

2.--flush-privileges

備份完mysql(系統庫)數據庫后, 加入FLUSH PRIVILEGES語句, 在SQL文件中顯示如下:

-- FlushGrant Tables

/*! FLUSHPRIVILEGES */;

 

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

通過該參數, 獲取GLOBAL READ LOCK, 保證備份數據的一致性.

 

該選項和--single-transaction同時使用, 會有如下報錯:

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

 

4.--lock-tables, -l

在備份每個數據庫之前, 會將其所有數據表鎖住, 在general log日志中顯示如下:

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

1459882Query   UNLOCK TABLES

 

由于是分別鎖定的每個數據庫, 備份數據可能會不一致.

 

5.--single-transaction

備份時, 將隔離級別設置為REPEATABLE, 然后START TRANSACTION開啟一個事物, 利用InnoDB存儲引擎的MVCC特性, 進行數據一致性的備份.

 

注意, --single-transaction和--lock-all-tables選項是互斥的; --lock-tables和前面任何一個選項連用, 其都會被關閉.

 

 

下面看幾個實際使用到的mysqldump的實例

 

1. 導出數據庫stage的表結構.

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

 

2. 備份數據庫stage中的數據表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. 備份數據庫stage和test, 在日志error.txt可看到報錯信息.

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. 在從數據庫進行備份, 用于搭建另一個從數據庫節點.

[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;

對于以上關于mysqldump工具在MySQL數據庫備份過程的作用,大家是不是覺得非常有幫助。如果需要了解更多內容,請繼續關注我們的行業資訊,相信你會喜歡上這些內容的。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

茶陵县| 尖扎县| 横峰县| 景谷| 宕昌县| 皮山县| 永宁县| 黄大仙区| 甘谷县| 香格里拉县| 华阴市| 来凤县| 教育| 那曲县| 孟州市| 荃湾区| 潮州市| 辽宁省| 淳化县| 天祝| 长沙县| 阳原县| 海丰县| 玛多县| 武穴市| 宁德市| 江都市| 平塘县| 海兴县| 隆林| 满洲里市| 炎陵县| 常山县| 吴桥县| 巧家县| 仁化县| 莱西市| 鹿邑县| 北票市| 北川| 贵溪市|