【MySQL】【备份】mydumper安装与使用细节
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,mydumper简介:由percona公司的Max Bubenick与facebook公司的Domas Mituzas共同维护开发,也是个10年历史的工具了,与同为逻辑备份的mysqldump工具而言
千家信息网最后更新 2025年01月24日【MySQL】【备份】mydumper安装与使用细节
mydumper
简介:
由percona公司的Max Bubenick与facebook公司的Domas Mituzas共同维护开发,也是个10年历史的工具了,与同为逻辑备份的mysqldump工具而言,其特性在于多线程并行备份,与官方同类型的mysqlpump相比,其优点在于一张表可以分到好几个线程上进行备份。
安装:
很多博客都推荐使用编译的方式进行安装 ,在这里点一下坑,由于mydumper依赖了 glib2-devel mysql-devel zlib-devel pcre-devel openssl-devel等第三方库,而这些库之前并没有按系统默认方式安装到各个默认位置,那么将会产生编译安装的连锁指定编译位置的问题。我在Cent7系统上安装时,就遇到很多编译不通过或者编译后使用报错的问题,检查环境后发现系统运维的同事使用编译安装的方式安装了MySQL 5.6与pcre库。后面我尝试使用yum安装库后,还是无法排除问题。 在这里我推荐使用开发者编译好的rpm包进行安装,配合yum可以自动补齐依赖,避免很多坑。 地址:https://github.com/maxbube/mydumper/releases,请根据自己的系统类型选择下载版本。`yum -y install https://github.com/maxbube/mydumper/releases/download/v0.9.3/mydumper-0.9.3-41.el7.x86_64.rpm`
使用:
$mydumper --helpUsage: mydumper [OPTION...] multi-threaded MySQL dumpingHelp Options: -?, --help Show help optionsApplication 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 -W, --no-views Do not dump VIEWs -k, --no-locks Do not execute the temporary shared read lock. WARNING: This will cause inconsistent backups --no-backup-locks Do not use Percona backup locks --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 --complete-insert Use complete INSERT statements that include column names -h, --host The host to connect to -u, --user Username with the necessary privileges -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 --defaults-file Use a specific defaults file
这里给出我最常用的备份方式:
mydumper -h 192.168.1.109 -P 3109 -u root -p 123456 -G -E -R -t 4 -c -o /data/bak/mysql/3109
说明:-h 指定地址
-P 指定备份端口 -u 指定备份用户 -p 密码 -G 备份触发器 -E 备份定时事件 -R 备份存储过程和函数 -t 备份时并发的线程数(不包含备份主线程) -c 对备份文件进行压缩(gz方式) -o 指定备份存储位置
原理与过程:
与mysqldump工具类似,先FTWRL(flush table with read lock),查询自己本身的事务执行位置(show master status),然后开启一个一致性快照事务,再启动若干个子线程分别开启一致性可重复读快照事务,使用子线程开启事务并读取数据和视图,函数,存储过程,定时事件等。由于实例中可能有非事务型表的存在,为保持一致性,待各个子线程全部备份完非事务型的表后才会释放FTWRL。这里重点说明下`--trx-consistency-only`参数,很多博客都是粗粗点过甚至不翻译。上一步中我们说到mydumper为了获取整个实例级别的一致性备份,会在开始备份时加上FTWRL,待各个线程都备份完非事务表后,才会释放FTWRL。这是考虑到5.7及之前的版本中mysql库的部分表是MyISAM引擎,不具备事务特性,或者业务上还存在非事务表。但8.0之后的版本中mysql库全部改成了InnoDB引擎,或者用户选择不备份mysql库,或者实例中一张非事务表都没有,这时mydumper会在创建完所有子线程并分别开启一致性可重复读快照事务后就释放FTWRL.因为这个时候根据事务特性已经可以保证备份一致了。若你确定没有备份非事务型表,或者没有备份mysql库,或者实例中非事务表的一致性无关紧要,在你非常介意备份时加的读锁对业务造成的影响的话,可以考虑加上`--trx-consistency-only`参数强制在创建完备的子线程后就释放锁,减小备份对业务造成的写堵塞
备份
事务
线程
一致
编译
一致性
方式
位置
实例
系统
业务
工具
快照
版本
特性
过程
问题
存储
个子
事件
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
怎么从命令行退出数据库
怎么进入天空岛服务器
idvr 服务器
读秀数据库的优点
数据库多个with
沂源外贸erp软件开发公司
access数据库课本答案
西安华募天采网络技术有限公司
多媒体数据库实际应用
娄底软件开发培训去哪好
国外防攻击服务器租用
南京移动软件开发报价
华为网络技术大赛考场
七日杀linux服务器
永成网络技术有限公司苏州
数据库服务器端
三明公安局网络安全保卫支队郑
access数据库不等于怎么写
pg数据库表名称长度限制
数据库产生的三个阶段
在高科技和互联网加持下的社会
虹泰Ntp时钟服务器成都
电脑软件开发男女比例
安徽省哪个城市软件开发多
游戏软件开发是什么职业
给孩子怎么介绍软件开发
迪普科技软件开发工程师笔试题
图书馆数据库调研时
打开核磁数据库
《数据库原理与技术》