亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

mydumper工作原理解析

發布時間:2020-03-03 00:09:26 來源:網絡 閱讀:1188 作者:yzs的專欄 欄目:MySQL數據庫

1、簡介

邏輯備份小鋼炮--mydumper是針對MySQL的高性能多線程備份工具。該工具是由MySQL、Facebook、skysql公司的開發人員一起開發的。是由輕量級C語言開發;執行速度據說比mysqldump快10倍;支持事務和非事務表的一致性備份;還支持導出binlog;支持多線程備份;支持以守護進程的形式工作,定時備份;并且是開源的,其協議為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              需要備份的庫  
  -T, --tables-list           需要備份的表,用逗號分隔  
  -o, --outputdir             輸出文件的目錄  
  -s, --statement-size        生成插入語句的字節數, 默認 1000000,這個參數不能太小,不然會報 Row bigger than statement_size for tools.t_serverinfo  
  -r, --rows                  分裂成很多行塊表  
  -c, --compress              壓縮輸出文件  
  -e, --build-empty-files     即使表沒有數據,還是產生一個空文件  
  -x, --regex                 正則表達式: 'db.table'  
  -i, --ignore-engines        忽略的存儲引擎,用逗號分隔  
  -m, --no-schemas            不導出表結構  
  -k, --no-locks              不執行共享讀鎖 警告:這將導致不一致的備份  
  -l, --long-query-guard      設置長查詢時間,默認60秒,超過該時間則會報錯:There are queries in PROCESSLIST running longer than 60s, aborting dump  
  --kill-long-queries         kill掉長時間執行的查詢  
  -b, --binlogs               導出binlog  
  -D, --daemon                啟用守護進程模式  
  -I, --snapshot-interval     dump快照間隔時間,默認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               使用的線程數,默認4  
  -C, --compress-protocol     在mysql連接上使用壓縮協議  
  -V, --version               Show the program version and exit  
  -v, --verbose               更多輸出, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2 

3、原理解析
mydumper工作原理解析
1)該工具在--daemo模式下支持以守護進行形式啟動,默認每60s進行一次備份。間隔時間由--snapshot-interval控制。

2)首先會創建一個MySQL服務的連接

3)然后在MySQL上執行show processlist,根據參數long-query-guard和kill-long-queries決定退出或殺掉長查詢;

4)根據是否有--lock-all-tables,進行鎖表:LOCK TABLE tn READ或者FLUSH TABLES WITH READ LOCK;然后執行START TRANSACTION;

5)創建4個備份表的子線程

6)創建1個work thread后,g_async_queue_pop(conf.ready);此時conf.ready為空需要sleep等待。

7)work線程執行:連接mysql;設置隔離級別RR;start transaction;g_async_queue_push(conf->ready,GINT_TO_POINTER(1));然后main函數的g_async_queue_pop掛住的地方可以喚醒了,繼續創建線程或者向下走。

8)work線程接著執行:進入死循環,從隊列里pop出任務job=(struct job *)g_async_queue_pop(conf->queue);,根據任務類型進行dump。這里的并行是根據表并行的。先備份非事務表,然后備份innodb表

9)最后等所有work線程完成非事務表備份后喚醒g_async_queue_pop(conf.unlock_tables);,執行UNLOCK TABLES解鎖

10)事務結束

向AI問一下細節

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

AI

葵青区| 贵南县| 望城县| 介休市| 瓦房店市| 铜梁县| 大新县| 开封市| 万全县| 澄迈县| 花莲市| 漯河市| 葵青区| 七台河市| 曲松县| 宿松县| 黔江区| 海原县| 禹城市| 天等县| 金堂县| 黔西县| 布拖县| 安顺市| 临桂县| 都匀市| 宜春市| 赣榆县| 梅河口市| 余江县| 洪湖市| 安平县| 湟中县| 泰安市| 五原县| 加查县| 鹰潭市| 万宁市| 东光县| 嘉禾县| 楚雄市|