使用白屏部署 OceanBase 数据库

【 使用环境 】测试环境 虚拟机 麒麟V10
【 OB or 其他组件 】OB
【 使用版本 】4.2.1.9
【问题描述】使用odb web集群部署节点配置 三台虚拟机地址为192.168.10.120,192.168.10.121,192.168.10.122
【复现路径】节点配置 OBServer 节点配置

【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

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

1 个赞

根据文档库中的信息,使用 OBD(OceanBase Deployer)进行 OceanBase 数据库的白屏化部署,可以通过 OBD 的 Web 界面完成集群的配置和部署。以下步骤可以帮助您完成三台虚拟机的节点配置:

1. 准备工作

确保三台虚拟机已经安装好操作系统,并且网络互通。每台虚拟机的 IP 地址分别为:

  • 192.168.10.120
  • 192.168.10.121
  • 192.168.10.122

2. 安装 OBD

在任意一台虚拟机上安装 OBD,推荐在 192.168.10.120 上安装 OBD 作为中控机。安装命令如下:

# 下载 OBD 安装包
wget https://mirrors.oceanbase.com/obd/obd-1.4.0-1.el7.x86_64.rpm

# 安装 OBD
sudo rpm -ivh obd-1.4.0-1.el7.x86_64.rpm

3. 配置 OBD

启动 OBD 的 Web 界面:

obd cluster deploy -c <cluster_name> -C <config_file>

其中 <cluster_name> 是您要创建的集群名称,<config_file> 是配置文件的路径。配置文件可以使用 OBD 的 Web 界面生成。

4. 使用 OBD Web 界面配置集群

  1. 打开浏览器,访问 OBD 的 Web 界面,地址为 http://192.168.10.120:8080
  2. 在 Web 界面中,选择“集群管理” → “新建集群”。
  3. 输入集群名称,例如 obdemo
  4. 添加 Zone,分别为 zone1zone2zone3
  5. 为每个 Zone 添加 OBServer 节点,分别对应三台虚拟机的 IP 地址:
    • 192.168.10.120 对应 zone1
    • 192.168.10.121 对应 zone2
    • 192.168.10.122 对应 zone3

5. 配置 OBProxy

  1. 在 OBD Web 界面中,选择“组件管理” → “OBProxy”。
  2. 添加 OBProxy 节点,可以选择在任意一台虚拟机上部署 OBProxy,例如 192.168.10.120
  3. 配置 OBProxy 的监听端口,例如 2881

6. 部署集群

  1. 在 OBD Web 界面中,选择“集群管理” → “部署集群”。
  2. 选择您刚才创建的集群 obdemo,点击“部署”按钮。
  3. 等待部署完成,部署过程中可以查看日志以确保没有错误。

7. 验证集群

  1. 使用 obclient 连接到集群,验证集群是否正常运行:
    obclient -h192.168.10.120 -P2881 -uroot@sys#obdemo -p<password>
    
  2. 查询 DBA_OB_SERVERS 视图,确认所有节点均已加入集群:
    SELECT * FROM oceanbase.DBA_OB_SERVERS;
    

以上步骤基于 OBD 的 Web 界面完成了 OceanBase 数据库的白屏化部署。如果您在部署过程中遇到任何问题,可以参考 OBD 的官方文档或联系 OceanBase 的技术支持团队。 [3], [4]

检索到的文档如下:

  1. 单机在线转分布式部署
  2. 添加节点
  3. 使用命令行部署 OceanBase 数据库生产环境
  4. 部署 OceanBase 集群
  5. 升级 OceanBase 集群
1 个赞

你所遇到的问题描述一下,提供一下配置参数
memory_limit
system_memory
各个租户的内存大小

1 个赞

OBD-2000:x.x.x.x not en


ough memory

你系统内存多少,memory_limit总大小>system_memory+所有租户内存

三台虚拟机,每台虚拟机的配置都是8G内存,50G硬盘

根据您提供的信息,OBD 在检查节点时报告了内存不足的问题。具体错误信息如下:

  • OBD-2000: (192.168.10.121) not enough memory. (Free:...)
  • OBD-1007: (192.168.10.121) The value of the ulimit parameter...
  • OBD-1007: (192.168.10.122) The value of the ulimit parameter...

问题分析

  1. 内存不足:OBD 报告 192.168.10.121 节点内存不足。根据您的配置,每台虚拟机的内存为 8GB,这可能不足以满足 OceanBase 的默认内存需求。
  2. ulimit 参数设置不当:OBD 报告 192.168.10.121 和 192.168.10.122 节点的 ulimit 参数设置不当。

解决方案

1. 调整内存配置

您可以减少 memory_limitsystem_memory 的值,以适应 8GB 的内存限制。具体步骤如下:

  1. 进入 OBD Web 界面

    • 打开浏览器,访问 http://192.168.10.120:8080
  2. 编辑集群参数

    • 选择“集群管理” → “编辑集群”。
    • 找到 memory_limitsystem_memory 参数,将其值调整为适合 8GB 内存的值。例如:
      • memory_limit 设置为 4G
      • system_memory 设置为 2G
  3. 保存并重新部署

    • 保存修改后的参数。
    • 重新部署集群,确保所有节点都能通过检查。

2. 调整 ulimit 参数

  1. 编辑 /etc/security/limits.conf 文件

    • 在每台虚拟机上执行以下命令,编辑 limits.conf 文件:
      sudo vi /etc/security/limits.conf
      
  2. 添加以下内容

    * soft nofile 65535
    * hard nofile 65535
    * soft nproc 65535
    * hard nproc 65535
    
  3. 编辑 /etc/sysctl.conf 文件

    • 在每台虚拟机上执行以下命令,编辑 sysctl.conf 文件:
      sudo vi /etc/sysctl.conf
      
  4. 添加以下内容

    fs.file-max = 65535
    
  5. 应用更改

    • 执行以下命令使更改生效:
      sudo sysctl -p
      
  6. 重启虚拟机

    • 为了确保所有更改生效,建议重启每台虚拟机:
      sudo reboot
      

验证

  1. 重新运行 OBD 检查

    • 在 OBD Web 界面中,重新运行检查步骤,确保所有节点都能通过检查。
  2. 部署集群

    • 如果所有检查都通过,继续部署集群。

参考文档

希望以上步骤能帮助您解决内存不足和 ulimit 参数设置不当的问题。如果仍有问题,请联系 OceanBase 的技术支持团队。

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)

1 个赞

那你最多给7G的memory_limit
system_memory=1G
每个租户给2G试试吧

还是不行,三台虚拟机都报内存不足,OBD-2000: (192.168.10.121) not enough memory. (Free: 5G, Buff/Cache: 699M, Need: 7G)

把虚拟机的内存改成12G解决了

OceanBase DataBase最后部署失败



提供一份你的yaml文件看看

用户同问题新帖