作者:葛二萌
1.前言
本文共分為openGauss單機版安裝部分和連接環境搭建部分,提供了通過go語言來連接openGauss的一種方案,openGauss現在也有了基于go的驅動,但是我覺得ODBC的方式更為通用一些,也不應被丟棄,因此本文使用go通過ODBC來連接openGauss,
硬體及軟體環境:
硬體環境:虛擬機的記憶體8GB,4核心CPU,900G磁盤(非必須)軟體環境:CentOS7.6資料庫版本:opengauss2.0企業版:openGauss-2.0.0-CentOS-64bit-all.tar.gz
2.openGauss單機版安裝:
2.1. 關閉防火墻
#停止firewallsystemctl stop firewalld.service
#禁止firewall開機啟動
systemctl disable firewalld.service
#檢查防火墻是否關閉,
systemctl status firewalld
說明:
若防火墻狀態顯示為active (running),則表示防火墻未關閉,
若防火墻狀態顯示為inactive (dead),則無需再關閉防火墻,
2.2. 設定時區和時間將各資料庫節點的時區設定為相同時區,可以將/usr/share/zoneinfo/目錄下的時區檔案拷貝為/etc/localtime檔案,
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2.3. 關閉SELinux
[root@node1 ~]#
getenforce
sed -i 's/^SELINUX=./SELINUX=disabled/’ /etc/selinux/config
setenforce 0
getenforce
#檢查
cat /etc/selinux/config|grep SELINUX
輸出:# SELINUX= can take one of these three values:SELINUX=disabled# SELINUXTYPE= can take one of three values:
SELINUXTYPE=targeted[root@node1 ~]#
2.4. 修改/etc/hosts
#添加一行
cat >>/etc/hosts <<EOF
192.168.183.28 node1
EOF
2.5. 配置庫路徑
cat>> /etc/profile<<EOF
export LD_LIBRARY_PATH=/opt/software/openGauss/script/gspylib/clib:KaTeX parse error: Expected 'EOF', got '&' at position 41: …></pre><h2>2.6.&?nbsp;<b>關閉</b><… python3 -V
Python 3.6.8
其他軟體包,如需要可以安裝(也可以直接使用安裝):
yum install -y libaio-devel flex bison ncurses-devel glibc-devel patch redhat-lsb-core readline-devel
yum install openssl -y
yum install -y java-1.8.0-openjdk* psmisc bzip2 python3 python3-devel lksctp*
reboot #重新啟動服務器
<o:p></o:p>
2.10. 創建安裝包的存放目錄
mkdir -p /opt/software/openGauss
chmod 755 -R /opt/software
2.11. 下載openGauss資料庫軟體下載地址為:https://opengauss.org/zh/download.html
下載完成后上傳到centos中,
2.12. 解壓縮openGauss DBMS介質
cd /opt/software/openGauss
tar -zxvf openGauss-2.0.0-CentOS-64bit-all.tar.gz
tar -zxvf openGauss-2.0.0-CentOS-64bit-om.tar.gz
2.13. 創建XML檔案下面是xml檔案官方模板,一般只需要改一下自己centos機器的IP
cat > clusterconfig.xml<<EOF
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<!-- openGauss整體資訊 -->
<CLUSTER>
<!-- 資料庫名稱 -->
<PARAM name="clusterName" value="dbCluster" />
<!-- 資料庫節點名稱(hostname) -->
<PARAM name="nodeNames" value="node1" />
<!-- 資料庫安裝目錄-->
<PARAM name="gaussdbAppPath" value="/opt/huawei/install/app" />
<!-- 日志目錄-->
<PARAM name="gaussdbLogPath" value="/var/log/omm" />
<!-- 臨時檔案目錄-->
<PARAM name="tmpMppdbPath" value="/opt/huawei/tmp" />
<!-- 資料庫工具目錄-->
<PARAM name="gaussdbToolPath" value="/opt/huawei/install/om" />
<!-- 資料庫core檔案目錄-->
<PARAM name="corePath" value="/opt/huawei/corefile" />
<!-- 節點IP,與資料庫節點名稱串列一一對應 -->
<PARAM name="backIp1s" value="192.168.183.28"/>
</CLUSTER>
<!-- 每臺服務器上的節點部署資訊 -->
<DEVICELIST>
<!-- 節點1上的部署資訊 -->
<DEVICE sn="node1">
<!-- 節點1的主機名稱 -->
<PARAM name="name" value="node1"/>
<!-- 節點1所在的AZ及AZ優先級 -->
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<!-- 節點1的IP,如果服務器只有一個網卡可用,將backIP1和sshIP1配置成同一個IP -->
<PARAM name="backIp1" value="192.168.183.28"/>
<PARAM name="sshIp1" value="192.168.183.28"/>
<!--dbnode-->
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="26000"/>
<PARAM name="dataNode1" value="/opt/huawei/install/data/dn"/>
<PARAM name="dataNode1_syncNum" value="0"/>
</DEVICE>
</DEVICELIST>
</ROOT>
EOF
2.14. 檢查環境變數
echo KaTeX parse error: Expected 'EOF', got '&' at position 115: …wps1.jpgheight: 0.5782em; vertical-align: -0.0391em;"></code></pre><p><b>啟動數據庫(安裝完默認已經啟動):</b></p><pre><code>[omm@node1db1] gs_om -t start
Starting cluster.
=========================================
[SUCCESS] node1:[2021-04-01 16:50:13.969][29784][][gs_ctl]: gs_ctl started,datadir is /opt/huawei/install/data/dn<o:p></o:p>
[2021-04-01 16:50:13.974][29784][][gs_ctl]: another server might be running; Please use the restart command
=========================================Successfully started.使用omm用戶執行下面的操作,
登錄到資料庫,
gsql -d postgres -p 26000 -r
#執行上條命令會出現以下提示內容,gsql ((openGauss 2.0.0 build 78689da9) compiled at 2021-03-31 21:04:03 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type “help” for help.
其他常見的基本命令
\q #退出會話
gs_om -t stop #關閉資料庫
gs_om -t restart #重啟資料庫
更多操作使用說明見官方檔案:https://opengauss.org/zh/docs/2.1.0/docs/Quickstart/Quickstart.html
3. 連接環境搭建
3.1 安裝go語言環境
安裝go語言,安裝包下載地址:https://dl.google.com/go/go1.17.5.linux-amd64.tar.gz
上傳壓縮包后解壓: tar -C /usr/local/ -xvf go1.11.4.linux-amd64.tar.gz
配置環境變數
vi /etc/profile
追加以下內容:
export PATH=$PATH:/usr/local/go/bin
讓環境變數配置生效:
source /etc/profile
驗證go是否安裝成功:
go version
出現以下內容代表安裝成功(我裝的是1.16版本,以你下載的安裝包版本為準):
3.2 搭建unixODBC環境
下載安裝unixODBC:
yum install unixODBC
yum install unixODBC-devel #非必須
下載openGauss ODBC驅動ODBC_2.1.0:https://opengauss.org/zh/download.html
下載之后上傳到centos機器上/soft路徑(該路徑不是必須) ,把驅動拷貝到指定目錄下:
cd /soft
tar -xzvf openGauss-2.1.0-ODBC.tar.gz
cp lib/* /usr/local/libcp odbc/lib/* /usr/local/lib
安裝完unixODBC后,/etc目錄下會有一個檔案: odbcinst.ini ,接下來配置這個檔案
vim odbcinst.ini
將下列內容添加進去:
[openGauss]
Driver64=/usr/local/lib/psqlodbcw.so
setup=/usr/local/lib/psqlodbcw.so
另外在/etc下編輯odbc.ini(如沒有則新建):
vim /etc/odbc.ini
將下列內容拷貝進去:
[openGaussODBC]
Driver=openGauss
Servername=192.168.183.28
Database=postgres
Username=gem
Password=huawei@1234
Port=26000
DatabaseName=postgres
注,上面要填自己的IP,資料庫用戶名和口令,且不能是omm初始用戶,
到此配置基本完成了,下面驗證odbc是否可以openGauss(資料庫要開啟):
isql -v openGaussODBC
若出現以下內容代表配置ok,連接沒有問題:
3.3 撰寫go語言通過ODBC連接openGauss的測驗腳本并執行驗證
vim test_gauss.go :
package main
import (
“database/sql”
“fmt”
_ “odbc/driver”
)
func main() {
fmt.Printf("%s\n", “創建資料庫鏈接”)
conn, err := sql.Open(“odbc”,“DSN=openGaussODBC;UID=gem;PWD=huawei@1234”)
if err != nil {
fmt.Println(“鏈接錯誤”)
return
}
defer conn.Close()
fmt.Printf("%s\n", “構建查詢”)
stmt, err := conn.Prepare(“select 666;”)
if err != nil {
fmt.Println(“查詢例外:”, err)
return
}
defer stmt.Close()
row, err := stmt.Query()
if err != nil {
fmt.Println(“查詢錯誤:”, err)
}
defer row.Close()
fmt.Printf("%s\n", “資料集顯示”)
for row.Next() {
var id int
if err := row.Scan(&id); err == nil {
fmt.Println(id)
}
在腳本路徑下執行測驗:
go run test_gauss.go
若出現以下結果表明連接成功,
4.總結
個人認為,比較容易出錯的點是,虛擬機記憶體要大于等于8GB,unixODBC兩個組態檔odbc.ini和odbcinst.ini的配置稍麻煩,最后,資料庫一定要start才能連接成功,個人有一次犯了一次這個錯誤,雖然是很淺顯的道理哈哈,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/393183.html
標籤:其他
