数据库教程FGMT78:国产数据库-OceanBase数据库工程师培训实战教程(阿里/淘宝/天猫/蚂蚁/支付宝金融级分布式数据库

举报
风哥数据库教程 发表于 2026/11/10 14:42:48 2026/11/10
【摘要】 数据库教程FGMT78:国产数据库-OceanBase数据库工程师培训实战教程(阿里/淘宝/天猫/蚂蚁/支付宝金融级分布式数据库) 一、前言与本套风哥教程大纲介绍风哥教程本文面向数据库爱好者、在职 DBA 与求职工程师,目标是把 OceanBase 社区版 V4.35 从"认识、安装、运维、开发、备份恢复、扩缩容、高可用、故障处理"完整走一遍。本套风哥教程以银河麒麟 Kylin-Server...

数据库教程FGMT78:国产数据库-OceanBase数据库工程师培训实战教程(阿里/淘宝/天猫/蚂蚁/支付宝金融级分布式数据库)

一、前言与本套风哥教程大纲介绍

风哥教程本文面向数据库爱好者、在职 DBA 与求职工程师,目标是把 OceanBase 社区版 V4.35 从"认识、安装、运维、开发、备份恢复、扩缩容、高可用、故障处理"完整走一遍。本套风哥教程以银河麒麟 Kylin-Server-V10-SP3-2403-Release 为操作系统底座,以两台物理/虚拟机 fgedu-net-cn1、fgedu-net-cn2(单机规格 64G 内存、8CPU)为实验主机,所有命令均可在实验环境原样复现。

OceanBase 是完全自主研发的原生分布式数据库,最早在阿里、淘宝、天猫、蚂蚁、支付宝的核心交易与账务体系中落地,用普通 PC 服务器实现了金融级高可用。本套风哥教程不做产品宣传,只讲工程师必须掌握的原理与可执行操作:先讲清分布式架构与核心概念,再用大量步骤与命令完成部署、租户、对象、备份、扩缩容与故障处理。

风哥教程本文大纲如下:

  • 第一部分 理论:数据库发展演进、OceanBase 简介与版本、原生分布式架构、多副本与 Paxos、多租户模型、核心概念、部署体系与硬件系统要求。
  • 第二部分 实战:实验环境准备、OBD 单机部署、OBD 集群部署、OCP 安装与接管、登录与配置项管理、Zone 与节点管理、租户与资源单元/资源池管理、对象管理(库表、分区表、表组、索引、视图、物化视图、序列、触发器)、备份恢复、扩容缩容、高可用与故障处理。
  • 第三部分 风哥针对本文总结。

风哥 itpux-com


二、理论部分

2.1 数据库发展演进与分布式数据库的由来

传统关系型数据库(如集中式 Oracle、MySQL 主从)在业务量增长时面临两个天花板:一是纵向扩容(换更大的机器)成本高、上限明显;二是单点故障与主从切换带来的可用性风险。互联网业务的特点是高并发、大数据量、要求 7×24 不停机,集中式架构逐渐力不从心。

第一代分布式方案多为"分库分表 + 中间件",把数据切碎到多个 MySQL 实例,由中间件路由。它的问题是:跨分片事务弱、全局一致性难保证、扩容要重新分片、运维复杂。第二代是 NewSQL 尝试在分布式环境下保留 SQL 与事务能力。OceanBase 属于第三代原生分布式数据库:数据天然按分区分布在多台普通服务器上,内置一致性协议,不需要应用层分片,同时兼容 MySQL/Oracle 语法,支持 HTAP 混合负载(同一套系统同时跑 OLTP 交易与 OLAP 分析)。

理解演进路线是为了明白一个判断:OceanBase 不是"把 MySQL 堆起来",而是从存储、事务、一致性层面原生设计的分布式系统,这决定了它的部署、运维、故障处理思路都与单机数据库不同。

2.2 OceanBase 简介、特点与版本区别

OceanBase 的核心特点可归纳为:

  1. 原生分布式:数据以分区(Partition)为单位分布在集群多节点,单集群可水平扩展到数百节点,扩容在线完成、对应用透明。
  2. 金融级高可用:基于 Paxos 多数派协议,同一份数据写多副本,少数派副本故障不丢数据(RPO=0),Leader 故障后自动选主,RTO 通常在 8 秒以内。
  3. 多租户:一个物理集群内可划分多个逻辑租户,租户之间 CPU、内存、IO 隔离,应用看到的就是一个独立数据库。
  4. 单机分布式一体化:同一套二进制既可以单机部署做测试/边缘,也可以集群部署做生产,架构平滑升级。
  5. HTAP:支持行列混合存储,交易与分析负载可在同一集群共存。
  6. 高兼容:MySQL 模式高度兼容 MySQL 语法,Oracle 模式兼容大量 Oracle 语法,迁移成本低。

版本上分社区版与企业版。社区版免费开源,覆盖核心分布式能力,适合学习、中小业务与私有化试点;企业版由官方提供商业支持,附带企业级特性、OCP 商业管控、高级备份与认证服务。本套风哥教程使用社区版 V4.35,实验结论与企业版在核心概念上一致。

上51CTO搜索风哥可以学习全套数据库教程

2.3 系统架构:原生分布式、多副本与 Paxos

OceanBase 集群由三类关键角色组成:

  • OBServer(observer 进程):真正承载数据与计算的节点,部署在一台物理/虚拟机上,一个节点就是一个进程。
  • Zone(可用区):逻辑故障域,通常对应一个机房、一个机架或一组供电网络。副本要分散在不同 Zone,保证一个 Zone 整体故障时多数派仍在。
  • 租户(Tenant):逻辑数据库,内部再分 SYS 系统租户与普通业务租户。

数据在集群内以"表—分区—副本"三层组织。一张表按主键或分区规则切成若干分区,每个分区在不同 Zone 各存一个副本,形成一主多从:Leader 副本负责读写,Follower 副本只同步日志。写操作先由 Leader 提交,通过 Paxos 把日志复制到多数派(三副本需 2 票、五副本需 3 票)后才算成功,因此只要多数派存活,数据不丢、服务不停。

Paxos 的工程意义在于:它把"一致性"下沉到数据库内核,应用不需要关心主从切换,也不需要自己实现分布式事务。当某个节点宕机,该节点上的 Leader 副本会在其余存活副本中重新选举,业务连接短暂重连即可,这就是 RTO 秒级、RPO=0 的来源。

2.4 多租户模型与资源单元、资源池

OceanBase 的资源管理是"三层绑定":

  • 资源单元(Resource Unit):对单个副本可占用资源的规格定义,声明 MIN/MAX CPU、MIN/MAX MEMORY、IOPS、磁盘等上下限。CPU 可超分,内存是硬资源,必须严格预留。
  • 资源池(Resource Pool):把若干个相同规格的 Unit 按 Unit_NUM 数量铺到各 Zone,是资源的集合。
  • 租户(Tenant):绑定一个或多个资源池,拿到的就是可用的计算与存储。

一个 Unit 对应一个分区副本的资源配额。三副本集群里,一个租户要在三个 Zone 各放一个 Unit,才具备三副本高可用。调整租户容量,本质是改 Unit 规格或改 Unit_NUM,再由集群自动做副本迁移与负载均衡(Rebalance)。

风哥教程 113257174

2.5 核心概念速查

  • 集群(Cluster):一组 OBServer 组成的整体,有唯一集群名。
  • OBProxy:代理层,接收应用连接并按路由把请求转发到对应租户的 Leader,应用只连代理。
  • SYS 租户:系统租户,管理集群、节点、配置、资源,root@sys 是最高管理员。
  • 普通租户:业务租户,如本套风哥教程的 fgedudb。
  • 表组(Table Group):把经常关联查询的多张表的分区放到同一节点,减少分布式 JOIN 的网络开销。
  • 主 Zone(Primary Zone):指定 Leader 优先放置的 Zone。
  • 日志流(Log Stream):每个分区副本的redo 日志,Paxos 复制的对象。

2.6 部署体系与硬件、操作系统要求

OceanBase 社区版主要有两条部署路径:

  1. OBD(ob-deploy)命令行部署:通过 YAML 配置文件描述集群,一条命令完成安装、初始化、启动,适合实验与生产脚本化。
  2. OCP(OceanBase Cloud Platform):Web 管控平台,支持可视化集群创建、接管、监控、扩缩容、备份,适合生产长期运维。

此外还有 systemd 单机部署、单点一体化快速部署等方式,用于快速验证。

硬件与系统要求(本套风哥教程统一按 64G 内存、8CPU 规格):

  • CPU:实验最低 4 核,生产建议 8 核起步;本套风哥教程节点为 8CPU。
  • 内存:单节点建议 16G 起步,本套风哥教程节点 64G;其中 system_memory 预留给系统,其余给业务。
  • 磁盘:SSD/NVMe 优先,数据盘与日志盘建议分离,预留充足 datafile 与 log_disk 空间。
  • 网络:节点间万兆内网,时间必须同步(chrony/NTP),关闭或规范防火墙,主机名可解析。
  • 操作系统:银河麒麟 Kylin-Server-V10-SP3、欧拉 openEuler、RHEL/CentOS 7.x/8.x 均可;本套风哥教程主用麒麟,另附欧拉快速部署说明。
  • 内核参数:关闭透明大页、调整 ulimit、调整 vm 参数,具体在实战环境准备中给出。

风哥数据库教程 itpux-com


三、实战操作部分

实战一:实验环境准备(fgedu-net-cn1、fgedu-net-cn2,64G/8CPU)

本套风哥教程使用两台节点:fgedu-net-cn1(192.168.1.11)、fgedu-net-cn2(192.168.1.12),均为 64G 内存、8CPU,操作系统银河麒麟 Kylin-Server-V10-SP3。以下命令在两台节点分别执行,差异处单独标注。

步骤 1:设置主机名与 hosts 解析。

fgedu-net-cn1:

hostnamectl set-hostname fgedu-net-cn1

fgedu-net-cn2:

hostnamectl set-hostname fgedu-net-cn2

两台节点编辑 /etc/hosts,保证互相解析:

cat >> /etc/hosts <<EOF
192.168.1.11  fgedu-net-cn1
192.168.1.12  fgedu-net-cn2
EOF

步骤 2:关闭防火墙与 SELinux(实验环境;生产按安全规范放通端口)。

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

步骤 3:时间同步。

yum install -y chrony
systemctl enable --now chronyd
chronyc sources

步骤 4:资源限制与内核参数。

cat >> /etc/security/limits.conf <<EOF
* soft nofile 655350
* hard nofile 655350
* soft nproc 655350
* hard nproc 655350
EOF

关闭透明大页并调优内存回收:

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
cat >> /etc/sysctl.conf <<EOF
vm.swappiness = 0
vm.min_free_kbytes = 2097152
net.core.somaxconn = 2048
EOF
sysctl -p

步骤 5:创建统一目录 /fgedudb(替换传统 /u01 路径)。

mkdir -p /fgedudb/observer /fgedudb/log /fgedudb/backup /fgedudb/nfs
useradd -u 1001 obuser 2>/dev/null || true
chown -R obuser:obuser /fgedudb

步骤 6:安装依赖包。

yum install -y net-tools lsof tar wget curl python3 \
    gcc gcc-c++ make cmake perl rsync

风哥 itpux-com

实战二:OBD 单机部署测试环境

OBD(ob-deploy)是社区版官方命令行部署工具,先在单机上跑通,再扩展到集群。

步骤 1:安装 OBD。

rpm -ivh ob-deploy-*.rpm
obd --version

步骤 2:生成单机配置模板。

obd cluster deploy fgedudb -o /fgedudb/obd_single.yaml

编辑 /fgedudb/obd_single.yaml,单机规格按 64G/8CPU:

oceanbase-ce:
  servers:
    - name: fgedu-net-cn1
      ip: 192.168.1.11
  global:
    home_path: /fgedudb/observer
    data_dir: /fgedudb/observer/store
    log_dir: /fgedudb/log
    memory_limit: 48G
    system_memory: 12G
    cpu_count: 8
    datafile_size: 100G
    log_disk_size: 100G
    mysql_port: 2881
    rpc_port: 2882
    devname: eth0
obproxy-ce:
  servers:
    - name: fgedu-net-cn1
      ip: 192.168.1.11
  global:
    listen_port: 2883

步骤 3:部署并启动。

obd cluster deploy fgedudb -c /fgedudb/obd_single.yaml
obd cluster start fgedudb
obd cluster display fgedudb

步骤 4:用 obclient 连接 SYS 租户。

obclient -h127.0.0.1 -P2881 -uroot@sys -p -A

进入后查看集群:

SELECT name, value FROM oceanbase.DBA_OB_SERVERS;
s-hOW PARAMETERS LIKE 'memory_limit';

单机适合功能验证,生产使用集群。

实战三:OBD 集群部署生产环境

生产采用三 Zone 三副本。本套风哥教程以 fgedu-net-cn1、fgedu-net-cn2 两台主机演示,第三节点可按同样模板追加;单台主机也可用不同端口模拟多节点,命令结构一致。

步骤 1:编写集群配置 /fgedudb/obd_cluster.yaml,每节点 64G/8CPU。

oceanbase-ce:
  servers:
    - name: fgedu-net-cn1
      ip: 192.168.1.11
      zone: zone1
    - name: fgedu-net-cn2
      ip: 192.168.1.12
      zone: zone2
  global:
    home_path: /fgedudb/observer
    data_dir: /fgedudb/observer/store
    log_dir: /fgedudb/log
    memory_limit: 48G
    system_memory: 12G
    cpu_count: 8
    datafile_size: 100G
    log_disk_size: 100G
    mysql_port: 2881
    rpc_port: 2882
    devname: eth0
    cluster_name: fgedudb_cluster
obproxy-ce:
  servers:
    - name: fgedu-net-cn1
      ip: 192.168.1.11
    - name: fgedu-net-cn2
      ip: 192.168.1.12
  global:
    listen_port: 2883

步骤 2:部署、启动并查看。

obd cluster deploy fgedudb_cluster -c /fgedudb/obd_cluster.yaml
obd cluster start fgedudb_cluster
obd cluster display fgedudb_cluster

obd cluster display 中每个 observer 状态应为 active,zone 为 ONLINE。

步骤 3:通过 OBProxy 连接。

obclient -h192.168.1.11 -P2883 -uroot@sys#fgedudb_cluster -p -A

步骤 4:校验三副本与 Leader 分布。

SELECT zone, svr_ip, status FROM oceanbase.DBA_OB_SERVERS;
SELECT tenant_id, zone, svr_ip, role FROM oceanbase.DBA_OB_LOG_REPLICA_STAT;

实战四:OCP 安装与接管集群

OCP 提供 Web 管控。生产可先由 OBD 建集群,再用 OCP 接管。

步骤 1:准备 OCP 元数据库(可用已有 MySQL 或内置)。

mkdir -p /fgedudb/ocp

步骤 2:用 OCP 安装包一键部署。

cd /fgedudb/ocp
./ocp_s-hturl.cc/Jw install -c /fgedudb/ocp/ocp.yaml

ocp.yaml 中填写 OCP 节点地址、元库连接、管理员密码。安装完成后浏览器访问 [http://192.168.1.11:8080](http://192.168.1.11:8080)。

步骤 3:在 OCP 中接管已有集群。 进入"集群管理 → 接管集群",填入 SYS 租户 root 密码与 OBServer 地址,确认后 OCP 即可展示节点、租户、监控与备份入口。OCP 也支持"集群快速部署":选版本、填主机、填资源规格,平台自动生成配置并下发,适合标准化新建。

网上搜索风哥教程可以学习全套数据库教程

实战五:登录管理与配置项管理

SYS 租户与业务租户的连接串格式:

# SYS 管理员
obclient -h192.168.1.11 -P2883 -uroot@sys#fgedudb_cluster -p -A
# 业务租户 fgedudb,用户 fgedu
obclient -h192.168.1.11 -P2883 -ufgedu@fgedudb#fgedudb_cluster -p -A

查看与修改配置项(参数)。 只读查看:

s-hOW PARAMETERS LIKE 'memory_limit';
SELECT name, value, section FROM oceanbase.GV$OB_PARAMETERS WHERE name='cpu_count';

动态修改某参数(SYS 租户执行):

ALTER SYSTEM SET memory_limit='48G' SERVER='192.168.1.11:2882';
ALTER SYSTEM SET cpu_count=8 SERVER='192.168.1.12:2882';

查看参数是否动态生效、是否需要重启:

SELECT name, value, need_reboot FROM oceanbase.GV$OB_PARAMETERS WHERE name='datafile_size';

实战六:Zone 与节点管理

查看节点:

SELECT zone, svr_ip, version, status FROM oceanbase.DBA_OB_SERVERS;

向集群新增一个 OBServer(扩容前置动作):

ALTER SYSTEM ADD SERVER '192.168.1.13:2882' ZONE 'zone3';

下线节点(缩容前置动作,先驱逐副本):

ALTER SYSTEM DELETE SERVER '192.168.1.13:2882';

查询节点下线进度与副本迁移:

SELECT svr_ip, status FROM oceanbase.DBA_OB_SERVERS;
SELECT * FROM oceanbase.DBA_OB_UNITS ORDER BY zone;

Zone 管理上,新增 Zone 用 ALTER SYSTEM ADD ZONE zone3,删除前需保证该 Zone 无副本。

实战七:租户、资源单元与资源池管理

步骤 1:创建资源单元(64G/8CPU 集群内,给业务单元配 2C/8G)。

CREATE RESOURCE UNIT unit_fgedu
  MAX_CPU 2, MIN_CPU 2,
  MEMORY_SIZE '8G',
  MAX_IOPS 10000, MIN_IOPS 10000,
  LOG_DISK_SIZE '2G';

步骤 2:创建资源池,三 Zone 各一个 Unit。

CREATE RESOURCE POOL pool_fgedu
  UNIT = 'unit_fgedu',
  UNIT_NUM = 1,
  ZONE_LIST = ('zone1', 'zone2', 'zone3');

步骤 3:创建业务租户 fgedudb(命令行)。

CREATE TENANT IF NOT EXISTS fgedudb
  RESOURCE_POOL_LIST = ('pool_fgedu'),
  PRIMARY_ZONE = 'zone1',
  SET log_mode = 'ARCHIVE',
  charset = 'utf8mb4',
  collation = 'utf8mb4_general_ci';

步骤 4:为租户创建业务用户 fgedu 并授权。

SET ob_tenant_id = (SELECT tenant_id FROM oceanbase.DBA_OB_TENANTS WHERE tenant_name='fgedudb');

切到租户后:

obclient -h192.168.1.11 -P2883 -uroot@fgedudb#fgedudb_cluster -p -A
CREATE USER fgedu IDENTIFIED BY 'Fgedu@2026';
GRANT ALL PRIVILEGES ON *.* TO 'fgedu';

OCP 方式创建租户:进入"租户管理 → 新建租户",选资源规格(等价于 Unit)、填 Unit_NUM、选 Zone、设置租户名 fgedudb 与管理员密码,平台自动生成建租户语句。

调整租户容量:

ALTER RESOURCE UNIT unit_fgedu MAX_CPU 4, MEMORY_SIZE '16G';
ALTER RESOURCE POOL pool_fgedu UNIT_NUM = 2;

风哥教程 113257174

实战八:对象管理

以下在 fgedudb 租户内、用户 fgedu 下执行。

1)创建数据库。

CREATE DATABASE fgedudb DEFAULT CHARACTER SET utf8mb4;
USE fgedudb;

2)创建普通表。

