ITPub博客

首页 > 数据库 > 国内数据库 > 数据库教程FGMT78:国产数据库-OceanBase数据库工程师培训实战教程

数据库教程FGMT78:国产数据库-OceanBase数据库工程师培训实战教程

原创 国内数据库 作者:mfkqwyc86 时间:2026-11-10 12:07:05 0 删除 编辑

数据库教程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 社区版的日常部署与运维。


> 

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


---


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9664900/viewspace-3188305/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
风哥Oracle,MySQL,PostgreSQL,Linux,大数据,国产数据库,中间件等教程

注册时间:2010-10-26

  • 博文量
    98
  • 访问量
    429948