集群组件故障处理
集群组件故障处理¶
集群监控服务 monitor 会定期遍历每个组件实例,维护其实时状态。实例的 status 有3种取值,对应每种状态,采用不同的处理方式:
u
:意为 up,表示实例在线。d
:意为 down,表示实例掉线。如果monitor发现组件实例掉线,则会将此实例的status
修改为d
。然后monitor 会尝试给失败的实例发送 start 命令,试图重新启动这些实例,并记录实例掉线的时间。- 实例类型为 coodinator,且掉线超过 120s,则将其
status
设置为b
。 - 实例类型为 executor,且掉线超过 30s,则将其
status
置为b
。若此实例为 primary executor,则将对应的 mirror executor 升级为 primary executor;若此实例为 mirror executor,则断开其对应的 primary executor 的日志同步,确保数据库业务能正常进行。 - 实例类型为 gtm,且掉线超过 30s,则将其
status
置为b
。 - 实例类型为 monitor,且掉线超过 30s,则将其
status
置为b
。
- 实例类型为 coodinator,且掉线超过 120s,则将其
b
:意为 broken,表示实例损坏,monitor 将进入故障处理流程,对这些实例进行恢复。
获取组件状态¶
SeaboxMPP数据库集群中组件实例较多,可以通过seabox status
来查看集群和组件实例的状态,使用方法如下:
- 查询集群整体状态
seabox status
- 查询集群所有组件状态和组件详细信息
seabox status -a
seabox status --all
集群监控配置¶
变量名称 | 含义 | 默认值 | 修改方法 |
---|---|---|---|
monitor_basebackup_format | 是否使用 basebackup 的 plain 模式对实例进行自动恢复,0:正常模式,1:plain模式 | 0 | seabox config |
monitor_basebackup_transfer_rate | 使用 basebackup 自动恢复,对 basebackup 网络传输限速。0:不限速;大于0:限速值;单位:KB/s | 0 | seabox config |
monitor_coor_bad_time | coordinator 掉线超过此时间,则将其状态修改为 'removed',,单位:秒 | 60 | seabox config |
monitor_coor_start_timeout | coordinator 启动超时时间,启动超过此时间则认为启动失败,单位:秒 | 60 | seabox config |
monitor_coor_recovering_time | coordinator 启动后,会处于 'recovery' 状态,重放WAL,此时coordinator不接受外界的连接,当超过此时间还没有进入 'online' 状态,则将其状态修改为 'removed',准备进行自动修复,单位:秒 | 60 | seabox config |
monitor_coor_wait_time | coordinator 进行自动恢复后,启动 coordinator,等待 coordinator 的 'online' 状态更新到所有的 coordinator 系统表中,单位:秒 | 15 | seabox config |
monitor_db_username | monitor 连接数据库使用的用户名,默认为跟操作系统用户名相同,如果不同,则可以通过此参数来设置 | 操作系统用户 | seabox config/seabox recover |
monitor_doctor_sql_retry | monitor 进行自动恢复操作时,连接数据失败的重试次数 | 10 | seabox config |
monitor_doctor_sql_timeout | monitor 进行自动恢复操作时,会连接 coordinator/executor 并发送 sql, 设置连接超时,如果超过此时间,则中断连接,单位:秒 | 10 | seabox config |
monitor_enable_coor_basebackup | coordinator 是否使用 basebackup 进行自动恢复。0:否,此时 coordinator 将不进行自动恢复;1:是 | 1 | seabox config |
monitor_enable_exec_basebackup | executor 是否使用 basebackup 进行自动恢复。0:否;1:是。此配置优先级低于 monitor_enable_exec_rewind 和 monitor_enable_exec_rewind_checksum | 1 | seabox config |
monitor_enable_exec_evaluate | 对 WAL 日志文件和数据的空间进行评估,当 WAL 日志文件大于数据空间的2倍时,使用 basebackup 进行自动恢复,不使用 rewind 进行自动恢复。0:不评估;1:评估 | 1 | seabox config |
monitor_enable_exec_primary_only | 是否允许单主模式,若不允许,则当集群中只剩一个 primary exec 时,coor 执行 sql 会卡住。0:不允许;1:允许 | 1 | seabox config |
monitor_enable_exec_rewind | executor 是否使用 rewind 方式进行自动恢复。0:否;1:是。此配置优先级高于 monitor_enable_exec_basebackup 和 monitor_enable_exec_rewind_checksum | 1 | seabox config |
monitor_enable_exec_rewind_checksum | executor 状态为 'removed' 时,是否使用 checksum rewind 方式进行自动恢复。0:否;1:是。此配置优先级低于 monitor_enable_exec_rewind,高于 monitor_enable_exec_basebackup | 1 | seabox config |
monitor_enable_exec_rebalance | 是否允许 executor 进行自动 rebalance。0:否;1:是 | 1 | seabox config |
monitor_enable_exec_switch_nsync | 是否允许 executor 在主从不同步时切换(可能导致数据丢失)。0:否;1:是 | 0 | seabox config |
monitor_enable_idle | monitor 是否进入 idle 模式,不进行任何集群监控服务。0:否;1:是 | 0 | seabox config |
monitor_exec_bad_time | executor 掉线超过此时间,则尝试其状态修改为 'removed',如果此时 executor 的 seaboxmaster 进程还存在,则不修改其状态,继续等待,直到达到 'monitor_exec_complete_bad_time' 设定的超时时间,单位:秒 | 30 | seabox config |
monitor_exec_complete_bad_time | executor 掉线超过此时间,不再检查 seaboxmaster 进程是否存在,直接将其状态修改为 'removed',单位:秒 | 30 | seabox config |
monitor_exec_async_time | executor 的 mode 在正常情况下为 's',如果 executor 的 mode 变为 'a',并且运行正常,超过此时间,monitor 会将其 mode 修改为 's',单位:秒 | 120 | seabox config |
monitor_exec_nsync_time | executor 的 mode 在正常情况下为 's',如果 executor 的 mode 变为 'n',超过此时间,则将其状态修改为 'removed',单位:秒 | 120 | seabox config |
monitor_exec_recovering_time | executor 启动后,会处于 'recovery' 状态,重放WAL,此时 executor 不接受外界的连接,当超过此时间还没有进入 'online' 状态,则将其状态修改为 'removed',准备进行自动修复,单位:秒 | 180 | seabox config |
monitor_exec_start_timeout | executor 启动超时时间,启动超过此时间则认为启动失败,单位:秒 | 30 | seabox config |
monitor_exec_wait_stop_time | 关闭逻辑集群后,等待 executor 停止超时,超过此时间为停止的 executor,将被强制 kill,单位:秒 | 30 | seabox config |
monitor_external_coor_bad_time | 如果备份集群 coordinator 掉线超过此时间,则将其状态修改为 'removed',单位:秒 | 120 | seabox config |
monitor_external_coor_nsync_time | 如果备份集群 coordinator 的 mode 变为 'n',超过此时间,则将其状态修改为 'removed',单位:秒 | 120 | seabox config |
monitor_external_exec_bad_time | 如果备份集群 executor 掉线超过此时间,则将其状态修改为 'removed',单位:秒 | 30 | seabox config |
monitor_external_exec_nsync_time | 如果备份集群 executor 的 mode 变为 'n',超过此时间,则将其状态修改为 'removed',单位:秒 | 120 | seabox config |
monitor_external_replication_sync_mode | 主备集群间 coordinator/executor 建立流复制的模式,1:同步模式;0:异步模式 | 1 | seabox config |
monitor_gtm_bad_time | gtm 掉线超过此时间,则将其状态修改为 'removed',单位:秒 | 30 | seabox config |
monitor_lcgroup_start_stop_monit | 是否监控逻辑集群启动/停止不一致的 exec,若监控,则遇到不一致时 monitor 拉起或停止与所属逻辑集群状态不一致的 exec | 1 | seabox config |
monitor_lcgroup_starting_stoping_time | 逻辑集群在 starting 和 stopping 状态的持续时间,超过此时间则直接设置逻辑集群状态为 start 和 stop,单位:秒 | 120 | seabox config |
monitor_max_slot_wal_keep_size | WAL 占用空间阈值,当 mirror executor 掉线时,计算 primary executor 中 WAL 占用空间,如果占用空间超过此阈值,则将复制槽摘除。0:不检查;大于0:检查 primary executor 的 WAL;单位:GB | 64*1024 | seabox config |
monitor_module_detect_interval | monitor 探测组件间隔时间,单位:秒 | 10 | seabox config |
monitor_recover_backup_core | 实例在进行全量自动恢复前,是否需要备份core文件,0:不备份,1:备份 | 1 | seabox config |
monitor_recover_exec_parallel_degree | executor 并发使用 basebackup 进行全量恢复时,并发度控制,0:没有并发,其他为并发度 | 0 | seabox config |
monitor_recover_exec_parallel_mode | executor 使用 basebackup 进行全量恢复时,是否可以多个 executor 并发恢复,0:串行恢复,1:并行恢复 | 1 | seabox config |
monitor_recover_operation_timeout | monitor 自动修复过程中,启动 coordinator/executor 的超时时间,单位:秒 | 3600 | seabox config |
monitor_recover_rewind_retry_count | executor 使用 rewind 进行自动恢复失败时的重试次数 | 3 | seabox config |
monitor_recover_rewind_retry_interval | executor 使用 rewind 进行自动恢复重试间隔,单位:秒 | 10 | seabox config |
monitor_recover_promote_timeout | mirror executor 提升为 primary executor 的等待时间,超过此时间则认为升主失败,单位:秒 | 3600 | seabox config |
monitor_recover_stop_timeout | monitor 自动修复过程中,停止 coordinator/executor 的超时时间,单位:秒 | 60 | seabox config |
monitor_recover_sync_timeout | 主从实例同步超时时间,超过此时间还没有达到主从同步,则认为同步失败,单位:秒 | 30 | seabox config |
monitor_scdcs_auto_archive_interval | scdcs数据空间检测时间间隔,单位:秒,默认值:86400s(1天) | 86400 | seabox config |
monitor_scdcs_max_data_size | scdcs数据空间限值,超过此限值则自动压缩scdcs空间,单位:MB | 256 | seabox config |
monitor_ssh_connect_timeout | monitor 进行 ssh 操作时超时时间,超过此时间则 ssh 操作返回失败,单位:秒 | 10 | seabox config |
monitor_vip_detect_interval | monitor 探测 vip 健康状态间隔时间,单位:秒 | 60 | seabox config |