数据库管理313期 2025-04-11
- 数据库管理-第313期 分布式挑战单机,OceanBase单机版试玩(20250411)
- 1 环境说明
- 2 操作系统配置
- 2.1 关闭防火墙
- 2.2 关闭SELinux
- 2.3 配置hosts文件
- 2.4 配置本地yum源
- 2.5 配置sysctl.conf
- 2.6 配置limits.conf
- 2.7 创建用户
- 2.8 配置sudo
- 2.9 创建安装目录
- 2.10 安装JDK
- 3 准备安装包
- 3.1 解压安装包
- 3.2 检查安装包
- 4 安装数据库
- 打开页面
- 输入账号和密码
- 配置OCP和数据库节点
- 集群配置
- OBProxy配置
- 配置OCP
- 预检查
- 预检查结果并开始部署
- 完成部署
- 5 OCP
- 集群检查
- 租户检查
- 主机检查
- 性能监控
- 自治服务
- 6 新建Oracle租户
- 检查租户
- 7 访问Oracle租户
- 创建测试数据
- 总结
数据库管理-第313期 分布式挑战单机,OceanBase单机版试玩(20250411)
作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Pro: Database
PostgreSQL ACE Partner10年数据库行业经验
拥有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 关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
2.2 关闭SELinux
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
setenforce 0
[reboot]
2.3 配置hosts文件
cat >>/etc/hosts<<EOF
10.10.10.180 obdj
EOF
2.4 配置本地yum源
配置本地yum源
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
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 = 16777216net.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=0vm.swappiness = 0
vm.min_free_kbytes = 2097152
vm.overcommit_memory = 0fs.file-max = 6573688
fs.pipe-user-pages-soft = 0# 修改进程可以拥有的虚拟内存区域数量
vm.max_map_count = 655360# 此处为 OceanBase 数据库的 data 目录
kernel.core_pattern = /data/core-%e-%p-%t
EOFsysctl -p
2.6 配置limits.conf
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 创建用户
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
cat >> /etc/sudoers <<EOF
admin ALL=(ALL) NOPASSWD: ALL
EOF
2.9 创建安装目录
mkdir /data
chown -R admin:admin /data
2.10 安装JDK
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 解压安装包
tar -xvf oceanbase-ocp-standalone-all-in-one-4.2.5.3-103000152025033110.el8.x86_64.tar
3.2 检查安装包
4 安装数据库
既然给了足够多的CPU和内存,尝试使用OCP进行安装:
cd oceanbase-standalone-all-in-one/
sudo bash bin/install_obd.sh
obd web
打开页面
输入账号和密码
配置OCP和数据库节点
集群配置
为安装成功这里需要限制一下metadb的内存上限
OBProxy配置
配置OCP
预检查
预检查结果并开始部署
完成部署
对比去年单机分布式一体化的单机部署,更加流畅了。
5 OCP
使用下面的地址访问OCP:
http://10.10.10.180:8080/
集群检查
租户检查
主机检查
性能监控
自治服务
6 新建Oracle租户
新增unit规格
这时候在最后一步会有个报错,无法找到python命令,在RHEL8.10中只有python3命令,可以通过以下方式解决:
ln -s /usr/bin/python3 /usr/bin/python
然后点击右上角重试,可完成创建:
检查租户
7 访问Oracle租户
#obclient -h$IP -P$port -u$user@$租户名 -p密码 -A
obclient -h127.0.0.1 -P2883 -usys@orcl -pObdj_123 -A
create user scott identified by tiger;
grant connect,resource to scott;
创建测试数据
直接从Oracle数据库中拉出基础语句:
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"));
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;
创建其他表并插入数据:
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;
薪资等级查询查询:
select e.ename,s.grade from emp e,salgrade s where e.sal>=s.losal and e.sal<hisal;
Oracle租户基本测试结束。
总结
本次OceanBase单机版安装整体比较顺利,其中OBD/OCP界面非常精美且响应迅速、功能强大,Oracle数据库租户简单试用也很不错。虽有一些小问题,但瑕不掩瑜。
老规矩,知道写了些啥。