中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

mysqlpump - 一個數據庫備份程序

發布時間:2020-08-09 16:17:06 來源:ITPUB博客 閱讀:241 作者:steven_hua 欄目:MySQL數據庫

Mysql 5.7 之后多了一個備份工具, mysqlpump

 

mysqlpump客戶端 執行的是 邏輯備份

 

Mysqlpump 新特性

   并行執行 數據庫和其中的對象,加快轉儲過程

   更好的控制哪些數據庫和數據庫對象 來轉儲導出

   導出用戶賬號 作為賬號管理語句( create user , grant ),而不是插入到mysql系統數據庫中

    備份出來直接生成壓縮備份文件

   備份進度指標(估計值 )

    轉儲文件加載(還原),先建表后插入數據,最后建立索引,減少索引的維護開銷,加快還原速度 .

    備份可以排除或指定數據庫

 

 

  mysqlpump 需要的 權限, 不同的選項,需要不同的權限,可以在選項說明中查看。

功能

至少需要的權限

導出表

select 對應表權限

導出視圖

show view  對應視圖權限

導出存儲過程

trigger 對應存儲過程權限

 --single-transaction 選項沒有使用時

LOCK TABLES

導出用戶定義

Select   mysql 系統庫的權限



  加載dump文件,必須有執行 dump文件所包含的語句 的權限,如 create 等。

 

 NOTE

       在windows上使用powershell 導出時,重定向到一個新建文件,會使用 utf-16 編碼,這會導致錯誤,因為MySQL 連接字符集不支持utf-16 .

shell> mysqlpump [ options ] > dump . sql                     錯誤

可以使用 --result -file 選項,來輸出到 ASCII 格式的文件上。

shell> mysqlpump [ options ] --result-file = dump.sql          正確

 

Mysqldump 調用語法

 

shell> mysqlpump --all-databases  

shell> mysqlpump db_name

shell> mysqlpump db_name tbl_name1 tbl_name2 ...

 

導出指定的多個庫

shell> mysqlpump --databases db_name1 db_name2 ...

 

默認情況, mysql p ump 不導出用戶賬戶定義,即使你導出含有授權表的 mysql 系統庫。要以邏輯定義( create user grant )形式導出授權表,使用 --users 選項 并且禁止所有數據庫轉儲。

shell> mysqlpump --exclude-databases = % --users

這里的 % 是個通配符,他匹配所有的庫, --exclude-database=% 即排除所有的庫

 

Mysqlpump 支持幾個選項,包含或排除數據庫、表、存儲過程、用戶定義。看 mysqlpump object selection ,

要加載轉儲文件,執行它包含的語句,如下:

shell> mysqlpump [ options ] > dump . sql

shell> mysql < dump . sql

 

Mysqlpump 選項概要

    mysqlpump 支持命令行指定選項,也可以在參數文件的 [mysqlpump]  and  [client] 的組中指定。看

Section 4.2.6, “Using Option Files” .

 

 

Table 4.15 mysqlpump Options

參數絕大多數和 mysqldump 一致 , 對于 mysqlpump 參數會用背景色      標記出來。

Format

Description

Introduced

--add-drop-database

Add   DROP DATABASE statement before each CREATE DATABASE statement

在建庫之前,先執行刪除庫操作

DROP   DATABASE IF EXISTS `...`;


--add-drop-table

Add   DROP TABLE statement before each CREATE TABLE statement

在建表之前先執行刪表操作。

DROP TABLE IF EXISTS `...`.`...`;


--add-drop-user

Add   DROP USER statement before each CREATE USER statement

在CREATE   USER語句之前增加DROP USER, 注意: 這個參數需要和 --users 一起使用,否者不生效。

DROP   USER 'backup' @ '192.168.123.%' ;


--add-locks

Surround   each table dump with LOCK TABLES and UNLOCK TABLES statements

備份表時,使用LOCK   TABLES和UNLOCK TABLES。 注意: 這個參數不支持并行備份,需要關閉并行備份功能: --default-parallelism =0  

LOCK TABLES   `...`.`...` WRITE;
...
UNLOCK TABLES;


--all-databases

Dump all databases  

備份所有庫,-A。


--bind-address

Use   specified network interface to connect to MySQL Server

指定通過哪個網絡接口來連接 Mysql 服務器(一臺服務器可能有多個 IP ),防止同一個網卡出去影響業務。


--character-sets-dir

Directory   where character sets are installed

 


