MySQL-mydumper使用
对于innodb表备份时,只有在获取表结构,事件,触发器,视图等的元数据时会加全局读锁FTWRL,
获取完就释放锁,备份数据时是使用一致性快照进行备份的,期间不加锁。
1.编译安装
[root@localhost ~]# yum -y install glib2-devel mysql-devel zlib-devel pcre-devel zlib gcc-c++ gcc cmake
[root@localhost ~]# wget https://launchpad.net/mydumper/0.9/0.9.1/+download/mydumper-0.9.1.tar.gz
[root@localhost ~]# tar zxf mydumper-0.9.1.tar.gz
[root@localhost ~]# cd mydumper-0.9.1/
[root@localhost mydumper-0.9.1]# cmake .
[root@localhost mydumper-0.9.1]# make
[root@localhost mydumper-0.9.1]# make install
# 安装完成后生成两个二进制文件 mydumper 和 myloader 位于 /usr/local/bin 目录下
[root@localhost bin]# ls /usr/local/bin/
mydumper myloader
2.直接安装 rpm 包
# rpm包地址:https://github.com/maxbube/mydumper/releases 请根据自己的系统类型选择下载版本
[root@localhost ~]# yum install https://github.com/maxbube/mydumper/releases/download/v0.10.7-2/mydumper-0.10.7-2.el7.x86_64.rpm
# 安装完成后生成两个二进制文件 mydumper 和 myloader 位于 /usr/bin 目录下
3.参数:
--user -u 备份所使用的用户
--pasword -p 连接所用的用户密码
--host -h MySQL 服务端地址
--port -P MySQL 端口号
--threads -t 开启的备份线程数,默认是4
--database -B 要备份的数据库,不指定则备份所有库
--tables-list -T 需要备份的表,名字用逗号隔开
--outputdir -o 备份文件输出的目录
--statement-size -s 生成的insert语句的字节数,默认1000000
--rows -r 将表按行分割,指定这个选项会关闭 --chunk-filesize
--chunk-filesize -F 将表按大小分割时,指定分割大小,单位是 MB
--regex -x 使用正则表达式匹配’db.table’ --regex '^(?!(sys|sysdb))'
--compress -c 压缩输出文件
--ignore-engines -i 忽略的存储引擎
--no-schemas -m 不备份表结构
--no-data -d 不备份表数据
--triggers -G 备份触发器
--events -E 备份事件
--routines -R 备份存储过程和函数
--no-views -W 不备份视图
--no-locks -k 不使用临时共享只读锁,使用这个选项会造成数据不一致
--daemon -D 启用守护进程模式,守护进程模式以某个间隔不间断对数据库进行备份
--where 只导出选择的数据
4.举例
# 备份全部数据库
mydumper -u root -p 123456 -o /mysql_backup/all/ #全量备份 会备份 mysql、sys 系统库及其他自建库
# 备份全部数据库 包含触发器、事件、存储过程及函数
mydumper -u root -p 123456 -G -R -E -o /mysql_backup/all2/
# 备份指定库
mydumper -u root -p 123456 -G -R -E -B db1 -o /mysql_backup/db1/
# 使用正则 排除系统库
mydumper -u root -p 123456 -G -R -E --regex '^(?!(mysql|sys))' -o /mysql_backup/all3
# 备份指定表
mydumper -u root -p 123456 -B db1 -T tb1,tb2 -o /mysql_backup/tb/
# 只备份表结构
mydumper -u root -p 123456 -d -B db1 -o /mysql_backup/nodata/
# 只备份表数据
mydumper -u root -p 123456 -m -B db1 -o /mysql_backup/noschema/
# 压缩备份某个表
mydumper -u root -p 123456 -B db1 -T tb1 -c -o /mysql_backup/compress/
也可以参考参考mysql优化金字塔书籍
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?