Obd部署三副本叢集

角色

機器

備註

Obd

xxx。xx。153。210

中控機、obclient

Observer01

xxx。xx。153。211

Oceanbase zone1

Observer02

xxx。xx。153。212

Oceanbase zone2

Observer03

xxx。xx。153。213

Oceanbase zone3

Obproxy

xxx。xx。153。211

Oceanbase 反向代理

Obproxy

xxx。xx。153。212

Oceanbase 反向代理

Obproxy

xxx。xx。153。213

Oceanbase 反向代理

/data資料目錄

/redo日誌目錄

系統引數調整參考手動部署ob叢集的系統調整部分。

叢集架構規劃

OceanBase 以叢集形態執行,生產環境最小規模是 3 臺伺服器(節點)。整個集群裡,業務資料會有三份,所以也叫三副本。 學習測試的時候,可以部署單副本單節點 OceanBase 叢集。 這裡特別說明的是,單副本跟單節點並不完全對等。單副本單節點是最小叢集規模,單副本也是可以擴容為多個節點,整個集群裡資料依然是一份,所以叫單副本。

生產環境,每個機器上啟動一個 observer 程序,所以一臺機器就對應一個節點。學習環境,一個機器可以啟動多個 observer 程序,模擬多個節點。每個節點的監聽埠(預設是 2881 和 2882 )、資料總目錄是獨立的,互不衝突。每個節點程序啟動的最小記憶體是 10G ,空間需要至少 10G 。

所以,如果只有一臺伺服器,如果機器可用記憶體不足 10G, 則不能啟動 observer 程序。如果可用記憶體在10G ~ 20G 之間,則只可以啟動一個 observer 程序。如果可用記憶體在 20G ~ 30G 之間,可以啟動 2 個 observer 程序。如果可用記憶體超過 30G ,則可以啟動 3個 observer 程序。當然,記憶體充足的時候,也可以調大每個 observer 程序能獲取的記憶體。記憶體越大,節點的資源能力就越大。如果有三臺機器,就沒必要在一個機器上模擬多個節點了。

除了要部署 observer 程序,還需要部署 obproxy 。 obproxy 也是單程序軟體,是訪問 OceanBase 的反向代理。雖然 observer 節點都可以直接訪問,生產環境還是建議透過 obproxy 訪問 OceanBase 叢集。 obproxy 程序部署位置沒有要求。可以部署在應用伺服器上,也可以部署在獨立的機器上,或者部署在 OceanBase 機器上。obproxy 可以部署多個,生產環境建議至少部署兩個。

使用者規劃

OceanBase 本質上是一個軟體,可以執行在任意使用者下。OceanBase 軟體包預設解壓目錄是在 /home/admin/ 下,生產環境預設也是安裝在使用者 admin 下。社群版的軟體 RPM 包也是這個特點,支援部署在任意使用者的任意目錄下。

為了安全起見,我們不建議在 root 使用者下直接部署。所以後面都以部署在使用者 admin 下為前提。在部署之前初始化環境的時候,可能需要修改作業系統的配置,或者設定目錄的許可權等,這些操作需要 root 使用者許可權。不同客戶內部主機登入規範不一樣,可以透過 su 切換到 root 使用者,或者給 admin 使用者增加 sudo 許可權。

目錄規劃

跟 observer 有關的目錄有好幾個:

軟體安裝目錄。

如果是安裝 OceanBase 的 RPM 包,則需要提前建立好使用者 admin ,並被自動安裝在目錄 /home/admin/oceanbase 下。

如果是透過OBD 軟體自動化安裝,則會將 RPM 包解壓到 使用者 HOME 目錄的隱藏資料夾 。obd 下,

。obd/repository/oceanbase-ce/3。1。0/afd11d52f83eef4b456d77969fde620c4bfba85e 。這種方式是可以同時部署多個版本。

磁碟劃分:

fdisk -lpvcreate /dev/sdbvgcreate obvg /dev/sdblvcreate -n redo -L 30G obvgmkfs。ext4 /dev/mapper/obvg-redolvcreate -n data -L 50G obvgmkfs。ext4 /dev/mapper/obvg-datamkdir /datamkdir /redoecho “/dev/mapper/obvg-redo /redo ext4 defaults 0 0”>>/etc/fstabecho “/dev/mapper/obvg-data /data ext4 defaults 0 0”>>/etc/fstabmount –a檢視目錄大小chown -R admin。admin /data /redoadmin使用者mkdir –p /data/ob01mkdir –p /redo/ob01

Obd軟體安裝

在obd伺服器上面進行軟體下載

離線安裝

筆記本下載對應的軟體包後上傳到admin使用者家目錄下的soft資料夾

下載連線https://mirrors。aliyun。com/oceanbase/community/stable/el/7/x86_64/

Obd部署三副本叢集

