mydumper

最近更新时间: 2024-06-12 15:06:00

参数选项

  • -B, --database 导出单库

  • -T, --tables-list 以逗号分隔的多个表名

  • -O,--omit-from-file 包含要跳过的 database.table 条目列表的文件,每行一个(在应用正则表达式选项之前跳过)

  • -o, --outputdir 导出文件存放目录

  • -s, --statement-size 每条INSERT语句的大小,单位字节,默认 1000000

  • -r, --rows 尝试分割表,每个块的行数由该参数指定,该参数会屏蔽--chunk-filesize

  • -F, --chunk-filesize 尝试分割表,每个表的大小由该参数指定,单位MB,该参数不能和--load-data一起使用

  • --max-rows 限制表中每个块的行数,默认1000000

  • -c, --compress 将备份出来的数据文件,经压缩后存放

  • -e, --build-empty-files 空表也生成dump文件,此选项在V1.0D002版本之后废弃,统一用 ignore-emptytb

  • --ignore-emptytb 忽略空表不导出,此选项默认不开启,如需开启,设置 --ignore-emptytb=1

  • -x, --regex 'db.table' 正则匹配

  • -i, --ignore-engines 忽略以逗号分隔的多种存储引擎的数据表

  • -N, --insert-ignore 导出sql采用INSERT IGNORE

  • -m, --no-schemas 不导出表结构文件

  • -M, --table-checksums 转储表校验和与数据

  • -d, --no-data 不导出数据文件

  • --order-by-primary 如果不存在主键,则按主键或唯一键对数据进行排序

  • -G, --triggers 导出触发器

  • -E, --events 导出事件

  • -R, --routines 导出存储过程和函数

  • -W, --no-views 不导出视图

  • -k, --no-locks 不执行任何临时共享读锁. 警告:该参数会导致备份数据不一致

  • --no-backup-locks 不使用percona 特有的backup locks,还是使用传统的flush table with read lock

  • --less-locking 最小化在innodb引擎表上的锁持有时间

  • --long-query-retries 重试检查长查询,默认0(不重试)

  • --long-query-retry-interval 重试长查询检查前的等待时间,以秒为单位,默认 60

  • -l, --long-query-guard 设置长查询判定阈值, 默认60s,在执行flush tables with read lock前,如果开启了kill-long-queries,为了避免加全局读锁失败,会将当前执行时间超过60秒的sql强行结束

  • -K, --kill-long-queries 在执行flush tables with read lock前,kill长查询(默认行为是遇到长查询报错退出)

  • -D, --daemon 以守护进程模式运行

  • -X, --snapshot-count 快照数量,默认 2

  • -I, --snapshot-interval 每次dump的时间间隔 (单位为分钟), 需要 --daemon 参数, 默认 60

  • -L, --logfile log文件名,默认使用stdout

  • --tz-utc TIMESTAMP类型转换时区到UTC+0, 默认开启, 设置--skip-tz-utc可关闭.

  • --skip-tz-utc 不转换TIMESTAMP时区

  • --use-savepoints 采用savepoint以减少元数据锁使用, 需要 SUPER 权限

  • --success-on-1146 针对表不存在错误,采用warning而不是error

  • --lock-all-tables 使用 LOCK TABLE for all 替代 FTWRL

  • -U, --updated-since 使用 Update_time 仅导出过去U天有更新的表

  • --trx-consistency-only 将所有类型的表都当做innodb表备份

  • --complete-insert 构造insert语句带字段

  • --split-partitions 将分区转储到单独的文件中。 此选项覆盖分区表的 --rows 选项。

  • --set-names 设置名称,使用有风险,默认二进制

  • -h, --host 主机名

  • -u, --user 用户名

  • -p, --password 密码

  • -a, --ask-password 向用户索要密码

  • -P, --port TCP端口号

  • -S, --socket 连接采用socket文件

  • -t, --threads 备份线程数,默认4

  • -C, --compress-protocol 压缩协议

  • -V, --version 打印程序版本并退出

  • -v, --verbose 额外输出信息, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2

  • --load-data(原csv-output) 空参或设置为1时,输出csv格式,并不再输出sql格式,默认不开启,该参数不能和--trunk_filesize一起使用

  • --fields-escaped-by (原csv-escaped) 控制字符转义字符,仅支持单字符,默认"",设置为空则不进行转义 ,默认为""

  • --fields-enclosed-by (原csv-fields-enclosed) 字段包围符,仅支持单字符,默认为""

  • --fields-terminated-by (原csv-fields-terminated) 字段结束符,默认为"\t"

  • --lines-starting-by (原csv-lines-starting) 行起始符默认为""

  • --lines-terminated-by (原csv-lines-terminated) 行结束符,默认为"\n"

  • --statement-terminated-by 该参数很少会被使用到

  • --sync-wait 在 SESSION 级别设置的 WSREP_SYNC_WAIT 值

  • --hdfs-path 指定hdfs路径

  • --ignore-sysdb 忽略mysql,sysdb,sys库

  • --cos-bucket Bucket name in tencent cos storage service, 腾讯外部客户无需关注此选项

  • --cos-secretid Secret key in tencent cos storage service, 腾讯外部客户无需关注此选项

  • --cos-secretkey Secret ID in tencent cos storage service, 腾讯外部客户无需关注此选项

  • --cos-region Region name in tencent cos storage service, 腾讯外部客户无需关注此选项

  • --l5_server_name l5 server name, 腾讯外部客户无需关注此选项

  • --where 导出查询语句使用where条件,例如:--where="a=1 and b=2"

  • --whereCondition 选项where的别名

  • --no-check-generated-fields 不会执行与生成字段相关的查询。如果您已生成列,将导致恢复问题

  • --defaults-file 指定mysql default file

  • --ssl 使用 SSL 连接

  • --ssl-mode 与服务器的连接所需的安全状态:DISABLED、PREFERRED、REQUIRED、VERIFY_CA、VERIFY_IDENTITY

  • --key 密钥文件的路径名

  • --cert 证书文件的路径名

  • --ca 证书颁发机构文件的路径名

  • --capath 包含 PEM 格式的受信任 SSL CA 证书的目录的路径名

  • --cipher 用于 SSL 加密的允许密码列表

  • --tls-version 服务器允许哪些协议用于加密连接

  • --stream 写入文件后,它将通过 STDOUT 流式传输

  • --no-delete 流式操作完成后不会删除文件

