mydumper使用詳解
一般做mysql邏輯備份用mysqldump比較多,但是有一款叫mydumper的工具速度上會mysqldump快很多,具體優點為:
-
支援多執行緒備份
-
支援檔案壓縮
-
支援多執行緒恢復
-
保證資料的一致性
-
比mysqldump備份速度和恢復速度都要快。
下面介紹使用方法:
下載:
預備安裝:
yum install cmake* yum install glib2-devel zlib-devel pcre-devel openssl-devel
安裝:
[root@iZ252affh58Z ~]# tar -zxvf mydumper-0.9.1.tar.gz mydumper-0.9.1/CMakeLists.txt mydumper-0.9.1/README mydumper-0.9.1/binlog.c mydumper-0.9.1/binlog.h mydumper-0.9.1/cmake/ mydumper-0.9.1/common.h mydumper-0.9.1/config.h.in mydumper-0.9.1/docs/ mydumper-0.9.1/g_unix_signal.c mydumper-0.9.1/g_unix_signal.h mydumper-0.9.1/mydumper.c mydumper-0.9.1/mydumper.h mydumper-0.9.1/myloader.c mydumper-0.9.1/myloader.h mydumper-0.9.1/server_detect.c mydumper-0.9.1/server_detect.h mydumper-0.9.1/cmake/modules/ mydumper-0.9.1/cmake/modules/CppcheckTargets.cmake mydumper-0.9.1/cmake/modules/FindGLIB2.cmake mydumper-0.9.1/cmake/modules/FindMySQL.cmake mydumper-0.9.1/cmake/modules/FindPCRE.cmake mydumper-0.9.1/cmake/modules/FindSphinx.cmake mydumper-0.9.1/cmake/modules/Findcppcheck.cmake mydumper-0.9.1/cmake/modules/Findcppcheck.cpp mydumper-0.9.1/docs/CMakeLists.txt mydumper-0.9.1/docs/_build/ mydumper-0.9.1/docs/_static/ mydumper-0.9.1/docs/authors.rst mydumper-0.9.1/docs/compiling.rst mydumper-0.9.1/docs/examples.rst mydumper-0.9.1/docs/files.rst mydumper-0.9.1/docs/index.rst mydumper-0.9.1/docs/mydumper_usage.rst mydumper-0.9.1/docs/myloader_usage.rst mydumper-0.9.1/docs/_build/conf.py.in mydumper-0.9.1/docs/_build/sources.cmake.in [root@iZ252affh58Z ~]# cd mydumper-0.9.1 [root@iZ252affh58Z mydumper-0.9.1]# cmake . -- The C compiler identification is GNU 4.4.7 -- The CXX compiler identification is GNU 4.4.7 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Using mysql-config: /mnt/software/mysql/bin/mysql_config -- Found MySQL: /mnt/software/mysql/include, /mnt/software/mysql/lib/libmysqlclient.so;/usr/lib64/libpthread.so;/usr/lib64/libm.so;/usr/lib64/librt.so;/usr/lib64/libdl.so -- Found ZLIB: /usr/lib64/libz.so (found version "1.2.3") -- Found PkgConfig: /usr/bin/pkg-config (found version "0.23") -- checking for one of the modules 'glib-2.0' -- checking for one of the modules 'gthread-2.0' -- checking for module 'libpcre' -- found libpcre, version 7.8 -- Found PCRE: /usr/include CMake Warning at docs/CMakeLists.txt:9 (message): Unable to find Sphinx documentation generator -- ------------------------------------------------ -- MYSQL_CONFIG = /mnt/software/mysql/bin/mysql_config -- CMAKE_INSTALL_PREFIX = /usr/local -- BUILD_DOCS = ON -- WITH_BINLOG = OFF -- RUN_CPPCHECK = OFF -- Change a values with: cmake -D<Variable>=<Value> -- ------------------------------------------------ -- -- Configuring done -- Generating done -- Build files have been written to: /root/mydumper-0.9.1 [root@iZ252affh58Z mydumper-0.9.1]# make Scanning dependencies of target mydumper [ 25%] Building C object CMakeFiles/mydumper.dir/mydumper.c.o [ 50%] Building C object CMakeFiles/mydumper.dir/server_detect.c.o [ 75%] Building C object CMakeFiles/mydumper.dir/g_unix_signal.c.o Linking C executable mydumper [ 75%] Built target mydumper Scanning dependencies of target myloader [100%] Building C object CMakeFiles/myloader.dir/myloader.c.o Linking C executable myloader [100%] Built target myloader [root@iZ252affh58Z mydumper-0.9.1]# make install [ 75%] Built target mydumper [100%] Built target myloader Install the project... -- Install configuration: "" -- Installing: /usr/local/bin/mydumper -- Removed runtime path from "/usr/local/bin/mydumper" -- Installing: /usr/local/bin/myloader -- Removed runtime path from "/usr/local/bin/myloader"
確認是否安裝成功:缺少libmysqlclient.so.20
[root@iZ252affh58Z mydumper-0.9.1]# whereis mydumper mydumper: /usr/local/bin/mydumper [root@iZ252affh58Z mydumper-0.9.1]# [root@iZ252affh58Z mydumper-0.9.1]# ldd /usr/local/bin/mydumper linux-vdso.so.1 => (0x00007fffe131a000) libmysqlclient.so.20 => not found libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003541e00000) libm.so.6 => /lib64/libm.so.6 (0x0000003542600000) librt.so.1 => /lib64/librt.so.1 (0x0000003542a00000) libdl.so.2 => /lib64/libdl.so.2 (0x0000003542200000) libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007f1a283ad000) libgthread-2.0.so.0 => /lib64/libgthread-2.0.so.0 (0x00007f1a281a9000) libpcre.so.0 => /lib64/libpcre.so.0 (0x00007f1a27f7b000) libz.so.1 => /lib64/libz.so.1 (0x0000003542e00000) libc.so.6 => /lib64/libc.so.6 (0x0000003541a00000) /lib64/ld-linux-x86-64.so.2 (0x0000003541600000)
解決辦法:
[root@iZ252affh58Z mydumper-0.9.1]# locate libmysqlclient.so.20 /mnt/software/mysql/lib/libmysqlclient.so.20 /mnt/software/mysql/lib/libmysqlclient.so.20.2.1 [root@iZ252affh58Z mydumper-0.9.1]# cp /mnt/software/mysql/lib/libmysqlclient.so.20 /usr/lib64 [root@iZ252affh58Z mydumper-0.9.1]# [root@iZ252affh58Z mydumper-0.9.1]# mydumper ** (mydumper:25013): CRITICAL **: Error connecting to database: Access denied for user 'root'@'localhost' (using password: NO)
檢視版本號,已經安裝成功了
[root@iZ252affh58Z mydumper-0.9.1]# mydumper -V mydumper 0.9.1, built against MySQL 5.7.12
檢視幫助:
[root@iZ252affh58Z mydumper-0.9.1]# mydumper --help Usage: mydumper [OPTION...] multi-threaded MySQL dumping Help Options: -?, --help Show help options Application Options: -B, --database Database to dump -T, --tables-list Comma delimited table list to dump (does not exclude regex option) -o, --outputdir Directory to output files to -s, --statement-size Attempted size of INSERT statement in bytes, default 1000000 -r, --rows Try to split tables into chunks of this many rows. This option turns off --chunk-filesize -F, --chunk-filesize Split tables into chunks of this output file size. This value is in MB -c, --compress Compress output files -e, --build-empty-files Build dump files even if no data available from table -x, --regex Regular expression for 'db.table' matching -i, --ignore-engines Comma delimited list of storage engines to ignore -m, --no-schemas Do not dump table schemas with the data -d, --no-data Do not dump table data -G, --triggers Dump triggers -E, --events Dump events -R, --routines Dump stored procedures and functions -k, --no-locks Do not execute the temporary shared read lock. WARNING: This will cause inconsistent backups --less-locking Minimize locking time on InnoDB tables. -l, --long-query-guard Set long query timer in seconds, default 60 -K, --kill-long-queries Kill long running queries (instead of aborting) -D, --daemon Enable daemon mode -I, --snapshot-interval Interval between each dump snapshot (in minutes), requires --daemon, default 60 -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't exist --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 -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 Number of threads to use, default 4 -C, --compress-protocol Use compression on the MySQL connection -V, --version Show the program version and exit -v, --verbose Verbosity of output, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2
備份全庫:
mydumper -u root -p 'xxxxxDB2015!@#' -o /mnt/backup/
備份mysqlhqdb資料庫:
mydumper -u root -p 'xxxxxDB2015!@#' -B mysqlhqdb -o /mnt/backup/
備份多張表(tableA,tableB):
mydumper -u root -p 'xxxxxDB2015!@#' -B mysqlhqdb -T tableA,tableB -o /mnt/backup/
備份tableA表的資料,不備份表結構
mydumper -u root -p 'xxxxxDB2015!@#' -B mysqlhqdb -T tableA -m -o /mnt/backup/
備份tableA表的資料,並進行壓縮
mydumper -u root -p 'xxxxxDB2015!@#' -B mysqlhqdb -T tableA -c -o /mnt/backup/
還原mysqlhqdb庫:
myloader -u root -p 'xxxxxDB2015!@#' -B mysqlhqdb -d /mnt/backup/
還原tableA表
myloader -u root -p 'xxxxxDB2015!@#' -B mysqlhqdb -o tableA -d /mnt/backup/
mysqldump和mydumper的速度對比
首先用mydumper進行全庫備份,耗時為12分鐘
[root@iZ252affh58Z mnt]# time mydumper -u root -p 'xxxxxDB2015!@#' -o /mnt/backup/ real12m19.526s user3m29.925s sys0m36.017s
再用mysqldump全庫備份,耗時為18分鐘
[root@iZ252affh58Z mnt]# time mysqldump -uroot -p'xxxxxDB2015!@#' --single-transaction --all-databases > /mnt/backup/all.sql -- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly. real18m0.563s user5m53.119s sys0m48.295s
mydumper明顯比mysqldump快很多。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20893244/viewspace-2216615/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mydumper備份資料庫詳解(已詳細說明)資料庫
- mydumper使用及原理淺析
- mydumper
- mydumper備份工具介紹與使用
- mydumper工作原理
- 【MySQL】Mydumper工作原理MySql
- 【備份工具】mydumper
- MyDumper實戰分享
- MySQL資料庫備份工具Mydumper使用介紹MySql資料庫
- mydumper工作流程圖流程圖
- 【MySQL】mydumper工具介紹MySql
- Jpa使用詳解
- mitmproxy使用詳解MIT
- Thymeleaf使用詳解
- babel使用詳解Babel
- git使用詳解Git
- Mat使用詳解
- Proxy使用詳解
- nvm 使用詳解
- CSSModules使用詳解CSSSSM
- ctags使用詳解
- AutoLayout 使用詳解
- umask使用詳解
- OkHttp使用詳解HTTP
- Okhttp 使用詳解HTTP
- Inception使用詳解
- UITableView使用詳解UIView
- ViewFlipper使用詳解View
- NULL 使用詳解Null
- ASIHttpRequest使用詳解HTTP
- at命令使用詳解
- LOMBOK使用詳解Lombok
- Supervisor使用詳解
- React Hooks 使用詳解ReactHook
- CMAKE的使用詳解
- Go Modules 詳解使用Go
- MFC——SkinMagic使用詳解
- Logstash使用詳解