[admin@obd soft]$ lslibobclient-2。0。0-2。el7。x86_64。rpm ob-deploy-1。2。1-9。el7。x86_64。rpm oceanbase-ce-3。1。2-10000392021123010。el7。x86_64。rpmobclient-2。0。0-2。el7。x86_64。rpm obproxy-3。1。0-1。el7。x86_64。rpm oceanbase-ce-libs-3。1。2-10000392021123010。el7。x86_64。rpm[admin@obd soft]$ sudo rpm -ivh ob-deploy-1。2。1-9。el7。x86_64。rpmWe trust you have received the usual lecture from the local SystemAdministrator。 It usually boils down to these three things:#1) Respect the privacy of others。#2) Think before you type。#3) With great power comes great responsibility。[sudo] password for admin:warning: ob-deploy-1。2。1-9。el7。x86_64。rpm: Header V4 RSA/SHA1 Signature, key ID e9b4a7aa: NOKEYPreparing。。。 ################################# [100%]Updating / installing。。。1:ob-deploy-1。2。1-9。el7 ################################# [100%]Installation of obd finished successfullyPlease source /etc/profile。d/obd。sh to enable it[admin@obd soft]$ id adminuid=1001(admin) gid=1001(admin) groups=1001(admin),10(wheel)[admin@obd soft]$ which obd/bin/obd[admin@obd soft]$ source /etc/profile。d/obd。sh[admin@obd soft]$ which obd/bin/obd[admin@obd soft]$

軟體複製到本地倉庫