举例

测试表:

CREATE TABLE `customer` (
`cust_id` int NOT NULL,
`name` varchar(200)  DEFAULT NULL,
`job_id` int DEFAULT NULL,
`job_name` varchar(300)  DEFAULT NULL,
PRIMARY KEY (`cust_id`),KEY `j_idx` (`name`) USING BTREE) ENGINE=InnoDB;

insert into customer(cust_id,name,job_id,job_name) values(100,'A',20,'C');
insert into customer(cust_id,name,job_id,job_name) values(200,'B',30,'NET');
insert into customer(cust_id,name,job_id,job_name) values(300,'C',40,'JAVA');
insert into customer(cust_id,name,job_id,job_name) values(400,'D',50,'PM');

文件导出到 hdfs下的目录:

su - tdsql 
./mydumper --host=10.0.1.9 --port=15002 --user=test1 --password=test1 --less-locking  --ignore-sysdb=1 --threads=4  --outputdir=/data/backup/data -B test -T customer  --no-schemas  --hdfs-path /recover

导出文件按行数切分:

./mydumper --host=10.0.1.9 --port=15002 --user=test1 --password=test1 --less-locking   --ignore-sysdb=1 --ignore-emptytb=1 --rows=50 --threads=4 --outputdir=/data/backup/data --complete-insert -B test -T customer --no-schemas

正则表达式,不备份包含 mysql、xa、query_rewrite 等关键字开头的数据库:

./mydumper  --host=10.0.1.9 --port=15002 --user=test1 --password=test1 --less-locking  --threads=1 --ignore-sysdb=1 --outputdir=/data/backup/data --regex='^(?!(mysql|xa|query_rewrite))'  --no-schemas

使用压缩方式导出数据:

./mydumper --host=10.0.1.9 --port=15002 --user=test1 --password=test1 --less-locking   --ignore-sysdb=1 --ignore-emptytb=1  --threads=1 --outputdir=/data/backup/data --complete-insert -B test -T customer --no-schemas  --compress=1

使用CSV格式导出数据:

./mydumper --host=172.27.25.11 --port=15002 --user=test1 --password=test1 -B test  --tables-list customer --load-data --fields-terminated-by="," --fields-enclosed-by='"'   --lines-starting-by="---" --lines-terminated-by="\n" --fields-escaped-by='\' -o /data/backup/data2

注意事项

  • --load-data 和 chunk_filesize 不能同时指定。

  • --database、--tables-list、--db-list 不能同时指定。

  • timestamp 类型默认导出会把时区转换到 UTC+0,可以通过--skip-tz-utc 改变这一行为,即不进行时区转换

  • 对于 big5、cp932、gbk、sjis、gb18031编码类型的表,由于编码字符集中含有和控制字符相等的字节,可能会出现导出后无法用 load data 导入的情况

  • --fields-escaped-by 设置转义字符,该转义的目的是为了避免字段内字符和格式控制字符冲突。如果设置为空,则不进行任何转义,如果数据和格式控制字符冲突,则可能会出现导出后无法用 load data 导入的情况,因此最好保持默认或者设置非空转移字符