重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設、域名注冊、服務器等服務
為企業(yè)提供網(wǎng)站建設、域名注冊、服務器等服務
這篇文章主要介紹了多線程備份工具mydumper怎么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比遷西網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式遷西網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋遷西地區(qū)。費用合理售后完善,十余年實體公司更值得信賴。
安裝
點擊(此處)折疊或打開
依賴安裝
debian
apt-get install libglib2.0-dev
apt-get install libMySQLclient-dev
apt-get install libghc-zlib-dev
apt-get install libpcre++-dev
centos
yum install glib2-devel mysql-devel zlib-devel pcre-devel
# wget https://launchpad.net/ubuntu/+archive/primary/+files/mydumper_0.9.1.orig.tar.gz
# tar xzvf mydumper_0.9.1.orig.tar.gz
# cd mydumper-0.9.1/
# cmake .
# make && make
說明
點擊(此處)折疊或打開
# mydumper --help
Usage:
mydumper [OPTION...] multi-threaded MySQL dumping
Help Options:
-?, --help Show help options
Application Options:
-B, --database (指定要導出的數(shù)據(jù)庫)
-T, --tables-list (指定要導出的表,多個表逗號分隔,不支持正則表達式)
-o, --outputdir (指定輸出目錄)
-s, --statement-size (導出的insert語句長度指定,單位字節(jié),默認100wziji)
-r, --rows (即水平拆分表進行存儲,單位行數(shù),這個選項會使--chunk-filesize失效)
-F, --chunk-filesize (即水平拆分表進行存儲,單位 MB)
-c, --compress (壓縮輸出文件)
-e, --build-empty-files (空數(shù)據(jù)的表也生成文件)
-x, --regex (正則表達式 匹配'db.table')
-i, --ignore-engines (設定需要忽略的存儲引擎表,多個以逗號分隔)
-m, --no-schemas (不要導出schema庫中有數(shù)據(jù)的表)
-d, --no-data (僅僅導出表結構,不要數(shù)據(jù))
-G, --triggers (導出觸發(fā)器)
-E, --events (導出event)
-R, --routines (導出存儲過程)
-k, --no-locks (導出數(shù)據(jù)過程中不要臨時使用讀鎖). WARNING: This will cause inconsistent backups
--less-locking Minimize locking time on InnoDB tables.
-l, --long-query-guard (定義超過多久的查詢?yōu)閘ong querY ,默認60,單位 s)
-K, --kill-long-queries (kill掉long query)(instead of aborting)
-D, --daemon (使用守護進程的模式)
-I, --snapshot-interval (dump快照之間的間隔設置,需要帶上--daemon參數(shù)啟動,默認60,單位minutes)
-L, --logfile Log file name to use, by default stdout is used
--tz-utc SET TIME_ZONE='+00:00' at top of dump to allow dumping of TIMESTAMP data when a server has data in different time zones or data is being moved between servers with different time zones, defaults to on use --skip-tz-utc to disable.
--skip-tz-utc
--use-savepoints Use savepoints to reduce metadata locking issues, needs SUPER privilege
--success-on-1146 Not increment error count and Warning instead of Critical in case of table doesn
--lock-all-tables Use LOCK TABLE for all, instead of FTWRL (鎖定所有表)
-U, --updated-since Use Update_time to dump only tables updated in the last U days
--trx-consistency-only Transactional consistency only (事務一致)
-t, --threads Number of threads to use, default 4(備份線程數(shù),默認為4)
-C, --compress-protocol Use compression on the MySQL connection(連接壓縮)
-v, --verbose Verbosity of output, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2
默認連接參數(shù)
-h, --host The host to connect to
-u, --user Username with privileges to run the dump
-p, --password User password
-P, --port TCP/IP port to connect to
-S, --socket UNIX domain socket file to use for connection
測試
點擊(此處)折疊或打開
mydumper -u root -p xxx -B db_slave -e -o db_slave_dir
目錄文件如下:
其中各文件說明
建庫文件 db_slave-schema-create.sql (通用格式dbname-schema-create.sql)
點擊(此處)折疊或打開
# cat db_slave-schema-create.sql
CREATE DATABASE `db_slave` /*!40100 DEFAULT CHARACTER SET latin1 */;
建表文件 db_slave.t_check_flag-schema.sql(通用格式dbname.tbname-schema.sql)
點擊(此處)折疊或打開
# cat db_slave.t_check_flag-schema.sql
/*!40101 SET NAMES binary*/;
/*!40014 SET FOREIGN_KEY_CHECKS=0*/;
CREATE TABLE `t_check_flag` (
`db_ip` char(16) NOT NULL DEFAULT '',
`check_flag` tinyint(4) DEFAULT '0' COMMENT '1 monitor 0 not '
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
數(shù)據(jù)文件 db_slave.t_check_flag.sql(通用格式dbname.tbname.sql)
點擊(此處)折疊或打開
# cat db_slave.t_check_flag.sql
/*!40101 SET NAMES binary*/;
/*!40014 SET FOREIGN_KEY_CHECKS=0*/;
/*!40103 SET TIME_ZONE='+00:00' */;
INSERT INTO `t_check_flag` VALUES
("192.168.111.129",1),
("192.168.111.130",1),
("192.168.111.26",1);
整體導出信息文件 metadata(這里記錄了開始時間,結束時間,以及導出開始時的binlog信息,對于建立從庫比較方便)
點擊(此處)折疊或打開
# cat metadata
Started dump at: 2016-11-19 13:38:56
SHOW MASTER STATUS:
Log: 2104.014976
Pos: 85965870
GTID:(null)
Finished dump at: 2016-11-19 13:38:56
過程描述
打開general_log可以看到如下日志
點擊(此處)折疊或打開
148901 Connect root@localhost on db_slave
148901 Query SET SESSION wait_timeout = 2147483
148901 Query SET SESSION net_write_timeout = 2147483
148901 Query SHOW PROCESSLIST
148901 Query FLUSH TABLES WITH READ LOCK
148901 Query SELECT @@tokudb_version
148901 Query START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT */
148901 Query /*!40101 SET NAMES binary*/
148901 Query SHOW MASTER STATUS
148901 Query SELECT @@gtid_current_pos
148901 Query SELECT @@default_master_connection
148901 Query SHOW SLAVE STATUS
148902 Connect root@localhost on
148902 Query SET SESSION wait_timeout = 2147483
148902 Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
148902 Query START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT */
148902 Query /*!40103 SET TIME_ZONE='+00:00' */
148902 Query /*!40101 SET NAMES binary*/
148903 Connect root@localhost on
148903 Query SET SESSION wait_timeout = 2147483
148903 Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
148903 Query START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT */
148903 Query /*!40103 SET TIME_ZONE='+00:00' */
148903 Query /*!40101 SET NAMES binary*/
148904 Connect root@localhost on
148904 Query SET SESSION wait_timeout = 2147483
148904 Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
148904 Query START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT */
148904 Query /*!40103 SET TIME_ZONE='+00:00' */
148904 Query /*!40101 SET NAMES binary*/
148905 Connect root@localhost on
148905 Query SET SESSION wait_timeout = 2147483
148905 Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
148905 Query START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT */
148905 Query /*!40103 SET TIME_ZONE='+00:00' */
148905 Query /*!40101 SET NAMES binary*/
148901 Init DB db_slave
148901 Query SHOW TABLE STATUS
148901 Query SHOW CREATE DATABASE `db_slave`
148901 Query UNLOCK TABLES /* FTWRL */
148902 Query SELECT /*!40001 SQL_NO_CACHE */ * FROM `db_slave`.`t_check_flag`
148903 Query SELECT /*!40001 SQL_NO_CACHE */ * FROM `db_slave`.`t_master_instance`
148901 Quit
148904 Query SHOW CREATE TABLE `db_slave`.`t_check_flag`
148905 Query SHOW CREATE TABLE `db_slave`.`t_master_instance`
①連接數(shù)據(jù)庫
②判斷長查詢相關,--long-query-guard和--kill-long-queries
③flush tables with read locks ,備份mysiam表完成會立即unlock tables; 對于innodb表,mydumper·使用single transaction的方式進行備份。因此mysiam表的大小及數(shù)量影響著mysiam的備份時間進而影響著業(yè)務是否只讀。
④通過 -t 參數(shù)指定的線程數(shù)量進行創(chuàng)建,并進行工作worker子線程
⑤確定當前要導出的表,并把待導出表加入到隊列中。
⑥備份完成退出(其中mysiam完成會unlock tables;)
總結:
①可以使用 -t 參數(shù)指定線程數(shù),多線程同時備份速度可以提升,但是也依賴于磁盤的IO性能
②導出過程要加讀鎖,建議在業(yè)務低峰期進行。
③在從庫備份的時候,metadata中也是記錄當前從庫已執(zhí)行到的binlog文件以及位置
④定時任務備份可使用 -v 參數(shù)輸出相應等級的信息,作為備份日志。
⑤當庫過于龐大的時候,建議使用 -c 參數(shù)對結果進行壓縮。
⑥單表過于龐大的時候,可以使用 -r 或者 -F 參數(shù)分解,避免單表備份時間過長(不拆的話就是 one thread 進行導出)
感謝你能夠認真閱讀完這篇文章,希望小編分享的“多線程備份工具mydumper怎么用”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關知識等著你來學習!