日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

PostgreSQL(一)PostgreSQL一主二从集群部署

發布時間:2025/3/19 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PostgreSQL(一)PostgreSQL一主二从集群部署 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(一)基礎準備

1.1? 創建三臺虛擬機

虛擬機名

IP

hostname

主從劃分

pgpool0

192.168.149.236

node236

主節點

pgpool1

192.168.149.237

node237

從節點1

pgpool2

192.168.149.238

node238

從節點2

?1.2? 創建三臺虛擬機

對于本文部署涉及到的軟件版本如下表所示。

操作系統發行版本

CentOS Linux release 7.8.2003 (Core)

操作系統版本

Linux version 3.10.0-1127.el7.x86_64

PostgreSQL

9.2.24

pgpool-II

3.4.6

本地虛擬化軟件

VMware? Workstation 15 Pro

(二)安裝軟件包?

2.1??查看軟件版本

安裝之前首先查看軟件是否已經安裝。輸入命令

rpm -qa | grep postgresql

一般來講,從虛擬機安裝系統,自然是不會安裝PostgreSQL。因此輸出為空。

安裝軟件包有多種方式可選,對于PostgreSQL本文選用的方式是盡量選擇yum安裝默認版本的軟件,以便后期維護。

2.2?安裝與初始化pogstresql

三臺機器安裝過程相同。

(1)安裝postgresql postgresql-server

yum install -y postgresql postgresql-server

(2)查看安裝結果。

rpm -qa | grep postgresql

(3)初始化

service postgresql initdb

(4)啟動

systemctl start postgresql

(5)開放端口(如果防火墻已經關閉則可以省略)

iptables -I INPUT -p tcp --dport 5432 -j ACCEPT

(6)驗證安裝結果,首先輸入 su - postgres切換用戶,然后輸入psql,如下圖所示,則安裝成功。

?

2.3 主節點配置

(1)創建用于主從訪問的用戶

# su - postgres

-bash-4.2$ psql

postgres=# create role repl login replication encrypted password 'postgres';

結果如圖所示。

(2)在pg_hba.conf和postgresql.conf中增加配置內容

pg_hba.conf是對訪問權限的以下配置,需要根據實際情況配置。其前兩行中192.168.149.237和192.168.149.238是從節點的IP,用于主從的配置。repl是剛剛創建的用戶。最后一行是用于子網內客戶端的登錄。

# vi /var/lib/pgsql/data/pg_hba.conf

host??? replication??? repl??? 192.168.149.236/32??? trust

host??? replication??? repl??? 192.168.149.237/32??? trust

host??? replication??? repl??? 192.168.149.238/32??? trust

host??? all??? all??? 192.168.149.0/24??? md5

postgresql.conf是postgresql本身配置。

# vi /var/lib/pgsql/data/postgresql.conf

addresses = '*'

wal_level = hot_standby

max_wal_senders= 6

wal_keep_segments = 10240

max_connections = 512

參數說明:

listen_addresses = '*'

可以連接服務器使用的IP,一般初始值為 localhost或者local,意味著只有本機可以連接數據庫。這里一般設置為 " * " ,允許全部的IP連接數據庫。

wal_level = hot_standby

wal_level中有三個主要的參數:minimal、archive和hot_standby

1.minimal是默認的值,它僅寫入崩潰或者突發關機時所需要的信息(不建議使用)。

2.archive是增加wal歸檔所需的日志(最常用)。

3.hot_standby是在備用服務器上增加了運行只讀查詢所需的信息,一般是在流復制的時候使用到。

max_wal_senders= 6

最多多少個流復制鏈接

wal_keep_segments = 10240

流復制保留最多的xlog數,xlog這個日志是記錄的Postgresql的WAL信息

max_connections = 512

允許的最大并發連接數,簡單來說就是同時多少客戶端能連接你的數據庫。

(3)重啟主節點

建議先停止,再啟動,而不是重啟。之后再驗證一下是否啟動成功

systemctl stop postgresql

systemctl start postgresql

2.4? 從節點配置

從節點的操作建議全部在postgres用戶下進行。

(1)切換postgres用戶

su - postgres

(2)對主節點的數據進行備份,其中192.168.149.236對應主機IP,repl是上一節主節點創建的用戶。

-bash-4.2$ rm -rf /var/lib/pgsql/data/*

-bash-4.2$ pg_basebackup -h 192.168.149.236 -U repl -D /var/lib/pgsql/data -X stream -P

(3)拷貝recovery.conf,編輯recovery.conf內容,其中192.168.149.236對應主機IP,repl是上一節主機創建的用戶。

-bash-4.2$ cp /usr/share/pgsql/recovery.conf.sample /var/lib/pgsql/data/recovery.conf

-bash-4.2$ vi /var/lib/pgsql/data/recovery.conf

standby_mode = on

primary_conninfo = 'host=192.168.149.236 port=5432 user=repl password=ct-sfs'

recovery_target_timeline = 'latest'

參數說明。

standby_mode

開啟standby模式

primary_conninfo

主節點信息

recovery_target_timeline = 'latest'

指定恢復到一個特定的時間線中。默認值是沿著基礎備份建立時的當前時間線恢復。將這個參數設置為latest會恢復到該歸檔中能找到的最新的時間線。

trigger_file = '/tmp/trigger_file0'

'/tmp/trigger_file0'是一個自定義的文件,在后面主從切換的時候能夠用得上。倘若檢測到該文件的創建,則PostgreSQL由主節點的狀態切換為主。如果下文在failover_stream.sh采用文件觸發的辦法,則必須配置此項,若采用命令觸發方法則無需配置此項,但配置此項對命令方式沒有影響。

(4)在postgresql.conf中添加一行,用于開啟standby模式。

-bash-4.2$ vi /var/lib/pgsql/data/postgresql.conf

hot_standby = on

(5)退出postgres用戶,重啟PostgreSQL

(三)驗證主從

3.1查看從節點信息

在主節點切換至psql界面,輸入命令。

select client_addr,sync_state from pg_stat_replication;

若兩個從節點全部顯示出來,如下圖所示,則說明PostgreSQL集群搭建成功。

3.2?讀寫測試

(1)在主節點寫數據,從節點讀數據。

在主節點,切換到psql界面

create database test;

可以看見提示創建成功。

在從節點上查看分別在創建之前和創建之后查看數據庫。可以看見,數據庫同步了。

(2)在從節點寫數據

可以看見,提示,從節點是個只讀數據庫。

?

?

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的PostgreSQL(一)PostgreSQL一主二从集群部署的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。