mydumper
最近更新时间: 2024-10-17 17:10: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 导入的情况,因此最好保持默认或者设置非空转移字符