【OceanBase】社区版三节点多副本容灾部署方案

目录

[1. OceanBase All in One](#1. OceanBase All in One)

[2. OceanBase 安装](#2. OceanBase 安装)

解压

安装

验证

[3. OceanBase 配置](#3. OceanBase 配置)

防火墙

时钟

检查软件是否安装

安装软件

编辑配置

[停用 ntp 启用 chrony](#停用 ntp 启用 chrony)

验证

用户

检查是否存在密钥

若不存在生成密钥

传输密钥到其他机器

配置文件

参考

创建

[4. OceanBase 部署](#4. OceanBase 部署)

部署

启动

查看

修改

[5. OceanBase 连接](#5. OceanBase 连接)

obclient

mysql


1. OceanBase All in One

https://www.oceanbase.com/softwarecenter

2. OceanBase 安装

上传至一台主服务器

解压
bash 复制代码
tar -xvzf oceanbase-all-in-one-4.3.5_bp6_20260410.el7.x86_64.tar.gz
安装
bash 复制代码
cd /opt/oceanbase/bin/
bash 复制代码
./install.sh
验证
bash 复制代码
obd --version

3. OceanBase 配置

防火墙

主机器

bash 复制代码
# 开放端口,可选
firewall-cmd --permanent --add-service=ntp # 时钟同步
firewall-cmd --permanent --add-port=2881/tcp # oceanbase 访问
firewall-cmd --permanent --add-port=8680/tcp # 白屏(图形化)部署 Web

# 开放端口,必须
firewall-cmd --permanent --add-port=2882/tcp # oceanbase 节点通信
firewall-cmd --permanent --add-port=2883/tcp # oceanbase 代理访问
firewall-cmd --permanent --add-port=2885/tcp # oceanbase 代理节点通信

# 重载防火墙
firewall-cmd --reload

# 验证
firewall-cmd --list-ports

其他机器

bash 复制代码
# 开放端口,必须
firewall-cmd --permanent --add-port=2882/tcp # oceanbase 节点通信
firewall-cmd --permanent --add-port=2883/tcp # oceanbase 代理访问
firewall-cmd --permanent --add-port=2885/tcp # oceanbase 代理节点通信

# 重载防火墙
firewall-cmd --reload

# 验证
firewall-cmd --list-ports

时钟

检查软件是否安装
bash 复制代码
rpm -q ntp
rpm -q chrony
安装软件
bash 复制代码
yum install -y ntp
yum install -y chrony
编辑配置
bash 复制代码
vim /etc/chrony.conf

主机器

bash 复制代码
# 使用本机系统时间为源(stratum 10 表示层级较低,避免被误认为权威源)
local stratum 10

# 允许 192.169.0.0/16 网段的客户端同步时间
allow 192.169.0.0/16

# 可选:记录漂移
driftfile /var/lib/chrony/drift

其他机器

bash 复制代码
server 192.169.7.230 iburst
driftfile /var/lib/chrony/drift
停用 ntp 启用 chrony
bash 复制代码
systemctl stop ntpd
systemctl enable --now chronyd
验证
bash 复制代码
chronyc sources -v

主机器

其他机器

用户

主机器

检查是否存在密钥
bash 复制代码
ls ~/.ssh/id_rsa.pub
若不存在生成密钥
bash 复制代码
ssh-keygen -t rsa
传输密钥到其他机器
bash 复制代码
ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<server_ip>

配置文件

参考

https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002013496#5-title-%E6%AD%A5%E9%AA%A4%E4%BA%8C%EF%BC%9A%E9%85%8D%E7%BD%AE%20obd

创建
bash 复制代码
mkdir /data/ob
cd /data/ob
bash 复制代码
vim deploy.yaml
bash 复制代码
## 仅在需要远程登录时才需配置
user:
  username: root
  # key_file: 如果需要,请填写你的 SSH 密钥文件路径
  # port: 你的 SSH 端口,默认为 22
  # timeout: SSH 连接超时时间(秒),默认为 30

oceanbase-ce:
  servers:
    - name: server1
      # 请不要使用主机名,仅支持 IP 地址
      ip: 192.169.7.230
    - name: server2
      ip: 192.169.7.234
    - name: server3
      ip: 192.169.7.238
  global:
    # 从 observer 4.2 版本开始,observer 的网络选择基于 'local_ip' 参数,'devname' 参数不再是必需项。
    # 如果设置了 'local_ip' 参数,observer 将优先使用该参数进行配置,无论是否设置了 'devname'。
    # 如果仅设置了 'devname' 参数,则 observer 将使用 'devname' 进行配置。
    # 如果 'devname' 和 'local_ip' 均未设置,则 'local_ip' 将自动分配为上方配置的 IP 地址。
    # devname: eth0
    # 如果当前硬件内存容量小于 50G,请使用 "mini-single-example.yaml" 的配置并做小幅调整。
    cpu_count: 8
    memory_limit: 12G # observer 可使用的最大运行内存
    # 系统预留内存。system_memory 为普通租户预留,默认值为 30G。
    system_memory: 5G
    datafile_size: 28G # 数据文件大小。
    log_disk_size: 28G # clog 文件所占用的磁盘空间大小。
    datafile_next: 42G
    datafile_maxsize: 400G
    enable_syslog_wf: false # 是否将级别高于 WARNING 的系统日志输出到单独的日志文件中。默认值为 true。
    max_syslog_file_count: 16 # 启用自动回收前保留的日志文件最大数量。默认值为 0。
    # observer 集群名称,需与 obproxy 的 cluster_name 一致
    appname: obcluster
    root_password: 123456 # root 用户密码,可为空
    proxyro_password: 123456 # proxyro 用户密码,需与 obproxy 的 observer_sys_password 一致,可为空
    # 在此示例中,支持单节点部署多个 OB 进程,因此不同进程使用不同的端口。
    # 如果在多节点部署 OB 集群,端口和路径设置可以相同。
    # OceanBase 数据库的工作目录。OceanBase 在此目录下启动。此项为必填项。
    home_path: /data/ob/observer
    # 数据存储目录。默认值为 $home_path/store。
    # data_dir: /data
    # clog、ilog 和 slog 的存储目录。默认值与 data_dir 相同。
    # redo_dir: /redo
    data_dir: /data/ob/observer/data
    clog_dir: /data/ob/observer/clog
    ilog_dir: /data/ob/observer/ilog
    slog_dir: /data/ob/observer/slog
  server1:
    mysql_port: 2881 # OceanBase 数据库对外服务端口。默认值为 2881。集群启动后请勿修改。
    rpc_port: 2882 # OceanBase 数据库内部通信端口。默认值为 2882。集群启动后请勿修改。
    obshell_port: 2886 # OceanBase 数据库运维端口。默认值为 2886。仅在 oceanbase-ce 版本为 4.2.2.0 或更高时有效。
    zone: zone1
  server2:
    mysql_port: 2881 # OceanBase 数据库对外服务端口。默认值为 2881。集群启动后请勿修改。
    rpc_port: 2882 # OceanBase 数据库内部通信端口。默认值为 2882。集群启动后请勿修改。
    obshell_port: 2886 # OceanBase 数据库运维端口。默认值为 2886。仅在 oceanbase-ce 版本为 4.2.2.0 或更高时有效。
    zone: zone2
  server3:
    mysql_port: 2881 # OceanBase 数据库对外服务端口。默认值为 2881。集群启动后请勿修改。
    rpc_port: 2882 # OceanBase 数据库内部通信端口。默认值为 2882。集群启动后请勿修改。
    obshell_port: 2886 # OceanBase 数据库运维端口。默认值为 2886。仅在 oceanbase-ce 版本为 4.2.2.0 或更高时有效。
    zone: zone3
obproxy-ce:
  # 为该组件设置依赖组件。
  # 当相关配置未完成时,OBD 会自动从依赖组件中获取这些配置。
  depends:
    - oceanbase-ce
  servers:
    - name: proxy1
      # 请不要使用主机名,仅支持 IP 地址
      ip: 192.169.7.230
    - name: proxy1
      ip: 192.169.7.234
    - name: proxy1
      ip: 192.169.7.238
  global:
    listen_port: 2883 # 对外服务端口。默认值为 2883。
    prometheus_listen_port: 2884 # Prometheus 监听端口。默认值为 2884。
    home_path: /data/ob/obproxy
    # OceanBase 根服务器列表
    # 格式:ip:mysql_port;ip:mysql_port。当存在 depends 时,OBD 会从 oceanbase-ce 中自动获取该值。
    # rs_list: 192.168.1.2:2881;192.168.1.3:2881;192.168.1.4:2881
    enable_cluster_checkout: false
    # observer 集群名称,需与 oceanbase-ce 的 appname 一致。当存在 depends 时,OBD 会从 oceanbase-ce 中自动获取该值。
    # cluster_name: obcluster
    skip_proxy_sys_private_check: true
    enable_strict_kernel_release: false
    obproxy_sys_password: 123456 # obproxy sys 用户密码,可为空。当存在 depends 时,OBD 会从 oceanbase-ce 中自动获取该值。
    observer_sys_password: 123456 # proxyro 用户密码,需与 oceanbase-ce 的 proxyro_password 一致,可为空。当存在 depends 时,OBD 会从 oceanbase-ce 中自动获取该值。

4. OceanBase 部署

部署

bash 复制代码
obd cluster deploy -f ob -c deploy.yaml

启动

bash 复制代码
obd cluster start ob # -v 详细信息

查看

查看 obd 管理的集群列表

bash 复制代码
obd cluster list

查看 obtest 集群状态

bash 复制代码
obd cluster display ob

修改

bash 复制代码
obd cluster edit-config ob

修改保存后,会有展示配置刷新方法,需要依照着执行,例如:

5. OceanBase 租户

特性 系统租户 用户租户
创建方式 集群自动创建 用户手动创建
功能定位 集群/租户管理 业务数据存储
扩展能力 ❌ 仅单点写入 ✅ 水平扩展
备份恢复 ❌ 不支持物理备份 ✅ 支持
是否用于业务 ❌ 不推荐 ✅ 推荐
高可用性 逻辑单点(有风险) 多副本强一致
创建租户
bash 复制代码
obd cluster tenant create <deploy name> [-n <tenant name>] [flags]

例如:

bash 复制代码
obd cluster tenant create ob --password=123456

默认租户名 <tenant name> 为 test

6. OceanBase 连接

obclient
html 复制代码
obclient -h<IP> -P<PORT> -u<user_name>@<tenant_name>#<cluster_name> -p -c -A

例如:

html 复制代码
obclient -h192.169.7.230 -P2883 -uroot@sys#ob -p123456 -c -A
html 复制代码
obclient -h192.169.7.230 -P2883 -uroot@test#ob -p123456
mysql
html 复制代码
mysql -h192.169.7.230 -P2883 -uroot -p123456
相关推荐
OceanBase数据库官方博客1 小时前
OceanBase seekdb-cli:专为 AI Agent 设计的数据库接口
数据库·人工智能·oceanbase
雅俗数据库4 天前
OCP实验 | 02-全链路诊断
oceanbase
雅俗数据库4 天前
OCP实验 | 05-运维管理
oceanbase
落日流年4 天前
欧拉操作系统部署OceanBase集群
运维·oceanbase
devilnumber4 天前
OceanBase 引擎 vs InnoDB 引擎 优缺点完整版对比
oceanbase
秋913 天前
OceanBase 全链路实战:从国产化选型到生产级部署(2026 终极指南)
oceanbase
GottdesKrieges13 天前
OceanBase恢复常见问题
java·数据库·oceanbase
GottdesKrieges13 天前
OceanBase备份常见问题
linux·网络·oceanbase
秋917 天前
OceanBase与GreatSQL哪个更适合高并发场景?
oceanbase