--complete-insert

Use   complete INSERT statements that include column names

dump 出包含所有列的完整 insert 語句。


--compress

Compress   all information sent between client and server

在客戶端和服務器傳輸的所有的數據包壓縮,最后的備份集大小沒有任何改變,-C。

若要改變備份集大小:

compress=true     |gzip

不過時間,會用到 5 倍于 compress= false

會幾倍于 --compress-output呢?


--compress-output

Output   compression algorithm

默認不壓縮輸出,目前可以使用的壓縮算法有LZ4和ZLIB。

shell>   mysqlpump --compress-output=LZ4 > dump.lz4
shell> lz4_decompress dump.lz4   dump.txt

shell>   mysqlpump --compress-output=ZLIB > dump.zlib
shell> zlib_decompress dump.zlib   dump.txt


--databases

Interpret   all name arguments as database names

手動指定要備份的庫,支持多個數據庫,用空格分隔,-B。


--debug

Write   debugging log


--debug-check

Print   debugging information when program exits


--debug-info

Print   debugging information, memory, and CPU statistics when program exits


--default-auth

Authentication   plugin to use


--default-character-set

Specify   default character set

指定備份的字符集。


--default-parallelism

Default   number of threads for parallel processing

指定并行線程數,默認是2,如果設置成0,表示不使用并行備份。 注意: 每個線程的備份步驟是:先create table但不建立二級索引(主鍵會在create   table時候建立),再寫入數據,最后建立二級索引。


--defaults-extra-file

Read   named option file in addition to usual option files


--defaults-file

Read   only named option file


--defaults-group-suffix

Option   group suffix value


--defer-table-indexes

For   reloading, defer index creation until after loading table rows

延遲創建索引,直到所有數據都加載完之后,再創建索引,默認開啟。若關閉則會和 mysqldump 一樣:先創建一個表和所有索引,再導入數據,因為在加載還原數據的時候要維護二級索引的開銷,導致效率比較低。關閉使用參數: --skip--defer-table-indexes


--events

Dump   events from dumped databases

備份數據庫的事件,默認開啟,關閉使用--skip-events參數。


--exclude-databases

Databases   to exclude from dump

備份排除該參數指定的數據庫,多個用逗號分隔。類似的還有 --exclude-events --exclude-routines --exclude-tables --exclude-triggers --exclude-users

mysqlpump --exclude-databases =mysql,sys    # 備份過濾 mysql sys 數據庫

mysqlpump --exclude-tables =rr,tt   # 備份過濾所有數據庫中 rr tt

mysqlpump -B test --exclude-tables =tmp_ifulltext,tt # 備份過濾 test 庫中的 rr tt
    …

注意: 要是只備份數據庫的賬號,需要添加參數 --users ,并且需要過濾掉所有的數據庫,如:

mysqlpump --users --exclude-databases = % --exclude-users =dba,backup  # 備份除 dba backup 的所有賬號。

 


--exclude-events

Events   to exclude from dump


--exclude-routines

Routines   to exclude from dump


--exclude-tables

Tables   to exclude from dump


--exclude-triggers

Triggers   to exclude from dump


--exclude-users

Users   to exclude from dump


--extended-insert

Use   multiple-row INSERT syntax


--get-server-public-key

Request   RSA public key from server

5.7.23

--help

Display   help message and exit


--hex-blob

Dump   binary columns using hexadecimal notation

備份binary字段的時候使用十六進制計數法,受影響的字段類型有BINARY、VARBINARY、BLOB、BIT。


--host

Host   to connect to (IP address or hostname)

備份指定的數據庫地址, -h


--include-databases

Databases   to include in dump

指定備份數據庫,多個用逗號分隔,類似的還有 --include-events --include-routines --include-tables --include-triggers --include-users ,大致方法使用同 15


--include-events

Events   to include in dump


--include-routines

Routines   to include in dump


--include-tables

Tables   to include in dump


--include-triggers

Triggers   to include in dump


--include-users

Users   to include in dump


--insert-ignore

Write   INSERT IGNORE rather than INSERT statements

備份用insert   ignore語句代替insert語句。


--log-error-file

Append   warnings and errors to named file

備份出現的 warnings erros 信息輸出到一個指定的文件。


--login-path

Read login path options from .mylogin.cnf

 


--max-allowed-packet

Maximum   packet length to send to or receive from server

備份時用于client/server直接通信的最大buffer包的大小。