CREATE TABLE t_order (
  order_id    BIGINT NOT NULL,
  buyer       VARCHAR(64) NOT NULL,
  amount      DECIMAL(18,2) NOT NULL DEFAULT 0,
  create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (order_id)
) TABLEGROUP tg_fgedu;

3)分区表(哈希分区,8 个分区)。

CREATE TABLE t_order_part (
  order_id BIGINT NOT NULL,
  buyer VARCHAR(64),
  amount DECIMAL(18,2),
  create_time DATETIME,
  PRIMARY KEY (order_id)
) PARTITION BY HAs-h(order_id) PARTITIONS 8;

范围分区示例:

CREATE TABLE t_log (
  log_id BIGINT NOT NULL,
  log_time DATETIME NOT NULL,
  content VARCHAR(2000)
) PARTITION BY RANGE(TO_DAYS(log_time)) (
  PARTITION p202601 VALUES LESS THAN (TO_DAYS('2026-02-01')),
  PARTITION p202602 VALUES LESS THAN (TO_DAYS('2026-03-01')),
  PARTITION pmax   VALUES LESS THAN (MAXVALUE)
);

4)表组(Table Group)。 把强关联表放进同一表组,分区共置,JOIN 不下发网络:

CREATE TABLEGROUP tg_fgedu LOCALITY='FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3';

