OceanBase社区版4.0,给了我很多惊喜
📢📢📢📣📣📣
哈嘍!大家好,我是【IT邦德】,江湖人稱jeames007,10余年DBA工作經驗
一位上進心十足的【大數據領域博主】!😜😜😜
中國DBA聯盟(ACDU)成員,目前從事DBA及程序編程
擅長主流數據Oracle、MySQL、PG 運維開發,備份恢復,安裝遷移,性能優化、故障應急處理等。
? 如果有對【數據庫】感興趣的【小可愛】,歡迎關注【IT邦德】💞💞💞
??????感謝各位大可愛小可愛!??????
文章目錄
- 前言
- 📣 1.暢談OceanBase4.0
- 📣 2.OceanBase 社區版4.0部署
- 📢 2.1 環境準備
- 📢 2.2 OBD 部署 OceanBase
- 📣 3.體驗多租戶
- 📣 4.報錯解決
- 📣 4.尾聲
前言
OceanBase 社區發布 V4.0.0 版本是對分布式數據庫系統架構設計的全面升級。📣 1.暢談OceanBase4.0
? 作為中國DBA聯盟的一個成員,我比較關注國產數據庫的動態,從2018 年OceanBase 2.0 版本正式發布,我就開始接觸OceanBase了,官方也從不同渠道做了相關的技術分享,我基本每次都參加,同時在OceanBase官方社區也認識了一些志同道合的朋友。月初正好給客戶做運維實施,客戶在規劃后期國產數據庫的替代方案,讓我給點意見。我也是讓客戶多關注關注OceanBase。打開官網,發現官方發布了新動態,于2022年11月4日發布了4.0社區版,于是懷著激動的心情去體驗了一把,看到一些熟悉的小伙伴在OceanBase問答社區如火如荼的討論4.0版本的新特性,我也班門弄斧下,談談我的拙見。
? OceanBase V4.0 版本在保證功能特性不丟失的前提下,重新審視了數據庫與分布式系統兩個領域最基礎的設計,全新推出業內首個單機分布式一體化架構,重點構建 HTAP 和云化兩個基礎能力屬性。與此同時,該版本也從架構上解決了 V3.2 版本的設計瓶頸,支持更多用戶業務關注的多個核心能力,在內核功能、兼容性、穩定性、性能上取得突破。
? 首先OceanBase 4.0 首推的單機分布式一體化架構,一方面它具備單機數據庫高性能、低成本的優勢,這個優勢可以幫助客戶降低成本;另外一方面具備分布式數據庫高可用、可擴展、面向云,面向未來的優勢,幫助客戶更好地挖掘數據價值,也就是說,通過 OceanBase 4.0 可以同時幫助客戶降本增效,贏得未來。即便在單機部署模式下,仍然可以實現分布式部署的完整功能,包括 Oracle/MySQL 兼容性、TP 事務處理能力、AP 并行分析查詢能力、租戶資源隔離等。既能夠支持分布式多機場景,也能夠支持應用在單機場景,既能用在一些比較大規格、高配置的機器,也能夠用在低配置的機器,既能用在關系型數據模型,也能夠用在多模模型,既能夠處理 OLTP 核心業務場景,也能夠用來處理 OLAP 實時分析場景。
? 其次快速部署及易用性方面,OceanBase一直在這方面做改進。OceanBase 全家桶不再像以前版本那樣一個個下載安裝了,在我接下來的的通過OceanBase 全家桶部署安裝過程中,大家就能感受到時絕對的是實至名歸。由原來需要 5 步手動安裝部署,優化為3個步驟,簡單明了,兩分鐘可以完成體驗demo。官方承諾大家可以在 4C8G(即 CPU 4 核心,內存 8 GB)的環境下輕松啟動和使用。可以說只用3分鐘,就能讓你擁有一款單機 OB 分布式數據庫。平時我比較關注國產數據庫的發展,也做過其他的國產數據庫相關評測及體驗,就拿opengauss、達夢、TiDB的來說,感覺對環境要求比較高,部署過程較為繁瑣,非常耗時,這樣很影響對數據庫的體驗感。同時在Docker 部署的國產數據庫方面不多,OceanBase支持在Docker容器部署,這對平時做測試有很大幫助,發布后的第一時間,我也是通知了共事的小伙伴,大家一起體驗了版本的一些新特性,比如并行處理,數據壓縮,多租戶模式資源的靈活調整等,確實很不錯,性能很棒。部署更加便捷,讓用戶能夠更好的體驗OceanBase,OceanBase 4.0 的核心目標是要讓我們的DBA小伙伴們更簡單地使用數據庫。
? 最后,明顯發現這次的OceanBase全家桶安裝包里面包含了 OBD、OceanBase 數據庫、 OBProxy、obagent、Grafana 和 Prometheus ,一應俱全啊。隨著業務種類的增加、服務器數量的增長、網絡環境的越發復雜以及發布更加頻繁,從而不可避免地帶來了線上事故的增多,因此需要對服務器到應用的全方位監控,提前預警,急需一個工具來解決這個問題,而OceanBase通過Grafana、Prometheus 的結合,完美的解決了這個問題。可以在眾多國產數據庫中,OceanBase的工具是最多也是最齊全的,敏捷的診斷 SQL Diagnoser工具、日志數據鏈路工具、集群管理平臺、OMS數據遷移服務,導入/導出工具等。各個工具各司其職,無縫配合。
📣 2.OceanBase 社區版4.0部署
以下是自己虛擬機環境做的OceanBase4.0社區版本單機分布式部署詳細過程,部署過程中也遇到了一些問題點分享給大家,一起交流學習。
📢 2.1 環境準備
[root@rhel76 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.6 (Maipo)
[root@rhel76 ~]# vi /etc/fstab
#添加如下內容
tmpfs /dev/shm tmpfs defaults,size=8G 0 0
[root@rhel76 ~]# mount -o remount /dev/shm
[root@rhel76 ~]# df -h /dev/shm/
Filesystem Size Used Avail Use% Mounted on
tmpfs 8G 0 8G 0% /dev/shm
OB 3時代的時候顯然會比較麻煩,經常遇到由于資源不足導致啟動失敗。通過以上方法,給操作系統分配了8G的內存,OceanBase 社區版4.0版本已經支持4c8g的配置來安裝了,這對電腦配置低的小伙伴確實是個福音,另外對于 CPU 和內存使用做了大量的優化,實測在 4C8G 環境下跑的很流暢,4C8G輕松部署,相比Tidb、達夢數據庫,基本上我的電腦小風扇已經轉起來了。目前主流的PC一般可以達到8C16G,這很大程度上能讓更多的喜歡OB的用戶能隨時隨地隨心所欲的去搞起來。
##設置Hostname
[root@rhel76 ~]# hostnamectl set-hostname OceanBase
hostnamectl set-hostname永久主機名 是對/etc/hostname文件的內容進行修改
📢 2.2 OBD 部署 OceanBase
第一步下載安裝包,全家桶安裝包all-in-one package大小一共 246MB,是為了方便用戶能夠一鍵安裝 OceanBase 相關組件推出的一站式安裝包。OBD、OceanBase 數據庫、 OBProxy、obagent、Grafana 和 Prometheus ,一應俱全啊。將所有組件提前做好適配測試并給出推薦組合版本。
第二步就是通過以下tar -xzf命令解壓安裝包。
最后一步我就是一鍵安裝,用戶只需要不到2分鐘的等待,部署更快,體驗感更強。當安裝 grafana 或 prometheus 時,會輸出 grafana 或 prometheus 訪問地址,整個安裝過程很流暢,而且日志輸出的非常詳細。安裝結束后通過執行which obd 和 which obclient 檢測是否安裝成功,如果可以找到 obd 和 obclient 表示安裝成功。
[root@oceanbase ~]# cd oceanbase-all-in-one/bin/
[root@oceanbase bin]# ./install.sh
在這里我使用 obd demo 快速部署單機,部署并啟動 OceanBase 數據庫。
[root@oceanbase ~]# cd oceanbase-all-in-one
[root@oceanbase oceanbase-all-in-one]# obd demo
集群的管理命令也很便捷,都可以實現一鍵管理,相對其他集群管理的數據庫,OB這塊做的簡單明了,集群可隨時創建,也可隨時銷毀釋放資源。之前體驗其他國產數據庫,常發生集群銷毀不干凈而導致二次安裝失敗。
關閉集群:obd cluster stop demo
銷毀集群:obd cluster destroy demo
查看集群: obd cluster list
最后再看看如何連接OceanBase租戶,MySQL 命令行客戶端或者圖形化工具上也是能連接 OceanBase 的租戶。此外,OceanBase 也提供專屬的命令行客戶端工具 ODC 。ODC 是對 OceanBase 適配性最好的客戶端工具。新創建的業務租戶的管理員(root)密碼默認是空的,需要改密碼。
# 使用 OBClient 客戶端連接到 OceanBase 數據庫
[root@oceanbase ~]# obclient -h127.0.0.1 -uroot -P2881
# 修改sys租戶管理員密碼
obclient [(none)]> alter user root identified by ‘jem’;
📣 3.體驗多租戶
OceanBase 數據庫具有多租戶的特性,在集群層面實現了實例資源的池化。在 OceanBase 數據庫中,每一個租戶即一個實例(類比 MySQL instance)。租戶與租戶之間數據、權限、資源隔離,每個租戶擁有自己獨立的訪問端口及 CPU、內存訪問資源。
OceanBase 數據庫可以靈活的調整租戶資源分配情況(CPU、內存),并且整個過程對上層業務透明。通過多租戶機制,OceanBase 集群可以幫助用戶高效的利用資源,在保證可用性和性能的前提下,優化成本,并且做到按照需求彈性擴容。
多租戶只需要三步,unit資源配置、創建資源池、創建租戶即可搞定。
可以看到集群下兩個租戶的資源、數據、權限都是隔離的。這種多租戶隔離,可以解決租戶的在線DDL,數據存儲高壓縮比這些痛點。租戶提供分區表的水平拆分方案,提供原生的 SQL 和事務能力,對業務透明。并且支持在線擴容和縮容,內部數據遷移異步進行,具備高可用能力,不怕擴容和縮容過程中出現故障。所有的租戶按需分配,彈性伸縮,具備高可用能力,類似于云數據庫服務。運維人員只需要維護少數幾套集群,就可以提供很多實例給業務使用,易用性非常好。
📣 4.報錯解決
在啟動集群的過程中,如如下報錯,表示一個是用戶最大打開文件數不夠
[ERROR] OBD-1007: (127.0.0.1) open files must not be less than 20000 (Current value: 1024)
linux系統默認open files數目為1024, 有時應用程序會報Too many open files的錯誤,是因為open files 數目不夠。這就需要修改ulimit和file-max。特別是提供大量靜態文件訪問的web服務器,緩存服務器(如squid), 更要注意這個問題。
1.修改file-max
# vi /etc/sysctl.conf, 加入以下內容,重啟生效
fs.file-max=102400
net.nf_conntrack_max = 1024000
net.netfilter.nf_conntrack_max = 1024000
2.修改ulimit的open file,系統默認的ulimit對文件打開數量的限制是1024
# vi /etc/security/limits.conf //加入以下配置,重啟即可生效
* hard nofile 102400
* soft nofile 102400
📣 4.尾聲
其實OceanBase 在社區和用戶的驅動下得到了飛速發展,能力不斷突破。核心內核引擎的 300 萬行代碼完全對外開放開源。并且不斷完善OceanBase 的生態工具,核心目標就是從“能用”到“更好用”,在易用性上怎樣做監控、怎樣做運維、怎樣做數據同步鏈路可視化是下足了功夫,不斷的提升數據庫自治能力。OceanBase 4.0 對多租戶的能力及 DBPaaS 能力做了提升,幫助客戶更好地進行資源整合,可以同時支持 CPU 的隔離及IOPS 的強隔離。測試表明,同等硬件的環境之下,OceanBase 社區版 4.0 版本的性能是 Greenplum6.22 的 5-6 倍,部分性能場景性能達到 20-60 倍。對比了 OceanBase 和 MySQL 的性能,當時使用的是 MySQL 企業版 8.0 與 OceanBase 的企業版4.0,在同等硬件條件下,OceanBase 企業版 4.0 的性能是 MySQL 企業版 8.0 的 1.9 倍。
單機分布式一體化架構要求兼具分布式的擴展性和集中式數據庫的功能和單機性能。事務的 ACID( Atomicity,Consistency,Isolation,Durability)是數據庫的基本要求,而分布式數據庫的難點就在于如何在異常場景下保證事務的 ACID,核心就是如何基于重做日志(Redo log)實現故障恢復,以及基于重做日志實現異常場景下分布式事務的原子性。OceanBase 4.0 克服了這些技術難題,實現了在線水平擴展的同時不增加分布式相關 overhead,從而能夠像集中式數據庫一樣部署在小規格的服務器上,做到單節點性能達到甚至超越集中式數據庫的水平。當然,OceanBase 每個版本走向成熟都離不開大量真實業務場景的打磨。OceanBase 4.0 的很多創新和想法來源于用戶的需求或者建議。真正的做到了與用戶和開發者共同成長。
從分布式數據庫的下游應用領域來看,當前分布式數據庫主要應用于金融、電信、互聯網等產生海量數據的行業,以及快遞物流、餐飲服務、旅游服務等C端客戶較多的行業。隨著金融業務數據量的高速增長,數據系統管理彈性需求提升、數據系統訪問查詢需求提升,都對數據的存儲、處理、挖掘都有更強的需求。當前金融應用層面開始普遍使用分布式架構,但數據庫層面卻仍然普遍采用集中式架構,這是由于金融行業對于數據存儲的要求較為嚴格。不過隨著分布式數據庫技術的持續發展,國產金融級交易型分布式數據庫已經在大型銀行核心信用卡、賬務系統等領域落地使用。互聯網是分布式數據庫最早開始使用的領域,這是由于互聯網領域數據量大,面臨的數據存儲成本高,同時電商大促等場景下對于數據庫的擴展性需求高,相信OceanBase分布式數據在用戶不斷的使用過程中,不段的改進和提升,肯定能夠受到互聯網企業的認可,引領國產數據庫向更貼合用戶需求的方向不斷壯大,真正實現去IOE。OceanBase社區版 4.0確實給了我很多驚喜和對OceanBase未來版本演進的期待。
總結
以上是生活随笔為你收集整理的OceanBase社区版4.0,给了我很多惊喜的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 返利系统功能详细介绍
- 下一篇: java多线程之Thread-Speci