暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

分布式数据库学习Note224:OceanBase社区版中,如何重启节点?


欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/

重启是常见运维动作之一,适用于对机器进行短暂维修,以及修改系统配置项后需要重启生效的场景。重启过程中节点的下线时间需要在配置项 server_permanent_offline_time 设置的时间以内,否则会被永久下线。如果机器长时间维修,需要走机器替换流程,有关机器替换的详细操作请参见 替换节点

说明

集群级配置项 server_permanent_offline_time 用于设置节点心跳中断的时间阈值,即节点心跳中断多久后认为其被永久下线,永久下线的节点上的数据副本需要被自动补足。默认为 3600s。有关该配置项的更多详细信息,请参见 server_permanent_offline_time

背景信息

OceanBase 数据库作为一款分布式数据库,典型的部署架构为多副本部署(例如,同城三中心部署架构为 3 份副本,三地五中心部署架构为 5 份副本)。事务提交时利用 Paxos 协议在多个副本间达成多数派提交,从而维护副本之间的数据一致性,在少数派副本异常的情况下达成 RPO=0 的 SLA。

STOP SERVER 命令在多副本架构的基础上能够达到业务无损的重启效果,STOP SERVER 命令执行以下逻辑:

  1. 将待重启节点上的 Leader 全部切走,并保证除了重启节点以外的其他节点上的副本满足多数派。

  2. 在 Root Service 上将待重启节点标记为 stopped(节点状态为 ACTIVE 状态且 stop_time 字段大于 0),客户端识别后,不会将业务请求路由到该节点。

最终成功 Stop Server 后,重启节点不会引起无主选举及客户端报错等问题,对业务流量完全透明。如果 Stop Server 操作执行失败,需要停止重启并检查原因,例如,可能出现的原因有缺少副本、RedoLog 延迟、总投票成员数小于 3 等。

操作步骤

重启节点的主要流程为:停止服务 -> 转储 -> 关闭进程 -> 启动进程 -> 启动服务。

本文以重启集群中的一个节点为例提供操作指导,如果需要重启多个节点,请参考本操作执行多次即可。

  1. 使用 root 用户登录到集群的 sys 租户。

    连接示例如下,连接数据库时请以实际环境为准。

    obclient -h10.xx.xx.xx -P2883 -uroot@sys -p***** -A
    

    有关更加详细的连接数据库的操作指引,参见 连接数据库概述(MySQL 模式) 和 连接数据库概述(Oracle 模式)

  2. 执行以下命令,进行节点隔离。

    节点在重启过程中可能会影响服务的连续性,例如,集群只有一个或两个节点、或者租户的数据只分布在两个节点上的场景,重启节点的过程中系统将可能会无法提供服务。执行 Stop Server 操作进行节点隔离时,系统将会执行安全检查,保证节点重启过程中不影响系统服务的连续性。待节点成功隔离后,该节点上将不再提供服务。如果 Stop Server 操作失败,则需要检查集群的部署情况或根据报错信息解决问题后再重新执行 Stop Server 操作;或者如果可以接受节点停止服务,也可以跳过本步骤。

    obclient [(none)]> ALTER SYSTEM STOP SERVER 'svr_ip:svr_port';
    

    相关参数说明如下:

    • svr_ip:表示待停止的节点所在的 IP。

    • svr_port:表示待停止的节点的 RPC 端口,默认为 2882。

    示例如下:

    obclient [(none)]> ALTER SYSTEM STOP SERVER '172.xx.xx.xx:2882';
    

    执行成功后,可以查询 oceanbase.DBA_OB_SERVERS 视图中该 Server 的 STATUS 字段,可以看到字段值仍为 ACTIVE 不变,但 STOP_TIME 字段的值由 NULL 变为停止服务的时间点。

    查询 oceanbase.DBA_OB_SERVERS 视图的具体操作可参见 查看节点

  3. 执行以下命令,对待重启的节点进行转储操作,以便缩短重启后回放 Redo Log 的时间,加速重启。

    obclient [(none)]> ALTER SYSTEM MINOR FREEZE SERVER = ('svr_ip:svr_port');
    

    相关参数说明如下:

    • svr_ip:表示待重启的节点的 IP。

    • svr_port:表示待重启的节点的 RPC 端口,默认为 2882。

    示例如下:

    obclient [(none)]> ALTER SYSTEM  MINOR FREEZE SERVER = ('172.xx.xx.xx:2882');
    

    执行转储操作后,需要等待转储结束方可执行下一步操作,查看转储进度的相关操作请参见 查看转储信息

    更多转储相关的详细介绍,请参见 转储

  4. 停止 observer 进程。

    1. 使用 admin 用户登录待停止进程的节点所在的机器。

    2. 通过命令行工具进入 /home/admin/oceanbase/bin 目录。

      [admin@xxx /]$ cd /home/admin/oceanbase/bin
      

      更多 OceanBase 数据库软件的安装目录的详细介绍信息,请参见 OBServer 安装目录结构

    3. 执行以下命令,查看并获取节点的进程 ID。

      [admin@xxx oceanbase]$ ps -ef | grep observer | grep -v grep
      admin    103364      1 99  2022 ?        51-17:24:41 /home/admin/oceanbase/bin/observer
      

      示例中,103364 即为节点的进程 ID。

    4. 停止 observer 进程。

      命令如下:

      [admin@xxx oceanbase]$ kill -9 pid
      

      其中,pid 为待停止的节点的 observer 进程 ID。

      示例如下:

      [admin@xxx oceanbase]$ kill -9 103364
      

      注意

      一个部署目录只能停止该节点上的一个 observer 进程,如果需要停止多个节点上的 observer 进程,则需要依次登录多台机器进行操作。

    5. 执行以下命令,确认进程是否已停止。

      [admin@xxx oceanbase]$ ps aux | grep observer
      

      如果命令执行后没有返回信息,则表示进程停止成功。

  5. (可选)如果需要维修机器,在本步骤对机器进行短暂的维修。

  6. 启动 observer 进程。

    1. 使用 admin 用户登录待启动进程的节点所在的机器。

    2. 启动 observer 进程。

      [admin@xxx oceanbase]$ cd /home/admin/oceanbase  &&  ./bin/observer
      

      注意

      一个部署目录只能启动该节点上的一个 observer 进程,如果需要启动多个节点上的 observer 进程,则需要依次登录多台机器进行操作。

      更多 OceanBase 数据库软件的安装目录的详细介绍信息,请参见 OBServer 安装目录结构

  7. 执行以下命令,启动节点服务。

    obclient [(none)]> ALTER SYSTEM START SERVER 'svr_ip:svr_port';
    

    其中:

    • svr_ip:表示待停止的节点的 IP。

    • svr_port:表示待停止的节点的 RPC 端口,默认为 2882。

    示例如下:

    obclient [(none)]> ALTER SYSTEM START SERVER '172.xx.xx.xx:2882';
    

    执行成功后,可以查询 oceanbase.DBA_OB_SERVERS 视图中的 START_SERVICE_TIME 字段,该字段表示节点启动服务的时间。如果该值为 NULL,则表示该节点的服务还没有启动。

    查询 oceanbase.DBA_OB_SERVERS 视图的具体操作可参见 查看节点

欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论