5)索引。

CREATE INDEX idx_order_buyer ON t_order(buyer);
-- 全局索引(跨分区)
CREATE UNIQUE INDEX uk_order_buyer ON t_order_part(buyer) GLOBAL;

查看执行计划判断是否走索引:

EXPLAIN SELECT * FROM t_order WHERE buyer='zhangsan';

6)普通视图。

CREATE VIEW v_order_summary AS
SELECT buyer, SUM(amount) total, COUNT(*) cnt
FROM t_order GROUP BY buyer;
SELECT * FROM v_order_summary;

7)物化视图(定时刷新,存计算结果)。

CREATE MATERIALIZED VIEW mv_order_daily
REFREs-h COMPLETE START WITH CURRENT_TIMESTAMP NEXT CURRENT_TIMESTAMP + INTERVAL 1 DAY
AS SELECT DATE(create_time) d, SUM(amount) amt FROM t_order GROUP BY DATE(create_time);

手动刷新:

REFREs-h MATERIALIZED VIEW mv_order_daily;

8)系统视图查询。

SELECT table_name, table_type FROM oceanbase.DBA_TABLES WHERE owner='fgedu';
s-hOW TABLES;

9)序列 SEQUENCE。

CREATE SEQUENCE seq_fgedu START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
SELECT seq_fgedu.NEXTVAL FROM DUAL;

