发起合并后,您可以参考本节内容查看合并进度及其他信息。

通过内部表查看

合并的过程可以通过内部表进行查看,通常合并的时间是取决于两次合并之间的数据变化量。两次合并之间的数据变化大,合并的时间会更长。同时,合并的线程数,合并时的集群压力,是否轮转合并等都影响合并的时间长短。

观察合并的过程可以通过如下语句查询:

  1. 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 开始的合并时间。

如果合并时间比较长,并且两次合并之间的增量很大,可以通过一下语句查看内部表来查看合并进度:

  1. 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 开始和成功合并的记录:

  1. 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_countuse_old_macro_block_count 这两列,当他们的值在不断变化,表示合并仍然在进行。

通过 OCP 查看

发起合并后,也可以通过 OCP 来查看合并进度及其他信息。

说明

  1. 登录 OCP。

    默认进入 集群概览 页面。

  2. 集群概览 页面的 集群列表 区域,选择待操作的集群并单击其集群名。

  3. 在显示的左侧导航栏上,单击 合并管理

  4. 合并详情 页签中,查看合并详情。

    合并详情

    合并详情一般显示的是集群最近的一次合并。如果当前正在合并,则展示合并中的版本,如果当前是空闲状态即未处于合并状态,则显示上一次合并版本详情。

    说明

    对于合并中的版本,合并的 开始时间结束时间 后显示的是预计完成时间。预计完成时间是基于最近三次合并完成的平均值来估算的,可能与实际合并完成时间有较大偏差。

    一般而言,对于稳定运行的环境,预计完成时间会比较准确,新部署的环境因为估算的数据缺失,估算的准确度会较低。

    此外,还可以根据 总分区副本数完成合并的分区副本数 来观察分区级别的合并完成情况,推测实际的合并完成进度。

    注意

    基于完成合并的分区副本数来直接计算合并完成的进度仍然不准确,因为不同分区的大小差异可能很大,每个分区合并的耗时也可能差异很大。