数据库管理-第313期 分布式挑战单机,OceanBase单机版试玩(20250411)

数据库管理313期 2025-04-11

  • [数据库管理-第313期 分布式挑战单机,OceanBase单机版试玩(20250411)](#数据库管理-第313期 分布式挑战单机,OceanBase单机版试玩(20250411))

数据库管理-第313期 分布式挑战单机,OceanBase单机版试玩(20250411)

text 复制代码
作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Pro: Database
PostgreSQL ACE Partner

10年数据库行业经验
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP,ITPUB认证专家
圈内拥有"总监"称号,非著名社恐(社交恐怖分子)

公众号:胖头鱼的鱼缸
CSDN:胖头鱼的鱼缸(尹海文)
墨天轮:胖头鱼的鱼缸
ITPUB:yhw1809。
除授权转载并标明出处外,均为"非法"抄袭

一直以来学习OceanBase最大的阻碍就是需要多台性能不能太差的机器或虚拟机,去年有了单机分布式一体化之后,OB可以在单台机器上部署了,但是其需求资源依然较大,运行也不是很流畅,具体可以查看数据库管理-第177期 一次神秘"采访"引出的安装体验(20240426)。在今年的OceanBase合作伙伴大会上,竹翁老师发布了OB单机版,从官网相关信息来看仅需2C6G就可以体验OceanBase。

这次我也申请了测试资格,相较于单机分布式一体化时候提供的社区版,这次提供的单机版是企业版数据库,可以在单机体验到多租户,也可以同时体验MySQL和Oracle模式租户。本期操作流程基本参考官方文档。

1 环境说明

为了体验多租户,我稍微多给了一点资源,具体清单如下:

项目 内容
操作系统 RHEL 8.10
IP地址 10.10.10.180
CPU 8
内存 32G
磁盘 150G

其中:

  • 我电脑CPU是8C16T,这里已经是CPU配的极限了
  • 操作系统不配置swap
  • 未按照生产建议分配挂载点,统一挂载于/目录下

2 操作系统配置

2.1 关闭防火墙

bash 复制代码
systemctl stop firewalld.service 
systemctl disable firewalld.service

2.2 关闭SELinux

bash 复制代码
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
setenforce 0
[reboot]

2.3 配置hosts文件

bash 复制代码
cat >>/etc/hosts<<EOF
10.10.10.180 obdj
EOF

2.4 配置本地yum源

配置本地yum源

bash 复制代码
mkdir /iso
mount -r /dev/sr0 /iso
rm -rf /etc/yum.repo.d/*

cat > /etc/yum.repos.d/iso.repo <<EOF
[AppStream]
name=AppStream
baseurl=file:///iso/AppStream
gpgcheck=0
enabled=1
 
[BaseOS]
name=BaseOS
baseurl=file:///iso/BaseOS
gpgcheck=0
enabled=1
EOF

2.5 配置sysctl.conf

bash 复制代码
cat >>/etc/sysctl.conf <<EOF
# for oceanbase
## 修改内核异步 I/O 限制
fs.aio-max-nr = 1048576

## 网络优化
net.core.somaxconn = 2048
net.core.netdev_max_backlog = 10000 
net.core.rmem_default = 16777216 
net.core.wmem_default = 16777216 
net.core.rmem_max = 16777216 
net.core.wmem_max = 16777216
 
net.ipv4.ip_forward = 0 
net.ipv4.conf.default.rp_filter = 1 
net.ipv4.conf.default.accept_source_route = 0 
net.ipv4.tcp_syncookies = 1 
net.ipv4.tcp_rmem = 4096 87380 16777216 
net.ipv4.tcp_wmem = 4096 65536 16777216 
net.ipv4.tcp_max_syn_backlog = 16384 
net.ipv4.tcp_fin_timeout = 15 
net.ipv4.tcp_slow_start_after_idle=0

vm.swappiness = 0
vm.min_free_kbytes = 2097152
vm.overcommit_memory = 0

fs.file-max = 6573688
fs.pipe-user-pages-soft = 0

# 修改进程可以拥有的虚拟内存区域数量
vm.max_map_count = 655360

# 此处为 OceanBase 数据库的 data 目录
kernel.core_pattern = /data/core-%e-%p-%t
EOF

sysctl -p

2.6 配置limits.conf

bash 复制代码
cat >>/etc/security/limits.conf <<EOF
* soft nofile 655350
* hard nofile 655350
* soft stack unlimited
* hard stack unlimited
* soft nproc 655360
* hard nproc 655360
* soft core unlimited
* hard core unlimited
EOF

2.7 创建用户

bash 复制代码
groupadd admin
useradd -g admin -d /home/admin -s /bin/bash admin
chown -R admin:admin /home/admin
echo "Obdj#123" | passwd --stdin admin

2.8 配置sudo

bash 复制代码
cat >> /etc/sudoers <<EOF
admin       ALL=(ALL)       NOPASSWD: ALL
EOF

2.9 创建安装目录

bash 复制代码
mkdir /data
chown -R admin:admin /data

2.10 安装JDK

bash 复制代码
dnf -y install java-1.8.0-openjdk

3 准备安装包

安装介质为:oceanbase-ocp-standalone-all-in-one-4.2.5.3-103000152025033110.el8.x86_64.tar

3.1 解压安装包

bash 复制代码
tar -xvf oceanbase-ocp-standalone-all-in-one-4.2.5.3-103000152025033110.el8.x86_64.tar

3.2 检查安装包

4 安装数据库

既然给了足够多的CPU和内存,尝试使用OCP进行安装:

bash 复制代码
cd oceanbase-standalone-all-in-one/
sudo bash bin/install_obd.sh
bash 复制代码
obd web

打开页面



输入账号和密码

配置OCP和数据库节点

集群配置


为安装成功这里需要限制一下metadb的内存上限

OBProxy配置

配置OCP



预检查





预检查结果并开始部署



完成部署

对比去年单机分布式一体化的单机部署,更加流畅了。

5 OCP

使用下面的地址访问OCP:

http://10.10.10.180:8080/


集群检查

租户检查

主机检查

性能监控




自治服务




6 新建Oracle租户



新增unit规格




这时候在最后一步会有个报错,无法找到python命令,在RHEL8.10中只有python3命令,可以通过以下方式解决:

bash 复制代码
ln -s /usr/bin/python3 /usr/bin/python

然后点击右上角重试,可完成创建:

检查租户


7 访问Oracle租户

bash 复制代码
#obclient -h$IP -P$port -u$user@$租户名 -p密码 -A
obclient -h127.0.0.1 -P2883 -usys@orcl -pObdj_123 -A
sql 复制代码
create user scott identified by tiger;
grant connect,resource to scott;


创建测试数据

直接从Oracle数据库中拉出基础语句:

sql 复制代码
CREATE TABLE "EMP" 
   (    "EMPNO" NUMBER(4,0), 
    "ENAME" VARCHAR2(10), 
    "JOB" VARCHAR2(9), 
    "MGR" NUMBER(4,0), 
    "HIREDATE" DATE, 
    "SAL" NUMBER(7,2), 
    "COMM" NUMBER(7,2), 
    "DEPTNO" NUMBER(2,0), 
     CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO"));
sql 复制代码
INSERT INTO EMP VALUES(7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
INSERT INTO EMP VALUES(7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30);
INSERT INTO EMP VALUES(7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30);
INSERT INTO EMP VALUES(7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20);
INSERT INTO EMP VALUES(7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981','dd-mm-yyyy'),1250,1400,30);
INSERT INTO EMP VALUES(7698,'BLAKE','MANAGER',7839,to_date('1-5-1981','dd-mm-yyyy'),2850,NULL,30);
INSERT INTO EMP VALUES(7782,'CLARK','MANAGER',7839,to_date('9-6-1981','dd-mm-yyyy'),2450,NULL,10);
INSERT INTO EMP VALUES(7788,'SCOTT','ANALYST',7566,to_date('13-JUL-87')-85,3000,NULL,20);
INSERT INTO EMP VALUES(7839,'KING','PRESIDENT',NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10);
INSERT INTO EMP VALUES(7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30);
INSERT INTO EMP VALUES(7876,'ADAMS','CLERK',7788,to_date('13-JUL-87')-51,1100,NULL,20);
INSERT INTO EMP VALUES(7900,'JAMES','CLERK',7698,to_date('3-12-1981','dd-mm-yyyy'),950,NULL,30);
INSERT INTO EMP VALUES(7902,'FORD','ANALYST',7566,to_date('3-12-1981','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMP VALUES(7934,'MILLER','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,10);
commit;


创建其他表并插入数据:

sql 复制代码
CREATE TABLE DEPT
(
  DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
  DNAME VARCHAR2(14) ,
  LOC VARCHAR2(13)
);

CREATE TABLE SALGRADE
(
  GRADE NUMBER,
  LOSAL NUMBER,
  HISAL NUMBER
);

INSERT INTO DEPT VALUES(10,'ACCOUNTING','NEW YORK');
INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS');
INSERT INTO DEPT VALUES(30,'SALES','CHICAGO');
INSERT INTO DEPT VALUES(40,'OPERATIONS','BOSTON');

INSERT INTO SALGRADE VALUES (1,700,1200);
INSERT INTO SALGRADE VALUES (2,1201,1400);
INSERT INTO SALGRADE VALUES (3,1401,2000);
INSERT INTO SALGRADE VALUES (4,2001,3000);
INSERT INTO SALGRADE VALUES (5,3001,9999);
commit;


薪资等级查询查询:

sql 复制代码
select e.ename,s.grade from emp e,salgrade s where e.sal>=s.losal and e.sal<hisal;

Oracle租户基本测试结束。

总结

本次OceanBase单机版安装整体比较顺利,其中OBD/OCP界面非常精美且响应迅速、功能强大,Oracle数据库租户简单试用也很不错。虽有一些小问题,但瑕不掩瑜。

老规矩,知道写了些啥。

相关推荐
搞不懂语言的程序员38 分钟前
备忘录模式深度解析与实战案例
数据库·python·备忘录模式
手揽回忆怎么睡2 小时前
mongodb学习
数据库·学习·mongodb
Charlie__ZS2 小时前
RabbitMQ
分布式·rabbitmq
桑榆08063 小时前
spark-core编程2
大数据·分布式·spark
LL1681993 小时前
SSM考研助手管理系统
java·服务器·开发语言·数据库·学习
veminhe5 小时前
Node.js 数据库 CRUD 项目示例
数据库·node.js
HX科技5 小时前
树莓派_利用Ubuntu搭建gitlab
数据库·ubuntu·gitlab
pursue.dreams5 小时前
Windows 下 MongoDB ZIP 版本安装指南
数据库·windows·mongodb
qiandeqiande6 小时前
数据集成工具推荐,支持数据库、API、消息文件等集成技术,并具备低代码与可视化配置特性
数据库·低代码·系统集成
betazhou6 小时前
基于Windows通过nginx代理访问Oracle数据库
数据库·nginx·oracle·代理