--net-buffer-length

Buffer   size for TCP/IP and socket communication

備份時用于 client/server 通信的初始 buffer 大小,當創建多行插入語句的時候, mysqlpump 創建行到 N 個字節長。


--no-create-db

Do   not write CREATE DATABASE statements

備份不寫CREATE   DATABASE語句。要是備份多個庫,需要使用參數-B,而使用-B的時候會出現create database語句,該參數可以屏蔽create   database 語句。


--no-create-info

Do   not write CREATE TABLE statements that re-create each dumped table

備份不寫建表語句,即不備份表結構,只備份數據, -t


--no-defaults

Read   no option files


--parallel-schemas

Specify   schema-processing parallelism

指定并行備份的庫,多個庫用逗號分隔,如果指定了N,將使用N個線程的地隊列,如果N不指定,將由 --default-parallelism才確認N的值,可以設置多個 --parallel-schemas

mysqlpump --parallel-schemas=4:vs,aa   --parallel-schemas=3:pt    #4 個線程備份 vs aa 3 個線程備份 pt 。通過 show processlist 可以看到有 7 個線程。

mysqlpump --parallel-schemas=vs,abc   --parallel-schemas=pt   # 默認 2 個線程,即 2 個線程備份 vs abc 2 個線程備份 pt

#### 當然要是硬盤 IO 不允許的話,可以少開幾個線程和數據庫進行并行備份


--password

Password   to use when connecting to server


--plugin-dir

Directory   where plugins are installed


--port

TCP/IP   port number for connection


--print-defaults

Print   default options


--protocol

Connection   protocol to use

{TCP|SOCKET|PIPE|MEMORY} :指定連接服務器的協議。


--replace

Write   REPLACE statements rather than INSERT statements

備份出來 replace into 語句。


--result-file

Direct   output to a given file


--routines

Dump   stored routines (procedures and functions) from dumped databases

備份出來包含存儲過程和函數,默認開啟, 需要對  mysql.proc表有查看權限 。生成的文件中會包含CREATE   PROCEDURE 和 CREATE FUNCTION語句以用于恢復,關閉則需要用--skip-routines參數。


--secure-auth

Do   not send passwords to server in old (pre-4.1) format


--server-public-key-path

Path   name to file containing RSA public key

5.7.23

--set-charset

Add   SET NAMES default_character_set to output

備份文件里寫SET NAMES   default_character_set 到輸出,此參默認開啟。 --   skip-set-charset禁用此參數,不會在備份文件里面寫出set names...


--set-gtid-purged

Whether   to add SET @@GLOBAL.GTID_PURGED to output

5.7.18

--single-transaction

Dump   tables within single transaction

該參數在事務隔離級別設置成 Repeatable Read ,并在 dump 之前發送 start transaction  語句給服務端。這在使用 innodb 時很有用,因為在發出 start transaction 時,保證了在不阻塞任何應用下的一致性狀態。對 myisam memory 等非事務表,還是會改變狀態的,當使用此參的時候要確保沒有其他連接在使用 ALTER TABLE CREATE TABLE DROP TABLE RENAME TABLE TRUNCATE TABLE 等語句,否則會出現不正確的內容或則失敗。 --add-locks 和此參互斥,在 mysql5.7.11 之前, --default-parallelism 大于 1 的時候和此參也互斥,必須使用 --default-parallelism=0 5.7.11 之后解決了 --single-transaction --default-parallelism 的互斥問題。


--skip-definer

Omit   DEFINER and SQL SECURITY clauses from view and stored program CREATE   statements

忽略那些創建視圖和存儲過程用到的 DEFINER 和 SQL   SECURITY 語句,恢復的時候,會使用默認值,否則會在還原的時候看到沒有DEFINER定義時的賬號而報錯。


--skip-dump-rows

Do   not dump table rows

只備份表結構,不備份數據,-d。 注意: mysqldump支持--no-data,mysqlpump不支持--no-data


--socket

For   connections to localhost, the Unix socket file to use


--ssl

Enable   encrypted connection

--ssl 參數將要被去除,用 --ssl-mode 取代。關于 ssl 相關的備份,請看 官方文檔


--ssl-ca

File   that contains list of trusted SSL Certificate Authorities


--ssl-capath

Directory   that contains trusted SSL Certificate Authority certificate files


--ssl-cert

File   that contains X.509 certificate


--ssl-cipher

List   of permitted ciphers for connection encryption


