单机docker部署,无法使用物理备库容灾

【 使用环境 】生产环境
【 OB or 其他组件 】OB
【 使用版本 】oceanbase-ce:4.3.5.1
【问题描述】2个机器 分别单机docker部署,A机器为主,B机器为灾备机器,B创建备租户报错:
ERROR 4765 (HY000): create standby tenant may fail, SYS LS sync status is abnormal: NOT AVAILABLE, please check V$OB_LS_LOG_RESTORE_STATUS

【复现路径】
主(10.22.100.95):
docker run -d
-p 3306:2881
-p 2882:2882
-v /root/oceanbase/ob:/root/ob
-v /root/oceanbase/obd/cluster:/root/.obd/cluster
-v /root/oceanbase/hybackup:/hybackup
–name odb1
-e OB_SERVER_IP=127.0.0.1
-e OB_TENANT_NAME=mysql
-e OB_TENANT_PASSWORD=123456
-e OB_CLUSTER_NAME=obcluster1
oceanbase/oceanbase-ce

docker exec -it odb1 /bin/bash
obclient -h127.0.0.1 -uroot@mysql -p123456 -P2881 -A
ALTER SYSTEM ARCHIVELOG;

备(10.22.100.98):
docker run -d
-p 3306:2881
-p 2882:2882
-v /root/oceanbase/ob:/root/ob
-v /root/oceanbase/obd/cluster:/root/.obd/cluster
-v /root/oceanbase/hybackup:/hybackup
–name odb1
-e OB_SERVER_IP=127.0.0.1
-e OB_TENANT_NAME=mysql
-e OB_TENANT_PASSWORD=123456
-e OB_CLUSTER_NAME=obcluster2
oceanbase/oceanbase-ce

docker exec -it odb1 /bin/bash
obclient -h127.0.0.1 -uroot -P2881 -A
DROP TENANT mysql force;
CREATE STANDBY TENANT IF NOT EXISTS mysql LOG_RESTORE_SOURCE = “SERVICE=10.22.100.95:3306 USER=root@mysql PASSWORD=123456” RESOURCE_POOL_LIST=(‘mysql_pool’);

因为是docker单机部署,创建容器主和备都加了-e OB_SERVER_IP=127.0.0.1指定ip(不指定的化,ip变化了则无法启动),但是备创建租户的时候,是使用了宿主机的ip和映射端口,无法创建,并且查询恢复源 并不是我创建指定的地址和端口


那是不是意味着 ,docker单机部署的oceanbase无法 使用物理备库容灾功能?
【附件及日志】

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

3 个赞

用户问题: 在生产环境中使用 Docker 单机部署 OceanBase,配置主备两台机器时遇到创建备租户失败的问题,错误提示为 ‘create standby tenant may fail, SYS LS sync status is abnormal: NOT AVAILABLE’,具体操作步骤已提供,应该如何解决?

针对您提供的问题,推荐使用 obdiag 工具进行日志采集,通过收集日志来帮助我们定位问题原因。

日志采集场景: 主备库延迟
日志采集命令: obdiag gather scene run --scene=observer.delay_of_primary_and_backup

请您按照上述命令执行日志采集,并将生成的日志压缩包提供给我们,这将有助于我们进一步分析问题的原因。

为了更好地理解您的环境和问题,能否请您回答以下问题?

  1. 您当前使用的 OceanBase 版本是什么?
  2. 在尝试创建备租户之前,主租户是否正常工作?
  3. 您能否提供主备两台机器之间的网络状况如何?例如,是否有网络延迟或丢包现象?
  4. 您可以查看并提供两台机器上的日志中是否有与 ‘SYS LS sync status’ 相关的错误信息吗?
  5. 您在创建备租户时,是否严格按照官方文档中的步骤进行?如果有任何调整,请告知具体调整内容。
  6. 创建备租户失败时,是否有其他相关错误日志或报警信息?

感谢您的配合,期待您的回复。

附上敏捷诊断工具 obdiag 使用帮助链接

2 个赞

建议使用本机ip创建ob,然后将该ip写死绑定再试试

2 个赞

如何使用本机ip 操作呢?-e OB_SERVER_IP=127.0.0.1 这个改为指定本机的IP,然后使用本地网络吗?

2 个赞

使用本机ip是要配置免密登录吗,不然会报错?

2 个赞

是的要配置免密

2 个赞

指定宿主机的IP不太行,配置了免密登录,是过了ssh的检查,但是后面报错了,还会使用宿主机的环境部署oceanbase,那容器化部署就没意义了。单机docker部署的还有没有其他方式可以 使用 主备的功能呢?

2 个赞

CREATE STANDBY TENANT IF NOT EXISTS mysql LOG_RESTORE_SOURCE = “SERVICE=10.22.100.95:3306 USER=root@mysql PASSWORD=123456” RESOURCE_POOL_LIST=(‘mysql_pool’);

使用宿主机的ip和地址 是可以访问到主的,为什么LOG_RESTORE_SOURCE 这个地址会自动变为127.0.0.1:2881 呢?有方式可以处理吗?

2 个赞

这边是不推荐使用docker搭建ob的。不能确保其可长期运行的

2 个赞

如果确实用了,是只能使用单机吗?是用不了 主备模式吗?

2 个赞

需要配置免密互信

1 个赞

免密ssh登录呢

1 个赞

可以配置主备模式,网络通就可以

docker 单机部署,主备还有方式可以网络通的吗?使用swarm 吗,但是swam 的方式的话,ip地址也不是固定的。