引入 | 鯤鵬認證-openEuler歐拉操作系統-openGauss數據庫

開篇:寫在前面的話,每一篇摘文都以實際案例場景出發,周末抽空余時間記錄每一次mark歷程,在不一樣的業務實際場景下,針對項目階段所產生的變化,制定不一樣的技術方案。不論多么渺小的技術方案,放在其對應的場景下都有著不一樣的意義。實踐是檢驗真理的唯一標準,當真正實操過后參與討論,或許會讓你有一點新發現,希望對讀者在思考上有點不一樣的IDea,歡迎Join誰與說,熱衷擁抱新知識,旨在技術交流+心得分享->每天譯點曉知識。
資訊:繼鴻蒙之后,基于openEuler操作系統正式推出,鯤鵬計算生態迅速發展起來,鯤鵬920系列服務器CPU,鯤鵬920處理器兼容ARM架構,在性能、吞吐方面都有創新突破,支持國產-計算推向新高度,不僅CPU,操作系統配套歐拉openEuler,麒麟Kylin,鴻蒙就在我們身邊。
下文,小編主要以鯤鵬認證->數據庫openGauss為例->常見問答Q-A的方式闡述:

首先,獲取鯤鵬相關環境信息,

繼續查閱,FAQ操作手冊,

(注:鯤鵬操作系統及安裝,遠程終端連接可參考上述FAQ手冊,本文不重點闡述。)
接著,通過類似終端Xshell或Xftp工具連接鯤鵬云主機,

創建軟件包文件夾并授權,
mkdir -p /home/softchmod 755 -R /home/soft
創建當前部署路徑并授權,
mkdir /home/opengausschmod 777 /home/opengauss

查詢當前操作系統信息,
cat /etc/os-release
查詢當前硬件環境-鯤鵬架構服務器,
lscpu
進入軟件安裝包文件路徑,下載openGauss安裝包,
cd /home/softwget https://opengauss.obs.cn-south-1.myhuaweicloud.com/1.0.0/arm/openGauss-1.0.0-openEuler-64bit.tar.gz

進入當前部署路徑,解壓openGauss安裝包,
cd /home/opengausstar -zxvf openGauss-1.0.0-openEuler-64bit.tar.gz

輸入命令,yum install輔助安裝包,
yum install -y bzip2 libaio-devel flex bison ncurses-devel glibc-devel patch
(注:初始化openGauss安裝環境+python環境前,可提前查閱,更多請參考openGauss官方摘文,其中performance.sh腳本修改+LD_LIBRARY_PATH環境變量配置也可參考。)

export LD_LIBRARY_PATH=/home/opengauss/script/gspylib/clib:$LD_LIBRARY_PATHhttps://opengauss.org/en/docs/1.0.0/docs/installation/initializing-the-installation-environment.html#initializing-the-installation-environmenta-nameen-us_topic_0249784559a
系統默認python版本,

其中,python版本匹配,可自行根據當前環境參考修改,
vi gspylib/common/CheckPythonVersion.pyif not pythonVersion == (3, 6)更新為if not pythonVersion >= (3, 6)

