
我们近期开始从0开始学习OceanBase了。
很多开发者、运维同学甚至技术管理者,都会有这样的困惑:为什么要学OceanBase?它和我们常用的MySQL、PostgreSQL到底有啥不一样?什么时候该选它,什么时候继续用MySQL/PostgreSQL?
一、先搞懂:OceanBase到底是什么?
简单说,OceanBase是一款完全自研的国产原生分布式关系型数据库——划重点:原生分布式、自研、关系型,这三个词是它的核心标签。
它由蚂蚁集团自主研发,不是基于MySQL、PostgreSQL等开源数据库二次开发,拥有完整自主知识产权,代码级可控,从根源上避免了开源技术的依赖风险和限制问题。
可能有人会问:“分布式数据库不就是把多个数据库凑一起吗?”真不是。OceanBase的“原生分布式”,是从底层架构就设计成“能横向扩展、能扛住海量数据和高并发”的形态,不用像MySQL那样,靠分库分表的中间件来勉强支撑大规模场景,而是天生就适合海量数据、高并发的核心业务。
它的核心亮点的很突出,总结3个最关键的:
目前,OceanBase已经助力4000+行业客户实现核心系统升级,覆盖金融、互联网、政务、零售等多个领域,比如工商银行、太平洋保险、高德地图、快手等,都在用它支撑核心业务。
二、数据库选型建议:到底该怎么选?
1. OceanBase vs MySQL vs PostgreSQL
很多人会把三者放在一起比,但其实它们的定位、擅长场景完全不同——就像同样是交通工具,自行车适合短途代步,汽车适合家庭出行,高铁适合长途高效出行,没有好坏,只有适配与否。
对比维度 | OceanBase | MySQL系 | PostgreSQL系 |
|---|---|---|---|
核心定位 | 国产原生分布式关系型数据库,主打金融级高可用、海量数据处理,兼顾TP和AP混合负载(HTAP) | 开源关系型数据库,主打易用性、高性能,面向中小规模到大规模的全场景通用需求 | 开源对象-关系型数据库,主打功能强大、扩展性强,面向复杂查询和高级特性需求 |
架构类型 | 原生分布式架构,支持水平扩展,集群节点可超数千个,单集群最大数据量超3PB | 以单机架构为主,分布式需依赖分库分表中间件,扩展性较差 | 单机架构为主,分布式需依赖第三方扩展(如Citus),不够成熟 |
兼容性 | 高度兼容MySQL、Oracle语法,支持过程语言、触发器等高级特性,迁移成本低 | 兼容标准SQL,语法简单,生态内工具、框架适配完善 | 高度兼容SQL标准(2023版核心特性兼容率超96%),支持自定义数据类型、函数 |
高可用能力 | 采用Paxos协议实现多副本强一致性,支持“三地五中心”容灾,满足金融级6级容灾标准 | 依赖主从复制、读写分离实现高可用,可能存在数据丢失风险 | 支持主从复制、流复制,高可用配置较复杂,需手动优化 |
核心优势 | 高可用、高扩展、高压缩、HTAP混合负载、国产自研可控 | 开源免费、易用性强、生态完善、学习成本低、部署简单 | 功能强大、数据类型丰富、支持复杂查询、扩展性极强、开源免费 |
核心劣势 | 生态不如MySQL/PostgreSQL成熟,部署运维复杂度高,硬件资源需求较高 | 分布式能力弱,大规模场景需手动分库分表,存储成本较高 | 高并发场景性能不如MySQL,学习曲线陡峭,运维优化复杂 |
适用场景 | 金融核心系统、互联网海量业务(如电商、支付)、政务核心系统、大规模分布式场景 | 中小规模应用、Web网站、电商后台、中小企业管理系统、读多写少场景 | 复杂数据分析、科研场景、需要自定义功能的业务、对数据完整性要求高的场景 |
2. 到底该怎么选
2.1 优先选MySQL:中小规模、追求低成本和易用性
如果你的业务是中小规模(比如用户量几十万、数据量百万级),不需要分布式部署,团队技术栈偏简单,追求低成本、易上手,那MySQL绝对是首选。
比如个人博客、中小企业的CRM系统、小型电商后台,用MySQL足够支撑,而且社区活跃,遇到问题能快速找到解决方案,运维成本也低——毕竟它是Web开发的“标配数据库”,生态完善到几乎能适配所有主流开发语言和框架。
2.2 优先选PostgreSQL:需要复杂查询、自定义功能
如果你的业务涉及复杂数据分析、多维度查询,或者需要自定义数据类型、函数(比如科研数据处理、企业级报表系统),那PostgreSQL更合适。
它支持数组、JSON、几何类型等丰富的数据类型,还有多种高级索引,能轻松应对复杂的查询场景,而且开源免费,适合对功能扩展性要求高、能接受一定学习成本的团队。
2.3 优先选OceanBase:大规模分布式、核心业务、高可用需求
如果你的业务是核心系统(比如金融交易、支付、政务核心),需要支撑海量数据(亿级以上)、高并发(每秒数万次请求),而且对数据一致性、高可用性要求极高,或者有国产替代需求,那OceanBase是最优解。
比如银行的核心交易系统、电商的双11峰值场景、互联网大厂的海量用户数据存储,用OceanBase能避免MySQL分库分表的繁琐,还能节省大量存储成本,同时满足金融级的容灾要求(如官方给的例子:常熟农商银行用它后,跑批时间从6小时缩短到9分钟)。
三、 从0开始学习:从部署学习环境开始
进入官网环境https://www.oceanbase.com/demo,先从单机版快速上手。

