openGauss手工配置主備

1、初始化

創建一個操作系統用戶,例如postgres,為這個用戶設置PATH和LD_LIBRARY_PATH環境變量,指向opengauss/bin和opengauss/lib

export GAUSSHOME=/mnt/disk01/opengauss

export PATH=$GAUSSHOME/bin:$PATH

export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH

注意,GAUSSHOME這個環境變量一定要設置,它指向openGauss軟件的根目錄。

下文的操作系統命令,都是以postgres操作系統用戶執行的。

創建密碼文件,例如,密碼為Postgres@123,文件位置為/tmp/tmplk1xtqm1

echo Postgres@123> /tmp/tmplk1xtqm1

gs_ctl init -D _pg_root -o "--encoding=UTF8 --nodename=node1 --no-locale --username=postgres --pwfile=/tmp/tmplk1xtqm1"

-D _pg_root 是配置文件和數據庫數據存放的目錄,可以根據需要隨意起名,不要放到opengauss目錄下

--nodename 是節點名稱,隨便寫

--username 初始超級用戶名,也是隨意,建議postgres

--pwfile 前一步創建的密碼文件

初始化完成,啟動數據庫:

gs_ctl -D _pg_root start

啟動后ps -ef|grep gaussdb可以看到一個進程,這就是openGauss數據庫進程,注意,它只有一個進程:

登錄:

gsql -U postgres -W Postgres@123 -d postgres -r

-U指定用戶名

-W指定密碼

-d指定數據庫名

-r指定命令行中可以使用左右鍵

這個命令省略了主機IP和端口號,只能本機登錄

-p指定端口號(默認5432)

-h指定IP

初始化也創建了名為postgres的默認初始數據庫,各配置參數在_pg_root目錄下的postgresql.conf中,上面的步驟使用默認參數,如果想修改監聽端口、日志文件存儲的位置等,需要修改postgresql.conf然后重啟數據庫。

2、配主備

如果初始化啟動沒有問題,則準備配置主備。

將opengauss目錄復制到另一臺機器上(備庫),與主庫路徑可以不同,但建議最好相同,備庫同樣創建操作系統用戶postgres,設置環境變量GAUSSHOME、PATH和LD_LIBRARY_PATH,但是不初始化。

在主庫上,先停掉openGauss:

gs_ctl -D _pg_root stop

修改配置文件postgresql.conf:

port=5432

listen_addresses = '*'

修改replconninfo1參數:

對于一主一備(假設主庫地址172.32.155.57,備庫地址172.32.155.58),需要設置參數replconninfo1,其中localhost是自己的IP地址,localport、localheartbeatport、localservice是用來監聽備庫的端口,remotehost是備庫的IP地址,remoteport、remoteheartbeatport、remoteservice是監聽端口,這個信息是對稱的,即格式上主備相同。注意port參數,localport要比port大1,其它端口沒有限制,不要與已有服務器沖突。

replconninfo1 = 'localhost=172.32.155.57 localport=5433 localheartbeatport=5434 localservice=5435 remotehost=172.32.155.58 remoteport=5433 remoteheartbeatport=5434 remoteservice=5435'

然后修改主庫的_pg_root/pg_hba.conf,增加一行:(這是允許所有用戶的遠程連接,除了postgres)

host all all 0.0.0.0/0 sha256

然后作為主庫啟動:

gs_ctl -D _pg_root -M primary start

然后配置備庫,注意,備庫不需要初始化,也千萬不能初始化,它的數據目錄要用gs_basebackup從第一臺機器拉取過來,在備庫以操作系統用戶postgres執行:

mkdir _pg_root

chmod 0700 _pg_root

gs_basebackup --pgdata=_pg_root -X stream --username=postgres --host=172.32.155.57 --port=5432

此時 _pg_root目錄的內容與主庫 _pg_root的內容完全一樣,需要修改postgresql.conf里的replconninfo1:

replconninfo1 = 'localhost=172.32.155.58 localport=5433 localheartbeatport=5434 localservice=5435 remotehost=172.32.155.57 remoteport=5433 remoteheartbeatport=5434 remoteservice=5435'