在script文件夾下創建clusterconfig.xml文件,
vi script/clusterconfig.xml <?xml version="1.0" encoding="UTF-8"?> <ROOT> <!-- openGauss信息 --> <CLUSTER> <PARAM name="clusterName" value="opengauss_cluster" /> <PARAM name="nodeNames" value="opengauss_node1" /> <PARAM name="backIp1s" value="ip"/> <PARAM name="gaussdbAppPath" value="/home/opengauss/install/app" /> <PARAM name="gaussdbLogPath" value="/var/log/omm" /> <PARAM name="tmpMppdbPath" value="/home/opengauss/tmp" /> <PARAM name="gaussdbToolPath" value="/home/opengauss/install/om" /> <PARAM name="corePath" value="/home/opengauss/corefile" /> <!-- openGauss 類型簇類型。該參數是可選的。single-inst表示一個主節點多個備節點的獨立集群。--> <PARAM name="clusterType" value="single-inst"/> </CLUSTER> <DEVICELIST> <!-- opengauss_node1節點信息 --> <DEVICE sn="1000001"> <!-- 主機名。--> <PARAM name="name" value="opengauss_node1"/> <!-- AZ 名稱。該值為字符串,不能包含特殊字符,例如AZ1、AZ2、AZ3。--> <PARAM name="azName" value="AZ1"/> <!-- AZ優先。--> <PARAM name="azPriority" value="1"/> <!-- 如果服務器只有一個網卡可用,將backIP1和sshIP1配置成同一個IP。后端存儲網絡中主機的內網IP地址,所有的 openGauss 主機都在這個網絡上相互通信。--> <PARAM name="backIp1" value="ip"/> <!-- SSH可靠通道的外部IP地址。如果沒有使用外部網絡,您可以將其留空或將其設置為backIp1的值。--> <PARAM name="sshIp1" value="ip"/> <!--dbnode1--> <!-- 當前主機上要部署的數據庫節點數。--> <PARAM name="dataNum" value="1"/> <!-- 數據庫節點的基本端口號。默認值為40000。--> <PARAM name="dataPortBase" value="15400"/> <!-- 當前主機上存儲數據庫節點數據的目錄。它是一個數據存儲目錄,應該在數據盤上。--> <PARAM name="dataNode1" value="/home/opengauss/install/data/db1"/> <!-- 當前集群中同步模式的節點數。該參數是可選的。取值范圍為 0 到備用數據庫節點數。--> <PARAM name="dataNode1_syncNum" value="0"/> </DEVICE> </DEVICELIST> </ROOT>
接下來,初始化安裝環境,
./gs_preinstall -U omm -G dbgrp -X /home/opengauss/script/clusterconfig.xml

// 驅動-連接地址-賬號-密碼等信息String driverClassName = "org.postgresql.Driver";String url = "jdbc:postgresql://ip:8000/postgres";String username = "yxd179";String password = "yxd179";// 加載驅動Class.forName(driverClassName);// 獲取數據庫連接對象Connection con = (Connection) DriverManager.getConnection(url,username,password);// 獲取數據庫操作對象PreparesStatement ps = con.preparesStatement("SELECT COUNT(*) FROM TEST;");// 執行sqlResultSet rs= ps.executeQuery();// 這里還可以獲取到數據庫產品名稱DatabaseMetaData metaData = (DatabaseMetaData) con.getMetaData();// 這里為國產數據庫-適配,在xml指定國產數據庫的databaseId奠定基礎System.out.println("數據庫產品名稱:" + metaData.getDatabaseProductName());最后需關閉連接close,釋放資源->rs-ps-con.

其中,分頁的SQL拼裝原理,
protected BoundSql getPageBoundSql(Object parameterObject) {
String tempSql = sql;
String orderBy = PageHelper.getOrderBy();
if (orderBy != null) {
tempSql = OrderByParser.converToOrderBySql(sql, orderBy);
}
tempSql = localParser.get().getPageSql(tempSql);
return new BoundSql(configuration, tempSql, localParser.get().getPageParameterMapping(configuration, original.getBoundSql(parameterObject)), parameterObject);
}
(注:歡迎童鞋私信留言^_^,由于時間等原因,闡述不一定俱全,對于國產化這塊,搜索可用資源較少,希望對各位讀者,在適配鯤鵬-麒麟,歐拉操作系統以及國產化數據庫過程中能夠有所幫助,將不斷完善技術手冊-共享,涵蓋Java微服務+Kafka+Reids+Elastic中間件安裝FAQ手冊.)

其中,多數據庫連接工具,可選Tool->DBeaver,

文末:
在國產數據庫適配過程中,引出-思考:
當需要作多數據庫兼容適配的時候,若提前預估需要改動代碼的一個數量級,這時若需要對數據庫層中各個SQL方言編寫測試用例,作成功或失敗率評估,那么如何擁有一個Java版本,單元測試用例-代碼自動生成器,根據類名配置,即可知曉當前類中所有SQL方言的成功或失敗率^_^,記一次多SQL方言適配實踐過程-多數據庫
回顧更多精彩請點擊^_^,記一次國產數據庫適配思考過程-達夢
「 往期文章 」
Elasticsearch讀寫數據工作原理 | MySQL的重復數據插入處理
Elasticsearch進階篇 | 記kibana執行dsl腳本實戰過程
Kafka | 記一次修復Kafka分區所在broker宕機故障-引發當前分區不可用的思考過程
開源數據庫 | 記一次基于鯤鵬歐拉操作系統openGauss實踐過程
序列化 | Google的Gson與Alibaba的FastJson機制





