數據庫管理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數據庫租戶簡單試用也很不錯。雖有一些小問題,但瑕不掩瑜。
老規矩,知道寫了些啥。