mydump/myloader

安装

1、安装相关依赖

yum -y  install glib2-devel mysql-devel zlib-devel pcre-devel zlib gcc-c++ gcc cmake

 2、下载

https://github.com/mydumper/mydumper/releases/tag/
https://launchpad.net/mydumper

3、安装rpm包

rpm -ivh mydumper-0.15.2-6.el7.x86_64.rpm

 安装完成后会生成两个二进制文件mydumper和myloader,都位于/usr/local/bin目录下。(新版本安装后在/usr/bin目录下)

4、编译

cmake .
make
make install

使用

mydumper 参数

-B, --database              要备份的数据库,不指定则备份所有库
-T, --tables-list           需要备份的表,名字用逗号隔开
-o, --outputdir             备份文件输出的目录
-s, --statement-size        生成的insert语句的字节数,默认1000000
-r, --rows                  将表按行分块时,指定的块行数,指定这个选项会关闭 --chunk-filesize
-F, --chunk-filesize        将表按大小分块时,指定的块大小,单位是 MB
-c, --compress              压缩输出文件
-e, --build-empty-files     如果表数据是空,还是产生一个空文件(默认无数据则只有表结构文件)
-x, --regex                 是同正则表达式匹配 'db.table'
-i, --ignore-engines        忽略的存储引擎,用都厚分割
-m, --no-schemas            不备份表结构
-k, --no-locks              不使用临时共享只读锁,使用这个选项会造成数据不一致
--less-locking              减少对InnoDB表的锁施加时间(这种模式的机制下文详解)
-l, --long-query-guard      设定阻塞备份的长查询超时时间,单位是秒,默认是60秒(超时后默认mydumper将会退出)
--kill-long-queries         杀掉长查询 (不退出)
-b, --binlogs               导出binlog
-D, --daemon                启用守护进程模式,守护进程模式以某个间隔不间断对数据库进行备份
-I, --snapshot-interval     dump快照间隔时间,默认60s,需要在daemon模式下
-L, --logfile               使用的日志文件名(mydumper所产生的日志), 默认使用标准输出
--tz-utc                    跨时区是使用的选项,不解释了
--skip-tz-utc               同上
--use-savepoints            使用savepoints来减少采集metadata所造成的锁时间,需要 SUPER 权限
--success-on-1146           Not increment error count and Warning instead of Critical in case of table doesn't exist
-h, --host                  连接的主机名
-u, --user                  备份所使用的用户
-p, --password              密码
-P, --port                  端口
-S, --socket                使用socket通信时的socket文件
-t, --threads               开启的备份线程数,默认是4
-C, --compress-protocol     压缩与mysql通信的数据
-V, --version               显示版本号
-v, --verbose               输出信息模式, 0 = silent, 1 = errors, 2 = warnings, 3 = info, 默认为 2

补充

# 连接相关
-u, --user                            # 用户名
-p, --password                          # 直接输入密码
-a, --ask-password                      # 终端获取密码
-h, --host 127.0.0.1                  # 指定地址
-P, --port 3306                       # 指定端口
-S, --socket                          # 指定socket文件
-C, --compress-protocol               # 压缩连接
-t, --threads 8                          # 指定线程

# 指定需要备份的库、表
-B, --database thc_5000_dev5a         # 指定数据库
-T, --tables-list db.a,db.b,db.c      # 指定表列表(明确定义,非正则)
-O, --omit-from-file                  # 文件中按照 db.table 的格式按行声明(不支持正则)跳过的 库.表(优先级大于正则匹配)
-x, --regex                           # 正则表达式, 匹配 "db.table" 部分. e.g: thc_5000_dev5a\.wh_.*
--partition-regex                     # 根据"数据库分区"进行备份
--where                               # 根据查询结果进行备份, 配合 -B, -T 或 -x 对库表进行限制,只需填写条件, --where id=3
-U, --updated-since                      # 根据 update_time 进行备份

# statement 相关设置
-s, --statement-size          # 单条sql大小限制, 默认1000000,使用需调大
-r, --rows 0                  # 导出时单个sql文件的行数,0 表示没有限制

# 锁设置
--trx-consistency-only        # 单事务备份,对标 mysqldump --single-transaction 参数,刷盘后开启事务保持数据一致性
--less-locking.               # 使用线程锁,减少全局锁的加锁时间
-k, --no-locks                # 不锁
--no-backup-locks

# 对比检查相关,记录到 metadata 文件
-M, --checksum-all            # 所有
--data-checksums              # 计算并记录 数据sql sum 值
--schema-checksums            # 计算并记录 创建sql sum值
--routine-checksums           # 计算并记录 视图、函数、触发器 sum值

# 输出相关
-o, --outputdir /backup/xx        # 输出目录
-c, --compress                    # 压缩文件

# 备份可选项
-G, --triggers                # 备份触发器,默认不备份
-E, --events                  # 备份事件,默认不备份
-R, --routines                # 备份存储过程、函数,默认不备份
--views-as-tables             # 把视图当做表进行导出
-W, --no-views                # 不备份视图, 默认进行备份
-d, --no-data                 # 只备份表结构
--skip-definer                # 备份视图、函数、存储过程、事件等时不备份definer
--set-names utf8mb4              # 指定字符集

# 处理长时间查询
--long-query-retries          # 尝试检查长时间的查询,默认0,不重试
--long-query-retry-interval   # 检查长时间查询的语句的间隔,默认60s
--long-query-guard , -l       # 长时间执行超时秒数,默认60s
--kill-long-query , -K        # 杀掉长时间的查询而不是终止dump操作

# 其他
-v, --verbose                 # 指定日志级别,0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2
-L, --logfile                 # 记录日志
--disk-limits                 # --disk-limits 100:500 当磁盘剩余空间小于100M时暂停,500M时恢复
--defaults-file               # 可指定配置文件,用于隐藏账号密码
--defaults-extra-file

myloader使用参数

-d, --directory                   备份文件的文件夹
-q, --queries-per-transaction     每次事物执行的查询数量,默认是1000
-o, --overwrite-tables            如果要恢复的表存在,则先drop掉该表,使用该参数,需要备份时候要备份表结构
-B, --database                    需要还原的数据库
-e, --enable-binlog               启用还原数据的二进制日志
-h, --host                        主机
-u, --user                        还原的用户
-p, --password                    密码
-P, --port                        端口
-S, --socket                      socket文件
-t, --threads                     还原所使用的线程数,默认是4
-C, --compress-protocol           压缩协议
-V, --version                     显示版本
-v, --verbose                     输出模式, 0 = silent, 1 = errors, 2 = warnings, 3 = info, 默认为2

补充

-u, --user                  # 用户名
-p, --password              # 直接输入密码
-a, --ask-password          # 终端获取密码
-h, --host 127.0.0.1
-P, --port 3306
-C, --compress-protocol     # 连接就压缩

-e, --enable-binlog.        # 主从同步中, 导入数据开启 binlog 记录, 可同步到 slave
-o, --overwrite-tables      # 先 drop, 再写入

-d, --directory             # 指定恢复数据目录
-s, --source-db             # 指定恢复库名
-B, --database              # 指定恢复的库
# 比如我导出的库包括 DB_A, DB_B, DB_C, 希望将 DB_C 恢复为 DB_D,则 -s DB_C -B DB_D

--set-names utf8mb4            # 设置字符集

-T, --tables-list
-x, --regex

--skip-triggers           # 不导入 triggers
--skip-post               # 不导入 events
--no-data                 # 不导入 数据

 备份

备份所有库(及二进制日志):

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/
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值