一、前言
OceanBase 是一款高性能、高可擴展的分布式數據庫,適用于大規模數據處理和企業級應用。
隨著大數據和云計算的普及,OceanBase 在企業數字化轉型中扮演著重要角色。學習 OceanBase 可以幫助開發者掌握先進的分布式數據庫技術,提升數據管理能力。使用 Docker 安裝 OceanBase 簡化了部署流程,讓用戶無需復雜的環境配置即可快速啟動,適合開發者進行實驗和學習。
本文將介紹如何在 Docker 上安裝 OceanBase,使用 DBeaver 連接數據庫,創建庫表并查詢數據。
?
2019 年,OceanBase 數據庫 V2.2 版本參加代表 OLTP 數據庫最權威的 TPC-C 評測,以 6000 萬 tpmC 的成績登頂世界第一。隨后,在 2020 年,又以 7 億 tpmC 刷新紀錄。OceanBase 數據庫是第一個上榜 TPC-C 的分布式數據庫,也是第一個上榜的中國數據庫。
這份閃耀全球的成績單背后,隱藏著一場歷時十年的“極限長征”:從阿里工程師在機房徹夜鏖戰的草稿紙推演,到支付寶核心系統遷移前夕的驚險48小時;從被質疑“分布式架構無法承載金融級事務”的至暗時刻,到以開源代碼重新定義行業標準的破局之路……
后續我們會專門開辟篇章,深入講述 OceanBase 的發展歷程,帶大家領略這款分布式數據庫從無到有、從弱到強的傳奇故事。
?
二、下載安裝
2.1 環境準備
操作系統:Windows 11
Docker工具:Docker Desktop
(Docker Desktop安裝配置可參考之前文章:Windows安裝Docker Desktop,詳細步驟 https://blog.csdn.net/qq_17153885/article/details/141337873?spm=1001.2014.3001.5501)
?
2.2 拉取鏡像
Docker 環境準備好之后,就可以在主機上啟動容器了,恰好 OceanBase 提供了單機版的鏡像,完美適用于快速體驗的場景。
OceanBase 的單機版鏡像 oceanbase/oceanbase-ce, 按照版本以不同的 tag 劃分,latest 默認對應的是最新發布的版本,體驗最新版本,可以直接使用 latest 作為 tag,或者不寫 tag。
?
按win+r,啟動運行界面,輸入cmd
?
?
在運行界面,執行如下命令,拉取鏡像
docker pull oceanbase/oceanbase-ce
?
?
拉取后,在Docker Desktop可查看oceanbase鏡像
?
備注:如果拉取失敗,可能鏡像源失效。可私信(公眾號:技海拾貝),獲取最新可用鏡像源
?
2.3 啟動單節點OceanBase數據庫實例
運行以下命令(這里本次操作選擇mini 獨立實例),啟動 OceanBase 數據庫的實例:
docker run -p 2881:2881 --name oceanbase-ce -e MINI_MODE=1 -d oceanbase/oceanbase-ce
根據當前容器部署最大規格的實例
docker run -p 2881:2881 --name oceanbase-ce -e MINI_MODE=0 -d oceanbase/oceanbase-ce部署 mini 的獨立實例
docker run -p 2881:2881 --name oceanbase-ce -e MINI_MODE=1 -d oceanbase/oceanbase-ce
?
?
?
?
啟動預計需要 2-3 分鐘。執行以下命令,如果返回 boot success!
?,則啟動成功。
查看日志
docker logs oceanbase-ce
?
?
?
?
2.4 連接數據庫實例
oceanbase-ce 鏡像安裝了 OBD(OceanBase Deployer,OceanBase 安裝部署工具)和 OBClient(OceanBase 命令行客戶端)。您可選擇進入容器,使用 OBD 命令管理和 OBClient 客戶端連接實例,也可使用宿主機本地 OBClient 或 MySQL 客戶端連接到 OceanBase 數據庫實例。
?
在 OceanBase 的 Docker 容器中還自帶了常用的一些工具,在部署完之后可以直接用來做一些驗證。
#切換終端到docker容器
[root@rac04 ~]# docker exec -it oceanbase-ce bash
#檢查集群狀態
[root@61d0ccd3ea95 /]# obd cluster list
+------------------------------------------------------------+
| Cluster List |
+-----------+------------------------------+-----------------+
| Name | Configuration Path | Status (Cached) |
+-----------+------------------------------+-----------------+
| obcluster | /root/.obd/cluster/obcluster | running |
?
1.進入 Docker 容器
docker exec -it oceanbase-ce bash
?
?
通過DeskTop進入也可以
?
?
2.查看集群詳情
#查看集群列表
obd cluster list
#查看 obcluster 集群詳情
obd cluster display obcluster
obd cluster list
?
?
?
?
?
3.連接數據庫
使用以下命令可以使用 sys 租戶連接到 OceanBase 數據庫,連接數據庫,默認root密碼為空
obclient -h127.0.0.1 -uroot@sys -A -Doceanbase -P2881 -p
?
?
?
4.執行sql語句
show databases;
?
?
5.創建用戶及密碼
-
創建用戶 :在源端業務租戶下創建用戶,用于數據遷移或數據同步。對于 OceanBase 數據庫 MySQL 租戶,使用以下命令:
CREATE USER 'user_name' IDENTIFIED BY 'password';
對于 OceanBase 數據庫 Oracle 租戶,使用以下命令:
CREATE USER user_name IDENTIFIED BY password;
-
為用戶授權 :通過
GRANT
? 語句為創建的數據庫用戶授權,例如:GRANT SELECT ON db_name.* TO user_name;
具體的授權語句和權限范圍根據實際需求確定。
?
假設您有一個用戶 test_user
?,希望授予其所有數據庫的所有權限,可以執行以下命令:
sql復制
GRANT ALL ON *.* TO 'test_user'@'%';
?
?
?
CREATE USER 'zhangsan' IDENTIFIED BY 'td98761n'
GRANT ALL ON *.* TO 'zhangsan'@'%';
?
?
三、通過 DBeaver 連接 OceanBase 數據庫
DBeaver 是一款通用的數據庫客戶端工具,其原理是使用各個數據庫提供的 JDBC 驅動連接數據庫,支持常見的關系型數據庫、非關系型數據庫、分布式數據庫等等。
使用 DBeaver 自帶的 OceanBase 驅動或 MySQL 驅動均可連接 OceanBase 數據庫的 MySQL 租戶,本文將以 OceanBase 驅動為例介紹如何使用 DBeaver 連接 OceanBase 數據庫的 MySQL 租戶。
注意:建議升級DBeaver版本到最新版(例如目前最新版24.3.5),較低版本沒有OceanBase選項,需要下載驅動連接
?
3.1 新建連接
可以單擊文件下方的連接符進入到選擇數據庫頁面
?
?
?
?
?
這里使用上述創建的賬號,密碼。當 連接測試 彈窗中顯示 已連接,表示可成功連接,單擊 確定 后,單擊 完成 即可連接到 OceanBase 數據庫。
?
?
?
?
?
3.2 創建表
CREATE TABLE user1(id bigint NOT NULL AUTO_INCREMENT COMMENT "主鍵id",name varchar(64) NOT NULL COMMENT "姓名",age int NOT NULL COMMENT "年齡",enable_flag TINYINT COMMENT "是否可用(10-可用,20-刪除)"
)
?
?
?
3.3 插入數據
INSERT INTO user1(name, age, enable_flag)
values('技海拾貝',39, 10),('張三', 51, 20),('李四',27, 10);
?
?
?
?
3.4 查詢數據
SELECT *
FROMuser1
WHEREenable_flag =20;
?
?
?
OceanBase 以原生分布式架構重塑數據庫效能邊界,開源生態與金融級穩定性使其成為企業數字化轉型的利器。通過本文,您已解鎖 OceanBase 的基礎操作,而其真正的價值在于應對海量數據、高并發場景的無限潛力——無論是彈性擴縮容、HTAP 混合負載,還是跨地域多活,皆為業務增長提供堅實底座。
如果你對 OceanBase 以及分布式數據庫有更深入的興趣,歡迎繼續關注我們的后續文章,我們將深入探討其高級功能與實際應用場景。
?