10)触发器 TRIGGER。

CREATE TRIGGER trg_order_audit
AFTER INSERT ON t_order
FOR EACH ROW
INSERT INTO t_audit(order_id, buyer, action)
VALUES (NEW.order_id, NEW.buyer, 'INSERT');

实战九:备份恢复

步骤 1:部署 NFS 作为备份介质。 fgedu-net-cn1 上:

mkdir -p /fgedudb/nfs/backup
chown -R nobody:nobody /fgedudb/nfs/backup
echo "/fgedudb/nfs/backup *(rw,sync,no_root_squas-h)" >> /etc/exports
exportfs -a
systemctl enable --now nfs-server

fgedu-net-cn2 挂载测试:

mount -t nfs 192.168.1.11:/fgedudb/nfs/backup /fgedudb/nfs

步骤 2:配置备份路径并打开日志归档(SYS 租户)。

ALTER SYSTEM SET backup_dest='file:///fgedudb/nfs/backup';
ALTER SYSTEM ARCHIVELOG;

查看归档状态:

SELECT * FROM oceanbase.DBA_OB_TENANTS WHERE tenant_name='fgedudb';

步骤 3:发起全量备份。

ALTER SYSTEM BACKUP DATABASE TENANT = fgedudb;

查看备份任务:

SELECT * FROM oceanbase.DBA_OB_BACKUP_JOB_HISTORY ORDER BY start_time DESC;