然后作為備庫啟動:

gs_ctl -D _pg_root -M standby start

查詢主備狀態,在備庫或主庫機器上執行:

gs_ctl -D _pg_root query

還可以配置一主兩備,在第三個機器上創建postgres用戶,復制opengauss目錄,配置環境變量,執行gs_basebackup,這與前面配置備庫的過程大致相同,不同點是replconninfoXX參數,一主兩備的架構需要每個庫配置replconninfo1和replconninfo2兩個參數。

例如,主庫的IP為172.32.155.57,兩個備庫的IP為172.32.155.58和172.32.155.59,則三臺機器postgresql.conf中的replconninfo1和replconninfo2設置分別為:

172.32.155.57:

replconninfo1 = 'localhost=172.32.155.57 localport=5433 localheartbeatport=5434 localservice=5435 remotehost=172.32.155.58 remoteport=5433 remoteheartbeatport=5434 remoteservice=5435'

replconninfo2 = 'localhost=172.32.155.57 localport=5433 localheartbeatport=5434 localservice=5435 remotehost=172.32.155.59 remoteport=5433 remoteheartbeatport=5434 remoteservice=5435'

172.32.155.58:

replconninfo1 = 'localhost=172.32.155.58 localport=5433 localheartbeatport=5434 localservice=5435 remotehost=172.32.155.57 remoteport=5433 remoteheartbeatport=5434 remoteservice=5435'

replconninfo2 = 'localhost=172.32.155.58 localport=5433 localheartbeatport=5434 localservice=5435 remotehost=172.32.155.59 remoteport=5433 remoteheartbeatport=5434 remoteservice=5435'

172.32.155.59:

replconninfo1 = 'localhost=172.32.155.59 localport=5433 localheartbeatport=5434 localservice=5435 remotehost=172.32.155.57 remoteport=5433 remoteheartbeatport=5434 remoteservice=5435'

replconninfo2 = 'localhost=172.32.155.59 localport=5433 localheartbeatport=5434 localservice=5435 remotehost=172.32.155.58 remoteport=5433 remoteheartbeatport=5434 remoteservice=5435'

3、主備切換

在需要設置為主庫的機器上執行:

gs_ctl switchover -D _pg_root

如果成功,備庫會變為主庫,主庫會變為備庫

查看狀態主備狀態:

gs_ctl -D _pg_root query

4、備升主

當主庫故障時,人為將備庫切換為主庫稱為failover,與swithover的區別是,不會交換主備。在需要升為主庫的機器上執行:

gs_ctl failover -D _pg_root

failover之后是單機的可讀寫的庫。

5、故障庫重新加入

在需要重新加入的機器上,執行:

gs_ctl build -D _pg_root -b auto

它會同步主庫的數據目錄_pg_root并且作為備機啟動。

有個前提,就是故障庫上,原來的_pg_root還在,只是數據陳舊了,如果_pg_root不在了,或是同步失敗,就需要刪除_pg_root,按照前面gs_basebackup的過程走一遍了,即執行gs_basebackup后修改postgresql.conf里的replconninfo1、replconninfo2,再作為standby啟動。

6、參數修改

配置參數在postgresql.conf,訪問控制配置在pg_hba.conf,可以先在主庫修改,然后在備庫上執行:

gs_ctl build -D _pg_root -b auto

這個操作會同步postgresql.conf和pg_hba.conf中的配置(replconninfo1、replconninfo2不會同步)。

否則需要同時手動修改主備庫的postgresql.conf和pg_hba.conf

postgresql.conf中的參數分為sighup類型和postmaster類型,sighup類型參數不需要重啟數據庫實例就可以生效,postmaster類型需要重啟數據庫實例才能生效。

可以用命令 gs_guc修改postgresql.conf 文件,例如,設置參數 audit_enabled:

gs_guc -D _pg_root/ set -c audit_enabled=on

查看參數 audit_enabled:

gs_guc check -D _pg_root/ -c audit_enabled

gs_guc -D _pg_root/ set 只是修改了postgresql.conf,正在運行的openGauss中并沒有生效,對于sighup類型的參數,可以用gs_guc reload 修改并加載:

