新聞中心
1、簡(jiǎn)介
成都創(chuàng)新互聯(lián)公司專注于東興企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站開發(fā)。東興網(wǎng)站建設(shè)公司,為東興等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站開發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)邏輯備份小鋼炮--mydumper是針對(duì)MySQL的高性能多線程備份工具。該工具是由MySQL、Facebook、skysql公司的開發(fā)人員一起開發(fā)的。是由輕量級(jí)C語言開發(fā);執(zhí)行速度據(jù)說比mysqldump快10倍;支持事務(wù)和非事務(wù)表的一致性備份;還支持導(dǎo)出binlog;支持多線程備份;支持以守護(hù)進(jìn)程的形式工作,定時(shí)備份;并且是開源的,其協(xié)議為GPLv3.
2、使用方法
root@dd:~/mydumper-0.6.2# ./mydumper --help
Usage:
mydumper [OPTION...] multi-threaded MySQL dumping
Help Options:
-?, --help Show help options
Application Options:
-B, --database 需要備份的庫(kù)
-T, --tables-list 需要備份的表,用逗號(hào)分隔
-o, --outputdir 輸出文件的目錄
-s, --statement-size 生成插入語句的字節(jié)數(shù), 默認(rèn) 1000000,這個(gè)參數(shù)不能太小,不然會(huì)報(bào) Row bigger than statement_size for tools.t_serverinfo
-r, --rows 分裂成很多行塊表
-c, --compress 壓縮輸出文件
-e, --build-empty-files 即使表沒有數(shù)據(jù),還是產(chǎn)生一個(gè)空文件
-x, --regex 正則表達(dá)式: 'db.table'
-i, --ignore-engines 忽略的存儲(chǔ)引擎,用逗號(hào)分隔
-m, --no-schemas 不導(dǎo)出表結(jié)構(gòu)
-k, --no-locks 不執(zhí)行共享讀鎖 警告:這將導(dǎo)致不一致的備份
-l, --long-query-guard 設(shè)置長(zhǎng)查詢時(shí)間,默認(rèn)60秒,超過該時(shí)間則會(huì)報(bào)錯(cuò):There are queries in PROCESSLIST running longer than 60s, aborting dump
--kill-long-queries kill掉長(zhǎng)時(shí)間執(zhí)行的查詢
-b, --binlogs 導(dǎo)出binlog
-D, --daemon 啟用守護(hù)進(jìn)程模式
-I, --snapshot-interval dump快照間隔時(shí)間,默認(rèn)60s,需要在daemon模式下
-L, --logfile 日志文件
-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
-t, --threads 使用的線程數(shù),默認(rèn)4
-C, --compress-protocol 在mysql連接上使用壓縮協(xié)議
-V, --version Show the program version and exit
-v, --verbose 更多輸出, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2
3、原理解析
1)該工具在--daemo模式下支持以守護(hù)進(jìn)行形式啟動(dòng),默認(rèn)每60s進(jìn)行一次備份。間隔時(shí)間由--snapshot-interval控制。
2)首先會(huì)創(chuàng)建一個(gè)MySQL服務(wù)的連接
3)然后在MySQL上執(zhí)行show processlist,根據(jù)參數(shù)long-query-guard和kill-long-queries決定退出或殺掉長(zhǎng)查詢;
4)根據(jù)是否有--lock-all-tables,進(jìn)行鎖表:LOCK TABLE tn READ或者FLUSH TABLES WITH READ LOCK;然后執(zhí)行START TRANSACTION;
5)創(chuàng)建4個(gè)備份表的子線程
6)創(chuàng)建1個(gè)work thread后,g_async_queue_pop(conf.ready);此時(shí)conf.ready為空需要sleep等待。
7)work線程執(zhí)行:連接mysql;設(shè)置隔離級(jí)別RR;start transaction;g_async_queue_push(conf->ready,GINT_TO_POINTER(1));然后main函數(shù)的g_async_queue_pop掛住的地方可以喚醒了,繼續(xù)創(chuàng)建線程或者向下走。
8)work線程接著執(zhí)行:進(jìn)入死循環(huán),從隊(duì)列里pop出任務(wù)job=(struct job *)g_async_queue_pop(conf->queue);,根據(jù)任務(wù)類型進(jìn)行dump。這里的并行是根據(jù)表并行的。先備份非事務(wù)表,然后備份innodb表
9)最后等所有work線程完成非事務(wù)表備份后喚醒g_async_queue_pop(conf.unlock_tables);,執(zhí)行UNLOCK TABLES解鎖
10)事務(wù)結(jié)束
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前題目:mydumper工作原理解析-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://fisionsoft.com.cn/article/dhsjop.html