--ssl-crl

File   that contains certificate revocation lists


--ssl-crlpath

Directory   that contains certificate revocation list files


--ssl-key

File   that contains X.509 key


--ssl-mode

Security   state of connection to server

5.7.11

--ssl-verify-server-cert

Verify   host name against server certificate Common Name identity


--tls-version

Protocols   permitted for encrypted connections

5.7.10

--triggers

Dump   triggers for each dumped table

備份出來包含觸發器,默認開啟,使用 --skip-triggers 來關閉。


--tz-utc

Add   SET TIME_ZONE='+00:00' to dump file


--user

MySQL user name to use when connecting to server .

-u


--users

Dump   user accounts

備份數據庫用戶,備份的形式是CREATE   USER...,GRANT...,只備份數據庫賬號可以通過如下命令:

mysqlpump --exclude-databases=% --users    # 過濾掉所有數據庫


--version

Display   version information and exit

5.7.9

--watch-progress

Display   progress indicator

定期顯示進度的完成,包括總數表、行和其他對象。該參數默認開啟,用 --skip-watch-progress 來關閉。


 

 

不支持的參數  

--flush-logs --flush-privileges       看來 5.7 不需要導出時做這些動作了

--master-data --dump-slave      沒有這個怎么搭建從庫呢


 

使用說明:

mysqlpump的架構如下圖所示

 

mysqlpump - 一個數據庫備份程序

mysqlpump支持基于庫和表的并行導出,mysqlpump的并行導出功能的架構為:隊列+線程,允許有多個隊列( --parallel-schemas ?),每個隊列下有多個線程(N?),而一個隊列可以綁定1個或者多個數據庫(逗號分隔)。 mysqlpump的備份是基于表并行的,對于每張表的導出只能是單個線程的 ,這里會有個限制是如果某個數據庫有一張表非常大,可能大部分的時間都是消耗在這個表的備份上面,并行備份的效果可能就不明顯。這里可以利用 mydumper 其是以chunk的方式批量導出,即 mydumper支持一張表多個線程以chunk的方式批量導出 。但是相對于mysqldump還是有了很大的提升。這里大致測試下mysqlpump和mysqldump的備份效率。  

 

#mysqlpump 壓縮備份 vs 數據庫 三個并發線程備份,消耗時間: 222s

mysqlpump -uzjy -p -h292.168.123.70 --single-transaction --default-character-set=utf8 --compress-output=LZ4 --default-parallelism=3 -B vs > /home/zhoujy/vs_db.sql.lz4

 

#mysqldump 備份壓縮 vs 數據庫 單個線程備份,消耗時間: 900s gzip 的壓縮率比 LZ4 的高

mysqldump -uzjy -p -h292.168.123.70 --default-character-set=utf8 -P3306 --skip-opt --add-drop-table --create-options  --quick --extended-insert --single-transaction -B vs | gzip > /home/zhoujy/vs.sql.gz

 

#mydumper 備份 vs 數據庫 三個并發線程備份,消耗時間: 300s gzip 的壓縮率比 LZ4 的高

mydumper -u zjy -p  -h 192.168.123.70 -P 3306 -t 3 -c -l 3600 -s 10000000 -B vs -o /home/zhoujy/vs/

 

#mydumper 備份 vs 數據庫,五個并發線程備份,并且開啟對一張表多個線程以 chunk 的方式批量導出, -r 。消耗時間: 180s

mydumper -u zjy -p  -h 192.168.123.70 -P 3306 -t 5 -c -r 300000 -l 3600 -s 10000000 -B vs -o /home/zhoujy/vs/

 

從上面看出,mysqlpump的備份效率是最快的,mydumper次之,mysqldump最差。所以在IO允許的情況下,能用多線程就別用單線程備份。


向AI問一下細節

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

AI

五大连池市| 中方县| 鄂伦春自治旗| 肃北| 鄯善县| 蒙自县| 中山市| 柘荣县| 平阴县| 平顶山市| 松阳县| 页游| 逊克县| 西峡县| 勐海县| 麻城市| 莎车县| 蒙城县| 桂阳县| 宣威市| 牟定县| 邮箱| 香河县| 涞水县| 翼城县| 敦化市| 桂林市| 天等县| 远安县| 三明市| 武义县| 兴安盟| 西畴县| 青州市| 玛多县| 武鸣县| 读书| 江门市| 怀仁县| 长垣县| 托里县|