【MySQL】【备份】mydumper安装与使用细节
发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,mydumper简介:由percona公司的Max Bubenick与facebook公司的Domas Mituzas共同维护开发,也是个10年历史的工具了,与同为逻辑备份的mysqldump工具而言
千家信息网最后更新 2024年11月19日【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安全错误
数据库的锁怎样保障安全
中兴社招应用软件开发面试题
网络安全的不幸
网络安全计算机专业课先学哪个
网络安全属于什么安排
wm 软件开发
网络安全防护应急处置方案
我们常说的什么是网络技术
北京安防守时模块服务器虚拟主机
中型服务器配置
国内国外网络安全
舟山定制软件开发哪家好
数据库截取掉指定的字符
四川软件开发app定制
五指山天气预报软件开发
任务管理 协作 软件服务器
数据库原理与技术复习
上海pdu服务器专用电源价钱
软件开发美工的工作内容
绝地求生有几个服务器
ssh框架需不需要数据库
外地巴士摄影数据库全部
安卓软件开发设计说明
管家婆数据库兼容性
网络安全意识培训讲师
代理加速服务器
天灾计划软件开发
网络安全法立法背景论述题
软件开发 总体设计英文
数据库查询句柄泄漏
龙牌服务器视频教程