mydumper的参数解析

1.过滤相关
-B,--database
备份指定库。可指定多个库,中间需用逗号隔开。


-T,--tables-list
备份指定表,表必须是 database.table 的形式。可指定多张表,中间需用逗号隔开。


-0,--omit-from-file
忽略文件中指定表的备份。
文件中每个表占据一行,表必须是 database.table 的形式


-X,--regex
指定库表备份,支持正则表达式。
在执行全库备份时,如果不想备份 sys 库,可用 --regex 过滤。


-i,--ignore-engines
忽略指定存储引擎表的备份。可指定多个存储引擎,中间需用逗号隔开--routines--triggers、--events、
分别用于备份触发器、定时器、存储过程及函数。


-W,--no-views
不备份视图。


-m,--no-schemas
不备份表结构。


-d,--no-data
不备份数据。


--where
只导出满足 WHERE 条件的数据。


2.分片选项
-r,--rowS
使用该选项,mydumper 会将表分成多个 chunk 进行并行备份,否则只进行表级别的并行备份。当然,并不是所有的表都能进行 chunk 级别的并行备份。


-F,--chunk-filesize
对于不能进行并行备份的表,默认情况下,该表的数据只会写到一个文件中。在恢复时,也只能启动一个线程来恢复。对于这些表,我们可以使用 --chunk-filesize,将单表数据写到多个文件中,这样在恢复时,myloader就可以启动多个线程进行并行恢复。


--max-rows
限制单个 chunk 的最大行数,默认为 1000000。


3.事务相关
-k,--no-locks
备份过程中不加任何锁。


--no-backup-locks
Percona Server支持备份锁。使用 mydumper 备份 Percona Server 时,默认会使用备份锁来代替全局读锁。若指定该选项,则会禁用备份锁。


--less-locking
同样会加全局读锁,只不过全局读锁会在子线程对非 InnoDB 表加完表锁后释放,而表锁是在备份完非InnoDB表后释放。


--use-savepoints
同mysqldump一样,在每个表备份之前设置 SAVEPOINT,可提高 DDL的并发性。只不过如果设置 --rows,则会禁用 --use-savepoints。


--lock-all-tables
使用LOCK TABLE ·· READ 命令加表锁来代替全局读锁,在备份完非 InnoDB 表后释放。


--trx-consistency-only
同样会加全局读锁,只不过释放的时间点是在各个子线程初始化(设置事务隔离级别,开启事务致性快照)之后。这样只能保证 InnoDB 表的一致性。


4.导出选项
默认情况下,备份结果以 INSERT INTO tbl_name VALUES (value_list),(value_list) ...的形式记录在文件中。相关的参数如下。

-N,--insert-ignore
使用INSERT IGNORE 导出数据。


--complete-insert
在INSERT操作中指定列名。


-s, --statement-size
一个INSERT 操作的最大长度。不指定该参数,则默认为 1000000,单位是字节。
除此之外,还可将备份集以 CSV 格式保存。这个时候,需指定 --csv,该参数会自动开启 --load-data,并将导出格式设置为 sv。
如果要保存为其他格式,需设置 --fields-terminated-by、--fields-enclosed-by、--fields-escaped-by、--lines-starting-by、--lines-terminated-by 。


5.其他选项
-a,--ask-password
提示输人用户密码。这样,就不用通过 -p 显式设置密码。相对而言,通过 -a 输入密码更安全。


-C,--compress
压缩备份。


--stream
流式备份。


-t,--threads
指定备份线程的数量,默认为 4。


-L, --logfile
将日志输出到指定文件。默认是输出到终端。


-D, --daemon,-I, --snapshot-interval
以后台进程的方式运行 mydumper。启动后,会在备份目录中生成两个子目录:0和 1。备份集会依次放到这两个目录中,即第一次的备份集会放到 0目录下,第二次的备份集会放到 1目录下,第三次又重新放到 0目录下,依此类推。备份的时间间隔由 --snapshot-interval 参数指定,默认为 60,单位是分钟。子目录的数量由 --snapshot-count 决定,默认为 2。


-U,--updated-since
只备份最近几天修改过的表。
判断的依据是 information_schema.tables 表中的 pdate_time 字段,没有备份的表会写到备份目录的 not_updated tables 文件中。

 

posted @ 2023-05-21 22:28  屠魔的少年  阅读(86)  评论(0)    收藏  举报