发起合并后,您可以参考本节内容查看合并进度及其他信息。
通过内部表查看
合并的过程可以通过内部表进行查看,通常合并的时间是取决于两次合并之间的数据变化量。两次合并之间的数据变化大,合并的时间会更长。同时,合并的线程数,合并时的集群压力,是否轮转合并等都影响合并的时间长短。
观察合并的过程可以通过如下语句查询:
obclient> SELECT * FROM __all_zone WHERE name LIKE '%merge%';
参数 | 说明 |
---|---|
is_merge_error | 合并是否出错。 |
last_merged_version | 集群所有 Zone 和最后合并版本。 |
merge_status | 合并状态 IDLE,ERROR,TIMEOUT,MERGING。 |
all_merged_version | 所有 Zone 合并的版本。 |
is_merge_timeout | 合并是否超时。 |
last_merged_time | 最后合并的时间。 |
last_merged_version | 最后合并的版本。 |
merge_start_time | Zone 开始的合并时间。 |
如果合并时间比较长,并且两次合并之间的增量很大,可以通过一下语句查看内部表来查看合并进度:
obclient> SELECT * FROM __all_virtual_partition_sstable_image_info;
字段名称 | 类型 | NULL | 描述 |
---|---|---|---|
zone | varchar(256) | NO | Zone 名称 |
svr_ip | varchar(32) | NO | IP 地址 |
svr_port | bigint(20) | NO | 端口号 |
major_version | bigint(20) | NO | 大版本号 |
min_version | bigint(20) | NO | 小版本号 |
ss_store_count | bigint(20) | NO | SSStore 总数量 |
merged_ss_store_count | bigint(20) | NO | 合并完成的 SSStore 总数量 |
modified_ss_store_count | bigint(20) | NO | 修改过的 SSStore 总数量 |
macro_block_count | bigint(20) | NO | 宏块总数量 |
use_old_macro_block_count | bigint(20) | NO | 重用的宏块数量 |
merge_start_time | timestamp(6) | NO | 合并开始时间 |
merge_finish_time | timestamp(6) | NO | 合并结束时间 |
merge_process | bigint(20) | NO | 合并进度 |
rewrite_macro_old_micro_block_count | bigint(20) | NO | 重用的微块数量 |
rewrite_macro_total_micro_block_count | bigint(20) | NO | 写入的微块数量 |
除了通过内部表查看合并进度,也可以通过日志查看 Partiton 粒度的合并,每个 Partition 开始和成功合并的记录:
egrep "begin to merge partition|succ to merge partition" observer.log
通过内部表 __all_virtual_partition_sstable_image_info
除了可以查看 progress,也可以查看 Macro Block 级别的进度。Macro Block 为 2 MB 大小,因此比 Partition 级别的粒度更细。在合并中如果遇到单一 Partition 非常大的情况,可以观察这个内部表的 macro_block_count
和 use_old_macro_block_count
这两列,当他们的值在不断变化,表示合并仍然在进行。
通过 OCP 查看
发起合并后,也可以通过 OCP 来查看合并进度及其他信息。
说明
登录 OCP。
默认进入 集群概览 页面。
在 集群概览 页面的 集群列表 区域,选择待操作的集群并单击其集群名。
在显示的左侧导航栏上,单击 合并管理。
在 合并详情 页签中,查看合并详情。
合并详情一般显示的是集群最近的一次合并。如果当前正在合并,则展示合并中的版本,如果当前是空闲状态即未处于合并状态,则显示上一次合并版本详情。
说明
对于合并中的版本,合并的 开始时间 和 结束时间 后显示的是预计完成时间。预计完成时间是基于最近三次合并完成的平均值来估算的,可能与实际合并完成时间有较大偏差。
一般而言,对于稳定运行的环境,预计完成时间会比较准确,新部署的环境因为估算的数据缺失,估算的准确度会较低。
此外,还可以根据 总分区副本数 和 完成合并的分区副本数 来观察分区级别的合并完成情况,推测实际的合并完成进度。
注意
基于完成合并的分区副本数来直接计算合并完成的进度仍然不准确,因为不同分区的大小差异可能很大,每个分区合并的耗时也可能差异很大。