乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      mydumper工具介紹

       瓜瓜2uuq7332fe 2019-03-28
      一 前言
          大家對(duì)于MySQL的邏輯備份工具mysqldump應(yīng)該都比較了解,相對(duì)于mysqldump,本文介紹一款由MySQL ,Facebook 等公司的開(kāi)發(fā)維護(hù)另外一套邏輯備份恢復(fù)工具---mydumper/myloader目前已經(jīng)開(kāi)發(fā)到0.9.1 版本。
      mydumper 具有如下特性
      1 支持多線程導(dǎo)出數(shù)據(jù),速度比mysqldump快。
      2 支持一致性備份,使用FTWRL(FLUSH TABLES WITH READ LOCK)會(huì)阻塞DML語(yǔ)句,保證備份數(shù)據(jù)的一致性。
      3 支持將導(dǎo)出文件壓縮,節(jié)約空間。
      4 支持多線程恢復(fù)。
      5 支持以守護(hù)進(jìn)程模式工作,定時(shí)快照和連續(xù)二進(jìn)制日志
      6 支持按照指定大小將備份文件切割。
      7 數(shù)據(jù)與建表語(yǔ)句分離。
      二 原理
      參考一張圖 介紹mydumper的工作原理



      mydumper的主要工作步驟
      1 主線程 FLUSH TABLES WITH READ LOCK, 施加全局只讀鎖,以阻止DML語(yǔ)句寫(xiě)入,保證數(shù)據(jù)的一致性
      2 讀取當(dāng)前時(shí)間點(diǎn)的二進(jìn)制日志文件名和日志寫(xiě)入的位置并記錄在metadata文件中,以供即使點(diǎn)恢復(fù)使用
      3 START TRANSACTION WITH CONSISTENT SNAPSHOT; 開(kāi)啟讀一致事務(wù)
      4 啟用N個(gè)(線程數(shù)可以指定,默認(rèn)是4)dump線程導(dǎo)出表和表結(jié)構(gòu) 
      5 備份非事務(wù)類型的表
      6 主線程 UNLOCK TABLES,備份完成非事務(wù)類型的表之后,釋放全局只讀鎖
      7 dump InnoDB tables, 基于事物導(dǎo)出InnoDB表
      8 事物結(jié)束

      三 安裝使用
      3.1 安裝
      mydumper 基于c語(yǔ)言編寫(xiě),需要編譯安裝,因此需要安裝編譯工具。
      1. yum install glib2-devel mysql-devel zlib-devel pcre-devel zlib gcc-c++ gcc cmake -y
      2. wget https://launchpadlibrarian.net/225370879/mydumper-0.9.1.tar.gz
      3. tar xf mydumper-0.9.1.tar.gz
      4. cd mydumper-0.9.1/
      5. cmake .
      6. make && make install

      點(diǎn)擊(此處)折疊或打開(kāi)

      1. # cmake .
      2. -- Using mysql-config: /opt/mysql/bin/mysql_config
      3. -- Found MySQL: /opt/mysql/include, /usr/lib64/libperconaserverclient.so;/usr/lib64/libpthread.so;/usr/lib64/libm.so;/usr/lib64/librt.so;/usr/lib64/libdl.so
      4. -- Found ZLIB: /usr/lib64/libz.so (found version "1.2.3")
      5. -- Found PkgConfig: /usr/bin/pkg-config (found version "0.23")
      6. -- checking for one of the modules 'glib-2.0'
      7. -- checking for one of the modules 'gthread-2.0'
      8. -- checking for module 'libpcre'
      9. -- found libpcre, version 7.8
      10. -- Found PCRE: /usr/include
      11. CMake Warning at docs/CMakeLists.txt:(message):
      12.   Unable to find Sphinx documentation generator
      13. -- ------------------------------------------------
      14. -- MYSQL_CONFIG = /opt/mysql/bin/mysql_config
      15. -- CMAKE_INSTALL_PREFIX = /usr/local
      16. -- BUILD_DOCS = ON
      17. -- WITH_BINLOG = OFF
      18. -- RUN_CPPCHECK = OFF
      19. -- Change a values with: cmake -D<Variable>=<Value>
      20. -- ------------------------------------------------
      21. --
      22. -- Configuring done
      23. -- Generating done
      24. -- Build files have been written to: /root/mydumper-0.9.1
      25. # make
      26. Scanning dependencies of target mydumper
      27. [ 25%] Building C object CMakeFiles/mydumper.dir/mydumper.c.o
      28. [ 50%] Building C object CMakeFiles/mydumper.dir/server_detect.c.o
      29. [ 75%] Building C object CMakeFiles/mydumper.dir/g_unix_signal.c.o
      30. Linking C executable mydumper
      31. [ 75%] Built target mydumper
      32. Scanning dependencies of target myloader
      33. [100%] Building C object CMakeFiles/myloader.dir/myloader.c.o
      34. Linking C executable myloader
      35. [100%] Built target myloader
      36. # make install
      37. [ 75%] Built target mydumper
      38. [100%] Built target myloader
      39. Linking C executable CMakeFiles/CMakeRelink.dir/mydumper
      40. Linking C executable CMakeFiles/CMakeRelink.dir/myloader
      41. Install the project...
      42. -- Install configuration: ""
      43. -- Installing: /usr/local/bin/mydumper
      44. -- Installing: /usr/local/bin/myloader
      安裝好之后 ,會(huì)生成兩個(gè)文件:
      /usr/local/bin/mydumper  
      /usr/local/bin/myloader
      注意:
      1. 一般會(huì)遇到找不到 mysql-libraries 的問(wèn)題,可以參考 stackoverflow 的回答,如果再解決不了,則可能是自己制定的MySQL安裝目錄的問(wèn)題,比如我自己的安裝目錄是/opt/mysql/
      2. 則需要做一個(gè)軟連接 
      3. ln -s /opt/mysql/lib/libperconaserverclient.so /usr/lib64/libperconaserverclient.so
      3.2 參數(shù)說(shuō)明
      mydumper 的常用參數(shù)
      1. -B, --database 要導(dǎo)出的dbname
      2. -T, --tables-list 需要導(dǎo)出的表名,導(dǎo)出多個(gè)表需要逗號(hào)分隔,t1[,t2,t3 ....] 
      3. -o, --outputdir 導(dǎo)出數(shù)據(jù)文件存放的目錄,mydumper會(huì)自動(dòng)創(chuàng)建
      4. -s, --statement-size 生成插入語(yǔ)句的字節(jié)數(shù), 默認(rèn)1000000字節(jié)
      5. -r, --rows Try to split tables into chunks of this many rows. This option turns off --chunk-filesize
      6. -F, --chunk-filesize 切割表文件的大小,默認(rèn)單位是 MB ,如果表大于
      7. -c, --compress 壓縮導(dǎo)出的文件
      8. -e, --build-empty-files 即使是空表也為表創(chuàng)建文件
      9. -x, --regex 使用正則表達(dá)式匹配 db.table 
      10. -i, --ignore-engines 忽略的存儲(chǔ)引擎,多個(gè)值使用逗號(hào)分隔
      11. -m, --no-schemas 只導(dǎo)出數(shù)據(jù),不導(dǎo)出建庫(kù)建表語(yǔ)句
      12. -d, --no-data 僅僅導(dǎo)出建表結(jié)構(gòu),創(chuàng)建db的語(yǔ)句
      13. -G, --triggers 導(dǎo)出觸發(fā)器
      14. -E, --events 導(dǎo)出events
      15. -R, --routines 導(dǎo)出存儲(chǔ)過(guò)程和函數(shù)
      16. -k, --no-locks 不執(zhí)行臨時(shí)的只讀鎖,會(huì)導(dǎo)致備份不一致 。WARNING: This will cause inconsistent backups
      17. --less-locking 最小化在innodb表上的鎖表時(shí)間 --butai
      18. -l, --long-query-guard 設(shè)置長(zhǎng)時(shí)間執(zhí)行的sql 的時(shí)間標(biāo)準(zhǔn)
      19. -K, --kill-long-queries 將長(zhǎng)時(shí)間執(zhí)行的sql kill
      20. -D, --daemon 以守護(hù)進(jìn)程的方式執(zhí)行
      21. -I, --snapshot-interval 創(chuàng)建導(dǎo)出快照的時(shí)間間隔,默認(rèn)是 60s ,該參數(shù)只有在守護(hù)進(jìn)程執(zhí)行的時(shí)候有用。
      22. -L, --logfile 指定mydumper輸出的日志文件,默認(rèn)使用控制臺(tái)輸出。
      23. --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.
      24. --skip-tz-utc
      25. --use-savepoints 使用savepoints 減少M(fèi)DL 鎖事件 需要 SUPER 權(quán)限
      26. --success-on-1146 Not increment error count and Warning instead of Critical in case of table doesn
      myloader使用參數(shù)
      1. -d, --directory 備份文件的文件夾
      2. -q, --queries-per-transaction 每次事物執(zhí)行的查詢數(shù)量,默認(rèn)是1000
      3. -o, --overwrite-tables 如果要恢復(fù)的表存在,則先drop掉該表,使用該參數(shù),需要備份時(shí)候要備份表結(jié)構(gòu)
      4. -B, --database 需要還原的數(shù)據(jù)庫(kù)
      5. -e, --enable-binlog 啟用還原數(shù)據(jù)的二進(jìn)制日志
      6. -h, --host The host to connect to
      7. -u, --user Username with privileges to run the dump
      8. -p, --password User password
      9. -P, --port TCP/IP port to connect to
      10. -S, --socket UNIX domain socket file to use for connection
      11. -t, --threads 還原所使用的線程數(shù),默認(rèn)是4
      12. -C, --compress-protocol 壓縮協(xié)議
      13. -V, --version 顯示版本
      14. -v, --verbose 輸出模式, 0 = silent, 1 = errors, 2 = warnings, 3 = info, 默認(rèn)為2
      四  使用方法
      #導(dǎo)出整個(gè)庫(kù)
      1. mydumper -u root -S /srv/my3308/run/mysql.sock -B trade_platform -o /data/trade_platform
      #僅僅導(dǎo)出platform的ddl語(yǔ)句不包含數(shù)據(jù)到指定的目錄 /data/platform
      1. mydumper -u root -S /srv/my3308/run/mysql.sock -B platform --o /data/platform
      #以壓縮的方式導(dǎo)出的文件
      1. mydumper -u root -S /srv/my3308/run/mysql.sock -B trade_platform --o /data/trade_platform
      備份文件以.gz 的格式壓縮
      1. #ls
      2. metadata trade_platform.config.sql.gz trade_platform.trade_order-schema.sql.gz
      3. trade_platform.config-schema.sql.gz trade_platform-schema-create.sql.gz trade_platform.trade_order.sql.gz
      #使用正則表達(dá)式
      1. mydumper -u root -S /srv/my3308/run/mysql.sock --regex='^(?!(mysql|test))' -o /data/bk20170120
      其中正則表達(dá)式可以是
      --regex=order.*  導(dǎo)出所有order 開(kāi)頭的表
      mydumper 導(dǎo)出的文件
      1. [root@rac4 17:27:02 /data/platform]
      2. # ls
      3. metadata platform.config.sql platform.order.sql
      mydumper 導(dǎo)出的文件 分為
      1. metadata :包含導(dǎo)出時(shí)刻的binlog 位點(diǎn)信息 ,如果啟用gtid ,則記錄gtid信息。
      2. Started dump at: 2017-01-20 17:26:53
      3. SHOW MASTER STATUS:
      4.   Log: mysql-bin.000025
      5.   Pos: 505819083
      6.   GTID:
      7. Finished dump at: 2017-01-20 17:27:02
      8. db.table.sql        :數(shù)據(jù)文件,insert語(yǔ)句
      9. db.table-schema.sql :包含建表語(yǔ)句
      10. db-schema.sql       :包含建庫(kù)語(yǔ)句
      注意 0.9.1 版本去掉了 --binlogs 參數(shù),故會(huì)少了 啟用binlogs參數(shù)相關(guān)的文件。
      有興趣的朋友可以繼續(xù)閱讀 這里,有專門(mén)針對(duì)mydumper與5.7 新出的mysqlpump 工具的討論。
      五 小結(jié)
       從目前的測(cè)試來(lái)看,mydumper對(duì)備份的速度有一定提升,但是沒(méi)有網(wǎng)絡(luò)上說(shuō)的10倍那么高。我已經(jīng)在我們的開(kāi)發(fā)測(cè)試環(huán)境部署了該工具的備份腳本,用來(lái)解決開(kāi)發(fā)同學(xué)的偶爾冒失行為。相比mysqldump,mydumper的導(dǎo)出的文件形式是每個(gè)表一個(gè)文件,對(duì)于開(kāi)發(fā)/測(cè)試環(huán)境的誤操作恢復(fù)十分有效。
      參考文章
      [1] mydumper備份原理和使用方法 

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多