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

第二章:如何部署 OceanBase 社区版 2.10 如何重启 OceanBase 集群

2.10 如何重启 OceanBase 集群

OceanBase 数据库自身并没有提供重启集群的命令。OceanBase 数据库的核心能力就是高可用(前提是三副本部署)。当少数派节点故障时,OceanBase 数据库内部会自动切换,依然可以为业务提供读写服务。OceanBase 数据库提供了停止和启动某个副本(zone 级别或者 server 级别)的功能,并且只允许停止少数派节点。

所以,OceanBase 集群的重启是靠外部操作。比如说用 kill 命令杀进程,然后再启动进程 observer

2.8 章节中已经演示了如何杀单副本集群里的节点进程(进程启动时指定参数),下面演示三副本集群里的重启集群方法。

在生产环境中为了尽可能缩短集群不可用时间,重启集群采取一种保险的策略:按 zone 或 server 逐个重启集群节点。这个过程可能会比较长,持续几分钟到十几分钟。刚开始学习 OceanBase 数据库时,我们先掌握简单的重启方法,后续深入介绍 OceanBase 运维时,再介绍安全稳妥的重启方法。


手动重启 OceanBase 集群节点

#  ssh 到 节点 1
ssh 172.20.249.52

#  正常 kill 进程,除非是测试用或者评估过风险,否则不要用`kill -9` 。
kill  `pidof observer`

#  等待 60s,等进程完全退出
sleep 60

#  反复确认进程完全退出
ps -ef | grep observer

#  配置 LIBRARY PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/oceanbase-ce/lib/

#  启动进程
cd /home/admin/oceanbase-ce && bin/observer

#  等待 10s 进程启动
sleep 10

#  反复确认进程启动时没有退出
ps -ef | grep observer | grep -v grep

#  等待 60s,等进程完全启动并恢复完毕
sleep 60

#  查看进程监听成功(默认监听 2881 和  2882 端口)
netstat -ntlp

#  在集群中查看节点状态(`status`)、开始服务时间(`start_service_time`)是否正常。
select a.zone,concat(a.svr_ip,':',a.svr_port) observer, cpu_total, (cpu_total-cpu_assigned) cpu_free, round(mem_total/1024/1024/1024) mem_total_gb, round((mem_total-mem_assigned)/1024/1024/1024) mem_free_gb, usec_to_time(b.last_offline_time) last_offline_time, usec_to_time(b.start_service_time) start_service_time, b.status, usec_to_time(b.stop_time) stop_time, b.build_version  from __all_virtual_server_stat a join __all_server b on (a.svr_ip=b.svr_ip and a.svr_port=b.svr_port) order by a.zone, a.svr_ip;

在第一个节点重启成功后,才可重复操作第二个节点。如果只是测试,不在乎可用性,则可以忽略上面的确认过程,直接杀掉所有集群节点的进程,然后启动进程。这个时候集群节点起来后需要几分钟来恢复数据和通信,如果集群重启之前有大量的数据读写,这个节点进程的恢复时间可能会很长,需要十几分钟甚至几十分钟。


使用 OBD 重启集群

上述内容是手动重启 OceanBase 集群节点的原理,如下介绍使用 OBD 工具自动化重启 OceanBase 集群节点。

注意

当前 OBD 的重启集群并没有包含必要的检查操作。所以,测试环境中可以使用,生产环境中需要谨慎使用。

使用 OBD 重启集群的命令是:obd cluster restart

obd cluster restart obce-3zones

输出:
[admin@obce00 oceanbase-ce]$ obd cluster restart obce-3zones
Get local repositories and plugins ok
Open ssh connection ok
Stop observer ok
Stop obproxy ok
obce-3zones stopped
Get local repositories and plugins ok
Open ssh connection ok
Cluster param config check ok
Check before start observer ok
Check before start obproxy ok
Start observer ok
observer program health check ok
Connect to observer ok
Wait for observer init ok
+-------------------------------------------------+
|                     observer                    |
+---------------+---------+------+-------+--------+
| ip            | version | port | zone  | status |
+---------------+---------+------+-------+--------+
| 172.20.249.49 | 3.1.0   | 2881 | zone2 | active |
| 172.20.249.51 | 3.1.0   | 2881 | zone3 | active |
| 172.20.249.52 | 3.1.0   | 2881 | zone1 | active |
+---------------+---------+------+-------+--------+

Start obproxy ok
obproxy program health check ok
Connect to obproxy ok
Initialize cluster
+-------------------------------------------------+
|                     obproxy                     |
+---------------+------+-----------------+--------+
| ip            | port | prometheus_port | status |
+---------------+------+-----------------+--------+
| 172.20.249.52 | 2883 | 2884            | active |
| 172.20.249.49 | 2883 | 2884            | active |
| 172.20.249.51 | 2883 | 2884            | active |
+---------------+------+-----------------+--------+
obce-3zones running

此处 OBD 重启集群时,默认重启了所有组件(包括 oceanbase-ce 和 obproxy)。您也可通过 -c 命令指定重启具体的组件。

ODP 的重启特点跟 OceanBase 数据库是一样的,也有工作目录和启动参数,此处不作介绍。后续在 OceanBase 的运维章节中将介绍 ODP 的相关运维。

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

评论