现在的位置: 首页 > 综合 > 正文

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

2013年12月03日 ⁄ 综合 ⁄ 共 1295字 ⁄ 字号 评论关闭

涉及到多个角色/服务(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

抱歉!评论已关闭.