Oceanbase调试:用于调试的单机集群的搭建

本文提供了一步一步的指导,详细介绍了如何在一台计算机上部署和调试Oceanbase集群,包括编译安装、初始化、启动服务、关闭集群以及调试方法等关键步骤。同时,还介绍了如何使用客户端进行查询操作,并列举了一些常见的问题解决方法。
部署运行你感兴趣的模型镜像

涉及到多个角色/服务(Mergeserver,Updateserver,Chunkserver,Rootserver)的Oceanbase调试需要将整个集群启动起来后进行,为了方便,可以在同一台计算机上启动这些服务,只要占用的端口不同即可。下面简要记录如何在同一台计算机上启动Oceanbase的四个服务。

1. 编译并安装Oceanbase集群(configure, make, make install)到目标文件夹

2. 将single-machine-bootstrap拷贝到目标文件夹,并运行一次,以自动初始化各种数据目录,其中data和etc目录如下:


single-machine-bootstrap会自动生成一个最简单的schema.ini,只建立了一个简单示例表,这可能不是你需要的,可以进入到etc/目录,将这个文件替换成你需要的schema

4. 使用oceanbase.sh脚本启动集群 :
oceanbase.sh start_rs
oceanbase.sh start_ups
oceanbase.sh start_ms
oceanbase.sh start_cs

5. 执行rs_admin来设置主机群标志(MUST):

bin/rs_admin -r 10.1.11.11 -p 1111 set_obi_role -o OBI_MASTER

上面的ip和端口是rs的,可以在etc/rootserver.conf中查看到。


6. 使用oceanbase.sh脚本关闭集群:
oceanbase.sh stop_rs
oceanbase.sh stop_ups
oceanbase.sh stop_ms
oceanbase.sh stop_cs

不一定能一次就关死,必要时候ps -aux | grep server 看一下


oceanbase各个server的运行日志在data/log目录下,通过查看日志可以观察程序是否运行正确


具体调试就得靠gdb了,attach上去即可。

另外,为了调试查询相关的问题,还可以使用客户端,有两种途径:(1)自己利用c api来编写客户端(2)利用psql(自从有了ObConnector,Oceanbase就可以被各种通用的SQL客户端访问了。OBConnector的功能是让用户可以通过Postgres Psql工具或其他语言的Postgres数据库接口(如Posgres JDBC,Postgres PHP PDO接口)连接和访问Oceanbase数据库。)


常见问题:

1. 启动时(特别是重启时)无法创建table

》请(1)尝试重启,(2)检查etc/rootserver.conf下面的__create_table_in_init=1项目,确保值为1,(3)删除data/rs_commitlog, data/ups_commitlog再重启

2. 重启时一些server没法启动

》 确保原server被kill掉了,如果没有,使用kill -9 server_pid暴力踢之

3. 其它

》确保使用了rs_admin来设置obi role,这一步是必须的,容易忘记。

作者email:hustos@qq.com



您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

### OceanBase 分布式集群搭建教程 搭建 OceanBase 分布式集群需要经过多个关键步骤,包括环境准备、安装配置、集群扩展以及验证等。以下是详细的说明: #### 1. 环境准备 在开始搭建分布式集群之前,需要确保所有节点的环境已经准备好。这包括操作系统版本、依赖库的安装以及网络连通性测试。可以参考以下命令进行环境初始化[^1]: ```bash tar -xzf oceanbase-all-in-one-*.tar.gz cd oceanbase-all-in-one/bin/ ./install.sh source ~/.oceanbase-all-in-one/bin/env.sh ``` #### 2. 集群初始化 在完成单机环境部署后,可以通过命令行工具对集群进行初始化操作。首先需要查看当前集群的状态以确定扩展的基础信息[^3]: ```bash oceanbase@admin > SHOW ZONE; ``` 此命令将返回当前集群中已有的 Zone 信息。 #### 3. 添加新节点 为了扩展集群规模,需要向现有集群中添加新的节点。假设新增节点的 IP 地址为 `192.168.1.10`,可以使用以下命令将其加入集群: ```bash oceanbase@admin > ALTER SYSTEM ADD SERVER '192.168.1.10:2882'; ``` 此处的端口号 `2882` 是默认的 OceanBase 数据库服务端口。 #### 4. 配置 Zone OceanBase 的分布式架构依赖于多 Zone 设计来实现高可用性和数据冗余。可以通过以下命令创建一个新的 Zone 并将服务器分配到该 Zone 中[^3]: ```bash oceanbase@admin > ALTER SYSTEM ADD ZONE 'zone2' '192.168.1.10'; ``` #### 5. 验证集群状态 在完成节点和 Zone 的添加后,需要验证整个集群的状态是否正常。可以使用以下命令检查集群健康状况[^3]: ```bash oceanbase@admin > SELECT * FROM GV$OB_CLUSTER_STATUS; ``` 如果所有节点均显示为 `ACTIVE` 状态,则表明集群扩展成功。 #### 6. 数据同步与分发 OceanBase 的数据存储机制基于基线数据和增量修改的设计理念[^4]。在分布式环境中,系统会自动将数据分片(Partition)分布到不同的 Zone 中,并通过一致性协议保证副本之间的同步。 ### 注意事项 - 在进行集群扩展时,建议先备份重要数据以防止意外情况发生。 - 如果集群已经被 OCP 平台接管,可以直接通过 OCP 界面完成 Zone 和服务器的添加操作[^3]。 ```python # 示例代码:模拟 OceanBase 集群状态查询 def check_cluster_status(): import pymysql connection = pymysql.connect( host='127.0.0.1', user='root', password='', database='oceanbase' ) try: with connection.cursor() as cursor: sql = "SELECT * FROM GV$OB_CLUSTER_STATUS" cursor.execute(sql) result = cursor.fetchall() print(result) finally: connection.close() check_cluster_status() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值