步骤 4:日志归档(增量)持续推进。

ALTER SYSTEM BACKUP LOG TENANT = fgedudb;

步骤 5:恢复。 新集群上执行恢复命令,指定备份路径与目标时间戳:

ALTER SYSTEM RESTORE fgedudb FROM 'file:///fgedudb/nfs/backup'
UNTIL TIME '2026-11-10 08:00:00' WITH 'recovery';

恢复进度通过 DBA_OB_RESTORE_PROGRESS 观察:

SELECT * FROM oceanbase.DBA_OB_RESTORE_PROGRESS;

风哥数据库教程 itpux-com

实战十:扩容缩容

扩容(在线,三副本由 2-2-2 扩到 3-3-3 思路)。

步骤一:新节点先按实战一完成环境准备,并在新主机安装 observer:

obd cluster redeploy fgedudb_cluster -c /fgedudb/obd_cluster.yaml

步骤二:SYS 租户把新节点加入集群:

ALTER SYSTEM ADD SERVER '192.168.1.13:2882' ZONE 'zone3';

步骤三:扩大资源池 Unit_NUM,触发自动 Rebalance:

ALTER RESOURCE POOL pool_fgedu UNIT_NUM = 2;

步骤四:观察副本迁移与负载均衡:

SELECT zone, svr_ip, unit_id, migrate_status FROM oceanbase.DBA_OB_UNITS;
SELECT * FROM oceanbase.DBA_OB_REBALANCE_PROGRESS;