gs_guc reload -D _pg_root/ -c audit_enabled=on

但是對于postmaster類型的參數,gs_guc reload也不能使之生效,只能重啟openGauss。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/78408.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/78408.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/78408.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CSS預處理器對比:Sass、Less與Stylus如何選擇

引言 CSS預處理器已成為現代前端開發的標準工具,它們通過添加編程特性來增強純CSS的功能,使樣式表更加模塊化、可維護且高效。在眾多預處理器中,Sass、Less和Stylus是三個最流行的選擇,它們各自擁有獨特的語法和功能特點。本文將深…

基于Docker、Kubernetes和Jenkins的百節點部署架構圖及信息流描述

以下是基于Docker、Kubernetes和Jenkins的百節點部署架構圖及信息流描述,使用文本和Mermaid語法表示: 架構圖(Mermaid語法) #mermaid-svg-WWCAqL1oWjvRywVJ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-WWCAq…

js中get,set用法

1、作為對象的訪問器屬性 //使用Object.definePropertylet obj {_a:123};Object.defineProperty(obj, "a", {get() {return this._a;},set(val) {this._aval},});console.log(obj.a); //123obj.a456console.log(obj.a) // 456 //使用對象字面量let obj {_a:123,ge…

Steam游戲服務器攻防全景解讀——如何構建游戲級抗DDoS防御體系?

Steam游戲服務器的DDoS攻防體系設計,從協議層漏洞利用到業務連續性保障,深度拆解反射型攻擊、TCP狀態耗盡等7類威脅場景。基于全球15個游戲廠商攻防實戰數據,提供包含邊緣節點調度、AI流量指紋識別、SteamCMD加固配置的三維防護方案&#xff…

【AI】SpringAI 第四彈:接入本地大模型 Ollama

Ollama 是一個開源的大型語言模型服務工具。它的主要作用是幫助用戶快速在本地運行大模型, 簡化了在 Docker 容器內部署和管理大語言模型(LLM)的過程。 1. 確保Ollama 已經啟動 # 查看幫助文檔 ollama -h# 自動下載并啟動 ollama run deeps…

大語言模型的評估指標

目錄 一、混淆矩陣 1. 混淆矩陣的結構(二分類為例) 2.從混淆矩陣衍生的核心指標 3.多分類任務的擴展 4. 混淆矩陣的實戰應用 二、分類任務核心指標 1. Accuracy(準確率) 2. Precision(精確率) 3. …

SpringBoot Gradle插件:構建與打包配置

文章目錄 引言一、Spring Boot Gradle插件基礎二、依賴管理與配置三、應用打包配置四、啟動腳本與運行配置五、多環境構建與配置六、集成Docker與云原生支持七、實踐案例:自定義Spring Boot應用構建總結 引言 在Java生態系統中,Gradle作為一種靈活且強大…

Vue3 組件通信與插槽

Vue3 組件通信方式全解(10種方案) 一、組件通信方式概覽 通信方式適用場景數據流向復雜度Props/自定義事件父子組件簡單通信父 ? 子?v-model 雙向綁定父子表單組件父 ? 子??Provide/Inject跨層級組件通信祖先 → 后代??事件總線任意組件間通信任…

【KWDB 創作者計劃】_嵌入式硬件篇---數字電子器件

