真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysqlpump-一個數(shù)據(jù)庫備份程序

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

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設,建湖企業(yè)網(wǎng)站建設,建湖品牌網(wǎng)站建設,網(wǎng)站定制,建湖網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,建湖網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

 

mysqlpump客戶端 執(zhí)行的是 邏輯備份

 

Mysqlpump 新特性

   并行執(zhí)行 數(shù)據(jù)庫和其中的對象,加快轉儲過程

   更好的控制哪些數(shù)據(jù)庫和數(shù)據(jù)庫對象 來轉儲導出

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

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

   備份進度指標(估計值 )

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

    備份可以排除或指定數(shù)據(jù)庫

 

 

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

功能

至少需要的權限

導出表

select 對應表權限

導出視圖

show view  對應視圖權限

導出存儲過程

trigger 對應存儲過程權限

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

LOCK TABLES

導出用戶定義

Select   mysql 系統(tǒng)庫的權限



  加載dump文件,必須有執(zhí)行 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 系統(tǒng)庫。要以邏輯定義( create user 和 grant )形式導出授權表,使用 --users 選項 并且禁止所有數(shù)據(jù)庫轉儲。

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

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

 

Mysqlpump 支持幾個選項,包含或排除數(shù)據(jù)庫、表、存儲過程、用戶定義??? mysqlpump object selection ,

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

shell> mysqlpump [ options ] > dump . sql

shell> mysql < dump . sql

 

Mysqlpump 選項概要

    mysqlpump 支持命令行指定選項,也可以在參數(shù)文件的 [mysqlpump]  and  [client] 的組中指定???/p>

Section 4.2.6, “Using Option Files” .

 

 

Table 4.15 mysqlpump Options

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

Format

Description

Introduced

--add-drop-database

Add   DROP DATABASE statement before each CREATE DATABASE statement

在建庫之前,先執(zhí)行刪除庫操作

DROP   DATABASE IF EXISTS `...`;


--add-drop-table

Add   DROP TABLE statement before each CREATE TABLE statement

在建表之前先執(zhí)行刪表操作。

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


--add-drop-user

Add   DROP USER statement before each CREATE USER statement

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

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


--add-locks

Surround   each table dump with LOCK TABLES and UNLOCK TABLES statements

備份表時,使用LOCK   TABLES和UNLOCK TABLES。 注意: 這個參數(shù)不支持并行備份,需要關閉并行備份功能: --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

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


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

在客戶端和服務器傳輸?shù)乃械臄?shù)據(jù)包壓縮,最后的備份集大小沒有任何改變,-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

手動指定要備份的庫,支持多個數(shù)據(jù)庫,用空格分隔,-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

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


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

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


--events

Dump   events from dumped databases

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


--exclude-databases

Databases   to exclude from dump

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

mysqlpump --exclude-databases =mysql,sys    # 備份過濾 mysql 和 sys 數(shù)據(jù)庫

mysqlpump --exclude-tables =rr,tt   # 備份過濾所有數(shù)據(jù)庫中 rr 、 tt 表

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

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

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字段的時候使用十六進制計數(shù)法,受影響的字段類型有BINARY、VARBINARY、BLOB、BIT。


--host

Host   to connect to (IP address or hostname)

備份指定的數(shù)據(jù)庫地址, -h 。


--include-databases

Databases   to include in dump

指定備份數(shù)據(jù)庫,多個用逗號分隔,類似的還有 --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

備份出現(xiàn)的 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 大小,當創(chuàng)建多行插入語句的時候, mysqlpump 創(chuàng)建行到 N 個字節(jié)長。


--no-create-db

Do   not write CREATE DATABASE statements

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


--no-create-info

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

備份不寫建表語句,即不備份表結構,只備份數(shù)據(jù), -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 不允許的話,可以少開幾個線程和數(shù)據(jù)庫進行并行備份


--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} :指定連接服務器的協(xié)議。


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

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


--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禁用此參數(shù),不會在備份文件里面寫出set names...


--set-gtid-purged

Whether   to add SET @@GLOBAL.GTID_PURGED to output

5.7.18

--single-transaction

Dump   tables within single transaction

該參數(shù)在事務隔離級別設置成 Repeatable Read ,并在 dump 之前發(fā)送 start transaction  語句給服務端。這在使用 innodb 時很有用,因為在發(fā)出 start transaction 時,保證了在不阻塞任何應用下的一致性狀態(tài)。對 myisam 和 memory 等非事務表,還是會改變狀態(tài)的,當使用此參的時候要確保沒有其他連接在使用 ALTER TABLE 、 CREATE TABLE 、 DROP TABLE 、 RENAME TABLE 、 TRUNCATE TABLE 等語句,否則會出現(xiàn)不正確的內(nèi)容或則失敗。 --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

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


--skip-dump-rows

Do   not dump table rows

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


--socket

For   connections to localhost, the Unix socket file to use


--ssl

Enable   encrypted connection

--ssl 參數(shù)將要被去除,用 --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

備份出來包含觸發(fā)器,默認開啟,使用 --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

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

mysqlpump --exclude-databases=% --users    # 過濾掉所有數(shù)據(jù)庫


--version

Display   version information and exit

5.7.9

--watch-progress

Display   progress indicator

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


 

 

不支持的參數(shù)  

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

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

 

使用說明:

mysqlpump的架構如下圖所示 :

 

mysqlpump - 一個數(shù)據(jù)庫備份程序

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

 

#mysqlpump 壓縮備份 vs 數(shù)據(jù)庫 三個并發(fā)線程備份,消耗時間: 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 數(shù)據(jù)庫 單個線程備份,消耗時間: 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 數(shù)據(jù)庫 三個并發(fā)線程備份,消耗時間: 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 數(shù)據(jù)庫,五個并發(fā)線程備份,并且開啟對一張表多個線程以 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允許的情況下,能用多線程就別用單線程備份。


當前名稱:mysqlpump-一個數(shù)據(jù)庫備份程序
當前URL:http://weahome.cn/article/pojgjo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部