terautil

集群间数据迁移的dump工具

1. 用法

  1. ./terautil dump help

(1)建表

  1. ./terautil --flagfile=../conf/terautil.flag dump prepare_safe

(2) 将扫表操作run起来

  1. ./terautil --flagfile=../conf/terautil.flag dump run

2. flag配置

flag名称 flag默认值或格式 flag介绍
dumptera_src_conf ../conf/src_tera.flag(格式) tera的源集群
dump_tera_dest_conf ../conf/dest_tera.flag(格式) tera的目的集群
dump_tera_src_root_path /xxx(路径格式) tera的源路径
dumptera_dest_root_path /xxx(路径格式) tera的目的路径
ins_cluster_addr terautil_ins(格式) 锁服务器的地址
ins_cluster_root_path /terautil/dump/xxxx(格式) 锁服务器路径
dump_tera_src_meta_addr “” 源meta表的地址
dump_tera_dest_meta_addr “” 目的meta表的地址
dump_manual_split_interval 1000 手动分裂时间间隔,单位为ms
dump_enable_manual_split false 是否允许手动分裂

集群间数据迁移后的diff工具

1. 用法

  1. ./terautil diff help

(1)准备工作

  1. ./terautil --flagfile=../conf/tera.flag diff prepare

(2) 分布式进行求diff

  1. ./terautil --flagfile=../conf/tera.flag diff run

(3) 查看diff运行的进度

  1. ./terautil --flagfile=../conf/tera.flag diff progress

(4) 统计diff结果并显示

  1. ./terautil --flagfile=../conf/tera.flag diff result

(5) 删除用过的数据

  1. ./terautil --flagfile=../conf/tera.flag diff clean

2. 说明

首先,需要通过配置文件指定原集群和目标集群比较的表名,通过diff_tables_map_file文件指定, 格式:tables_name1:lg1|lg2,tables_name2:lg1|lg2 前后表名用,分割,可以指定比较哪些lg,如果不指定可以连同:都不写,表示比较所有的lg,一行一对儿表名

terautil的主配置文件tera.flag中,主要需要指定上述map文件,原集群的flag文件和目的集群的flag文件, 其他配置如Ins相关配置,日志相关配置,如需指定求diff数据的时间段,可以指定dump_endtime。 其他配置使用默认即可。 有一个比较重要的配置是ins_cluster_diff_root_path,默认值是/terautil/diff,所有diff过程需要的元数据的key都以这个为前缀

diff prepare 从diff_tables_map_file,读取表信息数据,转换成cf, cf对应是否multiversion数据,各tablet的范围数据,存放到nexus中,供后面diff过程使用

diff run 真正开始运行diff,这个可以多个实例并行运行,每个实例每开始比较一个范围会加锁 注意:scan过程中会失败,这个失败的范围不会重试再次比较,因此当观察日志发现所有实例都运行结束了,但通过diff progress查看发现并不是所有范围都diff结束了, 这时候需要启动运行一次实例(运行几个都可以),再次观察diff progress的输出,重复这个过程知道所有范围都完成diff比较