缩容。 先扩后缩、先迁移后下线:

ALTER RESOURCE POOL pool_fgedu UNIT_NUM = 1;
-- 等待副本迁出完成
ALTER SYSTEM DELETE SERVER '192.168.1.13:2882';

缩容时关注 server_permanent_offline_time,默认 3600s,可按现场调整:

ALTER SYSTEM SET server_permanent_offline_time='300s';

实战十一:高可用与故障处理

高可用验证: 三副本下手动停掉 fgedu-net-cn2 上的 observer:

obd cluster stop fgedudb_cluster --servers fgedu-net-cn2

观察 Leader 自动切换与业务连接重连:

SELECT zone, svr_ip, role, status FROM oceanbase.DBA_OB_LOG_REPLICA_STAT;

恢复节点:

obd cluster start fgedudb_cluster --servers fgedu-net-cn2

节点重新加入后自动追日志、补齐副本。

常见故障处理:

  • 节点无法登录:先查进程 ps -ef | grep observer、端口 netstat -lntp | grep 2881、日志 /fgedudb/log。
  • 多数派丢失(三副本挂两台):集群只读,需尽快恢复一台存活节点,不可强行写入。
  • 副本不一致:用 DBA_OB_LOG_REPLICA_STAT 对比各副本日志位点,等待自动同步,必要时重建故障节点。
  • 磁盘写满:先清理 datafile 历史快照与备份,禁止直接删数据文件。

