# 使用正则: 只备份以 dev2*开头的数据库
./mydumper -h 177.168.1.33 -u root -p q1w2E -P 4000 -t 16 -F 64 -x dev2* --skip-tz-utc -o ./tidb_dev2_backup_20190814
# 使用正则: 过滤特定库,例如不备份mysql及test库
./mydumper -h 177.168.1.33 -u root -p q1w2E -P 4000 -t 16 -F 64 -x '^(?!(mysql|test))' --skip-tz-utc -o ./tidb_dev2_backup_20190814
./mydumper -h 177.168.1.33 -u root -p q1w2E -P 4000 -t 16 -F 64 -x '^(?!(mysql|test|INFORMATION_SCHEMA|PERFORMANCE_SCHEMA|tidb_loader))' --skip-tz-utc -o
# 备所有数据库
./mydumper -h 177.168.1.33 -u root -p q1w2E -P 4000 -t 16 -F 64 --skip-tz-utc -o ./tidb_dev2_backup_20190814
# 备所指定的数据库
./mydumper -h 177.168.1.33 -u root -p q1w2E -P 4000 -t 16 -F 64 -B dev2_dc_test --skip-tz-utc -o ./tidb_dev2_backup_20190814
#备份指定的多个库
./mydumper -h 177.168.1.34 -u root -p q1w2E -P 4000 -t 16 -F 64 -x uat2_* --skip-tz-utc -o ./pfizer-uat-2019919/
./mydumper -h 177.168.1.54 -u root -p q1w2E -P 4000 -t 16 -F 64 -x pressure* --skip-tz-utc -o
# 备所有数据库
./mydumper -h 177.168.1.33 -u root -p q1w2E -P 4000 -t 16 -F 64 --skip-tz-utc -o ./tidb_dev2_backup_20190814
# 备份以某些名称开头的数据库
stpfizer st库
./mydumper -h 177.168.1.53 -u root -p q1w2E -P 4000 -t 16 -F 64 -e -x '^(dev2_paas\.|dev2_paas_system\.|dev2_quartz\.|dev2_pfizer\.|dev2_pfizer_activiti\.)' --skip-tz-utc -o ./test
./mydumper -h 177.168.1.53 -u root -p q1w2E -P 4000 -t 16 -F 64 -e -x '^(dev2_hengrui\.|dev2_paas\.)' --skip-tz-utc -o
./bin/mydumper -h 127.0.0.1 -u root -P 4000 -r 10000 -t 4
===================
# 备所指定的数据库(-B dev2_pfizer) 的指定表(-T sys_user需要备份的表,名字用逗号隔开)
./mydumper -h 177.168.1.33 -u root -p q1w2E -P 4000 -t 16 -F 64 -B dev2_pfizer -T sys_user --skip-tz-utc -o ./tidb_dev2_backup_20190814
./mydumper -h 177.168.1.53 -u root -p q1w2E -P 4600 -t 16 -F 64 -B dev2_pfizer -T dc_organization_master --skip-tz-utc -o ./
./loader -h 177.168.1.46 -u root -p 数据库密码 -P 3306 -t 32 -d ./backup_0/
./loader -h 177.168.1.47 -u root -p q1w2E -P 4000 -t 32 -d
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 不备份表结构
-d, --no-data 不导出表数据
-G, --triggers 导出触发器
-E, --events 导出事件
-R, --routines 导出存储过程
-k, --no-locks 不使用临时共享只读锁,使用这个选项会造成数据不一致
-l, --long-query-guard 设定阻塞备份的长查询超时时间,单位是秒,默认是60秒(超时后默认mydumper将会退出)
-K, --kill-long-queries kill掉长时间执行的查询,备份报错:Lock wait timeout exceeded; try restarting transaction
-D, --daemon 启用守护进程模式,守护进程模式以某个间隔不间断对数据库进行备份
-I, --snapshot-interval dump快照间隔时间,默认60s,需要在daemon模式下
-L, --logfile 使用的日志文件名(mydumper所产生的日志), 默认使用标准输出
-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
--lock-all-tables 锁全表,代替FLUSH TABLE WITH READ LOCK
--tz-utc 备份的时候允许备份Timestamp,这样会导致不同时区的备份还原会出问题,默认禁用
--skip-tz-utc 同上
--use-savepoints 使用savepoints来减少采集metadata所造成的锁时间,需要 SUPER 权限
--success-on-1146 如果表不存在,则不增加错误计数和警告而不是关键错误
--less-locking 减少对InnoDB表的锁施加时间(这种模式的机制下文详解)
loader常用参数
-L string
log 级别设置,可以设置为 debug, info, warn, error, fatal (默认为 "info")
-P int
TiDB/MySQL 的端口 (默认为 4000)
-V
打印 loader 版本
-c string
指定配置文件启动 loader
-checkpoint-schema string
checkpoint 数据库名,loader 在运行过程中会不断的更新这个数据库,在中断并恢复后,会通过这个库获取上次运行的进度 (默认为 "tidb_loader")
-d string
需要导入的数据存放路径 (default "./")
-h string
TiDB 服务 host IP (default "127.0.0.1")
-p string
TiDB 账户密码
-status-addr string
Prometheus 可以通过该地址拉取 Loader metrics, 也是 Loader 的 pprof 调试地址 (默认为 ":8272")。
-t int
线程数 (默认为 16). 每个线程同一时刻只能操作一个数据文件。
-u string
TiDB 的用户名 (默认为 "root")
如果 mydumper 出现以下报错:
** (mydumper:27528): CRITICAL **: 13:25:09.081: Could not read data from testSchema.testTable: GC life time is shorter than transaction duration, transaction starts at 2019-08-05 21:10:01.451 +0800 CST, GC safe point is 2019-08-05 21:14:53.801 +0800 CST
需要调整GC时间
就再执行两步命令:
1、执行 mydumper 命令前,查询 TiDB 集群的 GC 值并使用 MySQL 客户端将其调整为合适的值:
select VARIABLE_NAME, VARIABLE_VALUE from mysql.tidb where VARIABLE_NAME like "tikv_gc%";
# 或
SELECT * FROM mysql.tidb WHERE VARIABLE_NAME = 'tikv_gc_life_time';
update mysql.tidb set VARIABLE_VALUE = '720h' where VARIABLE_NAME = 'tikv_gc_life_time';
2、执行 mydumper 命令后,将 TiDB 集群的 GC 值恢复到第 1 步中的初始值:
update mysql.tidb set VARIABLE_VALUE = '10m' where VARIABLE_NAME = 'tikv_gc_life_time';
如果报如下错
** (mydumper:4579): CRITICAL **: 14:07:32.660: There are queries in PROCESSLIST running longer than 60s, aborting dump,
use --long-query-guard to change the guard value, kill queries (--kill-long-queries) or use
different server for dump
添加参数-l
尽量给的大一点
./mydumper -h 172.168.181.54 -u root -p q1w2E#R$ -P 4000 -c -t 16 -r 5000 -x '^(?!(mysql|test|INFORMATION_SCHEMA|PERFORMANCE_SCHEMA|METRICS_SCHEMA|tidb_loader))' --skip-tz-utc -l 7200000 -o leo/