文章目錄 前言一、系列前綴(如 "74" 或 "54")74(商用級)54(工業級)二、邏輯家族(如 "LS"、"HC"、"HCT" 等)TTL(晶體管-晶體管邏輯)家族CMOS(互補金屬氧化物半導體)家族BiCMOS(雙極 CMOS)家族三、功能編號(如…

黃勇的《架構探險:從Java到大數據》內容詳解

《架構探險:從Java到大數據》內容詳解 1. 書籍核心主題 黃勇的《架構探險:從Java到大數據》是一本系統性探討架構設計演進的著作,結合Java技術棧和大數據場景,深入分析了從單體架構到分布式、微服務、云原生的演進路徑&#xff0…

【動手學強化學習】番外8-IPPO應用框架學習與復現

文章目錄 一、待解決問題1.1 問題描述1.2 解決方法 二、方法詳述2.1 必要說明(1)MAPPO 與 IPPO 算法的區別在于什么地方?(2)IPPO 算法應用框架主要參考來源 2.2 應用步驟2.2.1 搭建基礎環境2.2.2 IPPO 算法實例復現&am…

驅動開發硬核特訓 · Day 17:深入掌握中斷機制與驅動開發中的應用實戰

🎥 視頻教程請關注 B 站:“嵌入式 Jerry” 一、前言 在嵌入式驅動開發中,“中斷”幾乎無處不在。無論是 GPIO 按鍵、串口通信、網絡設備,還是 SoC 上的各種控制器,中斷都扮演著核心觸發機制的角色。對中斷機制掌握程度…

通過門店銷售明細表用PySpark得到每月每個門店的銷冠和按月的同比環比數據

假設我在Amazon S3上有銷售表的Parquet數據文件的路徑,包含ID主鍵、門店ID、日期、銷售員姓名和銷售額,需要分別用PySpark的SparkSQL和Dataframe API統計出每個月所有門店和各門店銷售額最高的人,不一定是一個人,以及他所在的門店…

PostgreSQL 常用日志

PostgreSQL 常用日志詳解 PostgreSQL 提供了多種日志類型&#xff0c;用于監控數據庫活動、排查問題和優化性能。以下是 PostgreSQL 中最常用的日志類型及其配置和使用方法。 一、主要日志類型 日志類型文件位置主要內容用途服務器日志postgresql-<日期>.log服務器運行…

MySQL 存儲過程:解鎖數據庫編程的高效密碼

目錄 一、什么是存儲過程?二、創建存儲過程示例 1:創建一個簡單的存儲過程示例 2:創建帶輸入參數的存儲過程示例 3:創建帶輸出參數的存儲過程三、調用存儲過程調用無參數存儲過程調用帶輸入參數的存儲過程調用帶輸出參數的存儲過程四、存儲過程中的流控制語句示例 1:使用 …

基于STM32的物流搬運機器人

功能&#xff1a;智能循跡、定距夾取、顏色切換、自動跟隨、自動避障、聲音夾取、藍牙遙控、手柄遙控、顏色識別夾取、循跡避障、循跡定距…… 包含內容&#xff1a;完整源碼、使用手冊、原理圖、視頻演示、PPT、論文參考、其余資料 資料只私聊

pg_jieba 中文分詞

os: centos 7.9.2009 pg: 14.7 pg_jieba 依賴 cppjieba、limonp pg_jieba 下載 su - postgreswget https://github.com/jaiminpan/pg_jieba/archive/refs/tags/vmaster.tar.gzunzip ./pg_jieba-master cd ~/pg_jieba-mastercppjieba、limonp 下載 su - postgrescd ~/pg_jie…

基于Python+Flask的MCP SDK響應式文檔展示系統設計與實現

以下是使用Python Flask HTML實現的MCP文檔展示系統&#xff1a; # app.py from flask import Flask, render_templateapp Flask(__name__)app.route(/) def index():return render_template(index.html)app.route(/installation) def installation():return render_templa…

【“星睿O6”AI PC開發套件評測】GPU矩陣指令算力,GPU帶寬和NPU算力測試

【“星睿O6”AI PC開發套件評測】GPU矩陣指令算力&#xff0c;GPU帶寬和NPU算力測試 安謀科技、此芯科技與瑞莎計算機聯合打造了面向AI PC、邊緣、機器人等不同場景的“星睿O6”開發套件 該套件異構集成了Armv9 CPU核心、Arm Immortalis? GPU以及安謀科技“周易”NPU 開箱和…

【Go語言】RPC 使用指南(初學者版)

RPC&#xff08;Remote Procedure Call&#xff0c;遠程過程調用&#xff09;是一種計算機通信協議&#xff0c;允許程序調用另一臺計算機上的子程序&#xff0c;就像調用本地程序一樣。Go 語言內置了 RPC 支持&#xff0c;下面我會詳細介紹如何使用。 一、基本概念 在 Go 中&…