上51CTO搜索风哥可以学习全套数据库教程


四、风哥针对本文总结

风哥针对本文总结如下:本套风哥教程从数据库演进讲起,说明 OceanBase 作为第三代原生分布式数据库,依靠 Paxos 多副本实现 RPO=0、RTO 秒级的金融级高可用,依靠多租户与资源单元/资源池实现资源隔离与弹性调度。实战部分按"环境准备 → OBD 单机 → OBD 集群 → OCP 接管 → 登录与配置项 → Zone/节点 → 租户资源 → 对象管理 → 备份恢复 → 扩容缩容 → 高可用故障处理"的顺序,给出了在 fgedu-net-cn1、fgedu-net-cn2 两台 64G/8CPU 节点上、以 /fgedudb 为统一路径、fgedudb/fgedudb/fgedu 为库实例用户的完整命令链。

工程师落地时要把握三条主线:一是部署前把内核参数、资源限制、时间同步、目录权限做扎实,否则 observer 启动即报错;二是租户容量永远通过 Unit 规格与 Unit_NUM 调整,不直接动数据;三是扩容缩容、备份恢复、故障切换都依赖自动 Rebalance 与多数派协议,操作前先看副本分布与进度视图,避免破坏多数派。掌握本套风哥教程的命令与思路,即可胜任 OceanBase 社区版的日常部署与运维。

网上搜索风哥教程可以学习全套数据库教程


【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。