[admin@obd ~]$ obd mirror clone soft/*。rpmname: libobclientversion: 2。0。0release:2。el7arch: x86_64md5: f73cae67e2ff5be0682ac2803aba33a7ed26430eadd soft/libobclient-2。0。0-2。el7。x86_64。rpm to local mirrorname: obclientversion: 2。0。0release:2。el7arch: x86_64md5: 1d2c3ee31f40b9d2fbf97f653f549d896b7e7060add soft/obclient-2。0。0-2。el7。x86_64。rpm to local mirrorname: ob-deployversion: 1。2。1release:9。el7arch: x86_64md5: 219823e1119d37f59ce2c906b44e45605acfd3f3add soft/ob-deploy-1。2。1-9。el7。x86_64。rpm to local mirrorname: obproxyversion: 3。1。0release:1。el7arch: x86_64md5: 0b17cf0459a3b53c5a2febb6572894d183154c64add soft/obproxy-3。1。0-1。el7。x86_64。rpm to local mirrorname: oceanbase-ceversion: 3。1。2release:10000392021123010。el7arch: x86_64md5: 7fafba0fac1e90cbd1b5b7ae5fa129b64dc63aedadd soft/oceanbase-ce-3。1。2-10000392021123010。el7。x86_64。rpm to local mirrorname: oceanbase-ce-libsversion: 3。1。2release:10000392021123010。el7arch: x86_64md5: 94fff0ab31de053051dba66039e3185fa390cad5add soft/oceanbase-ce-libs-3。1。2-10000392021123010。el7。x86_64。rpm to local mirror

[admin@obd ~]$ obd mirror list local

檢視本地倉庫軟體

Obd部署三副本叢集

線上安裝

首先在中控機上部署 OBD 軟體。如果中控機能上網,則可以直接新增 OceanBase 的倉庫,使用 YUM 安裝。

yum install -y yum-utilsyum-config-manager ——add-repo https://mirrors。aliyun。com/oceanbase/OceanBase。repoyum install -y ob-deploy

obd執行部署叢集

[admin@obd soft]$ obd cluster deploy obce-3zones -c obce-3zone。yamloceanbase-ce-3。1。2 already installed。obproxy-3。2。0 already installed。+——————————————————————————————————————————————-+| Packages |+————————+————-+————————————-+——————————————————————+| Repository | Version | Release | Md5 |+————————+————-+————————————-+——————————————————————+| oceanbase-ce | 3。1。2 | 10000392021123010。el7 | 7fafba0fac1e90cbd1b5b7ae5fa129b64dc63aed || obproxy | 3。2。0 | 1。el7 | 8d5c6978f988935dc3da1dbec208914668dcf3b2 |+————————+————-+————————————-+——————————————————————+Repository integrity check okParameter check okOpen ssh connection okRemote oceanbase-ce-3。1。2-7fafba0fac1e90cbd1b5b7ae5fa129b64dc63aed repository install okRemote oceanbase-ce-3。1。2-7fafba0fac1e90cbd1b5b7ae5fa129b64dc63aed repository lib check okRemote obproxy-3。2。0-8d5c6978f988935dc3da1dbec208914668dcf3b2 repository install okRemote obproxy-3。2。0-8d5c6978f988935dc3da1dbec208914668dcf3b2 repository lib check okCluster status check okInitializes observer work home okInitializes obproxy work home okobce-3zones deployed

啟動和初始化叢集

[admin@obd soft]$ obd cluster list+————————————————————————————————————+| Cluster List |+——————-+————————————————————+————————-+| Name | Configuration Path | Status (Cached) |+——————-+————————————————————+————————-+| obce-3zones | /home/admin/。obd/cluster/obce-3zones | deployed |+——————-+————————————————————+————————-+[admin@obd soft]$ obd cluster start obce-3zonesGet local repositories and plugins okOpen ssh connection okLoad cluster param plugin okCheck before start observer okCheck before start obproxy okStart observer okobserver program health check okConnect to observer okInitialize clusterCluster bootstrap okWait for observer init ok+——————————————————————————+| observer |+————————+————-+————+————-+————+| ip | version | port | zone | status |+————————+————-+————+————-+————+| xxx。xx。153。211 | 3。1。2 | 2881 | zone1 | active || xxx。xx。153。212 | 3。1。2 | 2881 | zone2 | active || xxx。xx。153。213 | 3。1。2 | 2881 | zone3 | active |+————————+————-+————+————-+————+Start obproxy okobproxy program health check okConnect to obproxy okInitialize cluster+——————————————————————————+| obproxy |+————————+————+————————-+————+| ip | port | prometheus_port | status |+————————+————+————————-+————+| xxx。xx。153。211 | 2883 | 2884 | active || xxx。xx。153。212 | 2883 | 2884 | active || xxx。xx。153。213 | 2883 | 2884 | active |+————————+————+————————-+————+obce-3zones running

[admin@obd soft]$

Obd部署三副本叢集

Obd部署三副本叢集

Obd部署三副本叢集

檢查叢集狀態

IPS=“ xxx。xx。153。213 xxx。xx。153。211 xxx。xx。153。212”for ob in $IPS;do echo $ob; ssh $ob “ps -ef | grep observer | grep -v grep ”; done檢查監聽狀態

[admin@obd soft]$ for ob in $IPS;do echo $ob; ssh $ob “netstat -ntlp”; done

Obd部署三副本叢集

安裝tree工具

[root@obd ~]# for ob in $IPS;do echo $ob; ssh $ob “yum -y install tree”; done[admin@obd ~]$ obd cluster display obce-3zonesGet local repositories and plugins okOpen ssh connection okCluster status check okConnect to observer okWait for observer init ok+——————————————————————————+| observer |+————————+————-+————+————-+————+| ip | version | port | zone | status |+————————+————-+————+————-+————+| xxx。xx。153。211 | 3。1。2 | 2881 | zone1 | active || xxx。xx。153。212 | 3。1。2 | 2881 | zone2 | active || xxx。xx。153。213 | 3。1。2 | 2881 | zone3 | active |+————————+————-+————+————-+————+Connect to obproxy ok+——————————————————————————+| obproxy |+————————+————+————————-+————+| ip | port | prometheus_port | status |+————————+————+————————-+————+| xxx。xx。153。211 | 2883 | 2884 | active || xxx。xx。153。212 | 2883 | 2884 | active || xxx。xx。153。213 | 2883 | 2884 | active |+————————+————+————————-+————+

Obd伺服器安裝client

[admin@obd soft]$ sudo rpm -ivh obclient-2。0。0-2。el7。x86_64。rpm libobclient-2。0。0-2。el7。x86_64。rpmwarning: obclient-2。0。0-2。el7。x86_64。rpm: Header V4 RSA/SHA1 Signature, key ID e9b4a7aa: NOKEYPreparing。。。 ################################# [100%]Updating / installing。。。1:libobclient-2。0。0-2。el7 ################################# [ 50%]2:obclient-2。0。0-2。el7 ################################# [100%]

連線叢集

Obd部署三副本叢集

[admin@obd soft]$ obclient -hxxx。xx。153。211 -uroot@sys -P2881 -p0EI5N08d -c -A oceanbaseWelcome to the OceanBase。 Commands end with ; or \g。Your MySQL connection id is 3221546602Server version: 5。7。25 OceanBase 3。1。2 (r10000392021123010-d4ace121deae5b81d8f0b40afbc4c02705b7fc1d) (Built Dec 30 2021 02:47:29)Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others。Type ‘help;’ or ‘\h’ for help。 Type ‘\c’ to clear the current input statement。MySQL [oceanbase]> quitBye[admin@obd soft]$ obclient -hxxx。xx。153。211 -uroot@sys#obce-3zones -P2883 -p0EI5N08d -c -A oceanbaseWelcome to the OceanBase。 Commands end with ; or \g。Your MySQL connection id is 12Server version: 5。6。25 OceanBase 3。1。2 (r10000392021123010-d4ace121deae5b81d8f0b40afbc4c02705b7fc1d) (Built Dec 30 2021 02:47:29)Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others。Type ‘help;’ or ‘\h’ for help。 Type ‘\c’ to clear the current input statement。MySQL [oceanbase]>