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一主二从集群部署的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通过追源码解决:xmlrpc.clien
- 下一篇: 华为鸿蒙系统初探之HUAWEI DevE