选择部署【OceanBase单机版】,即可初始化实验环境

初始化完成后如下(1h的时间):

1. 部署前配置
[root@iZbp130a38f5akwzn8n97bZ ~]# useradd -U admin -d /home/admin -s /bin/bash
[root@iZbp130a38f5akwzn8n97bZ ~]# chown -R admin:admin /home/admin
[root@iZbp130a38f5akwzn8n97bZ ~]# 
并将创建的admin用户配置sudo权限(免密等)

创建目录并授权
[root@iZbp130a38f5akwzn8n97bZ ~]# mkdir -p /data/{1,log1}
[root@iZbp130a38f5akwzn8n97bZ ~]# chown -R admin:admin /data
因体验环境中已内置安装包,故不需要再上传安装包。

2. 部署过程
2.1 安装包处理
将安装包移动到/home/admin下,并切换到admin用户进行部署(不推荐root用户部署及管理)
[admin@iZbp130a38f5akwzn8n97bZ ~]$ ll -h
total 729M
-rw-r--r-- 1 root root 729M Aug 8 2025 oceanbase-standalone-all-in-one-4.2.5_bp4_hf4_20250716.el7.x86_64.tar.gz
[admin@iZbp130a38f5akwzn8n97bZ ~]$ 解压安装包
$ tar -zxvf oceanbase-standalone-all-in-one-4.2.5_bp4_hf4_20250716.el7.x86_64.tar.gz 
2.2 安装obd
执行安装命令,安装 obd
[admin@iZbp130a38f5akwzn8n97bZ ~]$ cd oceanbase-standalone-all-in-one
[admin@iZbp130a38f5akwzn8n97bZ oceanbase-standalone-all-in-one]$ sh bin/install_obd.sh 
执行安装后如下:
Trace ID: 992e69b8-2b66-11f1-9af9-00163e61e744
If you want to view detailed obd logs, please run: obd display-trace 992e69b8-2b66-11f1-9af9-00163e61e744
Disable remote ok
Trace ID: 9a5d2306-2b66-11f1-8e45-00163e61e744
If you want to view detailed obd logs, please run: obd display-trace 9a5d2306-2b66-11f1-8e45-00163e61e744
add auto set env logic to profile: /home/admin/.bash_profile
Execute this command to apply the environment config:`source ~/.oceanbase-all-in-one/bin/env.sh`
按照提示,执行环境变量
[admin@iZbp130a38f5akwzn8n97bZ oceanbase-standalone-all-in-one]$ source ~/.oceanbase-all-in-one/bin/env.sh
2.3 启动交互式安装
为了确保能够顺利完成OceanBase数据库的安装,安装完obd之后安装OceanBase数据库之前,建议查询下机器的可用内存,确保可用内存满足数据库的资源要求。

查看本机IP
因为安装时需要用的IP信息,因此先查看一下

填写部署相关信息
bin/install_ob.sh
Enter the IP (Default: 192.168.2.251):
Enter the current user password:
get system config ok
+-----------------------------------------------------------------+
| System Parameter Change List |
+---------------+------------------+---------------+--------------+
| ip | need_change_var | current_value | target_value |
+---------------+------------------+---------------+--------------+
| 192.168.2.251 | fs.aio-max-nr | 65536 | 1048576 |
| 192.168.2.251 | vm.max_map_count | 65530 | 655360 |
| 192.168.2.251 | fs.file-max | 777882 | 6573688 |
| 192.168.2.251 | nofile | 65535 | 655350 |
+---------------+------------------+---------------+--------------+
Do you want to modify the parameters above? [y/n] [Default: y]: 
配置集群信息
后面的集群信息均可选择默认,注意自己的密码设置

对于监控配置,建议自己的本地环境创建时比较配置上

配置完毕后会自动开始部署

部署成功后如下:

根据上一步结果中的提示信息,登录集群
[admin@iZbp130a38f5akwzn8n97bZ oceanbase-standalone-all-in-one]$ obclient -h192.168.2.251 -P'2881' -p'123456' -uroot@test -Doceanbase -A
Welcome to the OceanBase. Commands end with ; or \g.
Your OceanBase connection id is 3221502964
Server version: OceanBase 4.2.5.4 (r104040052025071121-969b0573b5acaa8702a55910412894a7a33b7382) (Built Jul 11 2025 21:46:10)
Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
obclient(root@test)[oceanbase]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| oceanbase |
| test |
+--------------------+
4 rows in set (0.003 sec)
obclient(root@test)[oceanbase]> 
结果显示如下
$ ps -ef|grep observer
admin 8133 1 47 20:13 ? 00:02:23 /home/admin/myoceanbase/oceanbase_name/bin/observer -r 192.168.2.251:2882:2881 -p 2881 -P 2882 -z zone1 -n myoceanbase -c 1774786407 -d /data/1/myoceanbase -I 192.168.2.251 -o __min_full_resource_pool_memory=2147483648,cluster_name=myoceanbase,cpu_count=8,memory_limit=7G,datafile_size=2G,datafile_maxsize=139G,datafile_next=14G,log_disk_size=19G,system_memory=0M,large_query_threshold=600s,enable_record_trace_log=False,enable_syslog_recycle=1,max_syslog_file_count=300
admin 9601 1409 0 20:18 pts/0 00:00:00 grep --color=auto observer至此,OceanBase的单机环境便部署完毕。
四、 结语
本文为OceanBase数据库学习的第一篇,即初识以及官方实验环境单机部署,后续我们继续在实验环境上学习。如果感兴趣的也可以一起来学习、有问题的也在留言区一起交流,共同进步。