pgsql安裝與主從配置搭建

一:安裝環境

查看一下安裝環境:cat /etc/centos-release

CentOS Linux release 7.7.1908 (Core)

 

二:軟件下載

https://www.postgresql.org/download/ 

Select your operating system family:     選擇   Linux

Select your Linux distribution:    選擇  Red Hat/Rocky/CentOS

 

然後頁面會跳轉至: https://www.postgresql.org/download/linux/redhat/

 

再選擇:

1. Select version:    15

2.Select platform:    Red Hat Enterprise, CentOS, Scientific or Oracle version 7

3. Select architecture:     x86_64

 

sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum install -y postgresql15-server
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
sudo systemctl enable postgresql-15
sudo systemctl start postgresql-15

 在執行   sudo yum install -y postgresql15-server    過程中,有可能報錯誤   Requires: libzstd.so.1()(64bit)

可安裝   yum install epel-release   命令進行解決。

 

在執行 初始化   sudo /usr/pgsql-15/bin/postgresql-15-setup initdb   執行完成後: Initializing database ... OK    

執行  sudo systemctl enable postgresql-15   執行完成後:

Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-15.service to /usr/lib/systemd/system/postgresql-15.service. 

執行  sudo systemctl start postgresql-15

 

安裝完成。

 

三:配置

查看pgsql的安裝目錄:find /usr -wholename '*/bin/postgres'

查看PGSQL端口:netstat -a | grep PGSQL

查找pg_hba.conf文件:  find / -name "*pg_hba.conf*" 

一般是如下路徑:

/var/lib/pgsql/15/data/pg_hba.conf 

然後編輯文件

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

# IPv4 local connections:  

host    all             all             127.0.0.1/32            scram-sha-256  

修改爲

host    all             all             0.0.0.0/0            scram-sha-256   

 

用navicat連接pgsql時報錯:

could not connect to server: Connection refused(0x0000274D/10061)

Is the server running on host "192.168.113.154" and accepting TCP/IP connections on 5432?

  

 是pgsql 未監聽所有的IP,解決方案:

vi  /var/lib/pgsql/15/data/postgresql.conf  找到60行左右

添加如下:listen_addresses = '*' 

 再得啓一下pgsql :  sudo systemctl restart postgresql-15

 

如果是在開啓防火牆的情況:

查看已打開端口:firewall-cmd --list-ports, 如沒沒有開通5432端口,則執行:

firewall-cmd --zone=public --port-port=5432/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports

查看已打開的服務:firewall-cmd --list-service ,如果沒有開通則開通PostgreSQL服務:

firewall-cmd --permanent --add-service=postgresql --permanent
firewall-cmd --reload
firewall-cmd --list-service

 

進入到postgres 賬戶    su - postgres

進入到 psql命令行:

執行如下操作 :
ALTER USER postgres WITH PASSWORD 'Swd.1202evb#';
CREATE ROLE replica login replication encrypted password 'replica';

輸入以下命令退出 PostgreSQL 提示符:   \q

Ctrl + D退出psql控制檯

完成修改後,即可用navicat 16連接到pgsql

 

參考鏈接:https://www.cnblogs.com/yyl001/p/16469612.html

 

 

 

 

 

 

 

 

 

==================================主從配置=======================================================

一:

進入 su - postgres

進入 psql

create role replica login replication encrypted password 'replication123';

含義:

登錄名爲:replica

權限授予:login replication

密碼爲:replication123

最後一定要加一個  ;

二:vi  /var/lib/pgsql/15/data/postgresql.conf

listen_addresses = '*'    # 設置監聽的ip,* 爲允許所有
wal_level = replica    # wal日誌寫入級別,要使用流複製,必須使用replica或更高級別
full_page_writes = on    # 可以防止意外宕機後部分數據無法寫入
wal_log_hints = on    # 沒太懂這個參數的具體含義,但可能會影響後續pg_rewind的使用,所以把它打開,官方描述:also do full page writes of non-critical updates
max_wal_senders = 10    # 設置流複製鏈接最大值
hot_standby = on    # 打開熱備
wal_keep_segments = 64    # 設置流複製保留的最log數目
unix_socket_directories = '.'     # 指定服務器用於監聽來自客戶端應用的連接的 Unix 域套接字目錄。
unix_socket_permissions = 0777    # 設置 Unix 域套接字的訪問權限。
listen_addresses = '*'    在60行左右
wal_level = replica      在206行左右
full_page_writes = on    在220行左右
wal_log_hints = on       在221行左右  把off 改爲 on
max_wal_senders = 10     在309行左右   
hot_standby = on         在336行左右

如三下個參數,新版本可能沒有,可以不設置
wal_keep_segments = 64    # 設置流複製保留的最log數目
unix_socket_directories = '.'     # 指定服務器用於監聽來自客戶端應用的連接的 Unix 域套接字目錄。
unix_socket_permissions = 0777    # 設置 Unix 域套接字的訪問權限。
 三:編輯  vi  /var/lib/pgsql/15/data/pg_hba.conf   ,在文件的最後增加如下內容:
 host    replication     replica         0.0.0.0/0               scram-sha-256 
 
 四: 重啓一下主庫:sudo systemctl restart postgresql-15


從庫:
一:停止從庫的pgsql服務
sudo systemctl stop postgresql-15
二:清空從庫的數據(刪除data下的所有文件)
rm -rf /var/lib/pgsql/15/data/* 

 三:pg_basebackup -h 172.27.241.252 -p 5432 -U replica -Fp -Xs -Pv -R -D /var/lib/pgsql/15/data/   

然後輸入主庫設置的密碼:replication123

 

給   data 目錄授權

chmod -R 700 /var/lib/pgsql/15/data
chgrp -R postgres /var/lib/pgsql/15/data
chown -R postgres /var/lib/pgsql/15/data

 

四:此時data目錄下會出現standby.signal   只有一個文件,裏邊什麼內容都沒有,加上如下一句話:

vi standby.signal

standby_mode = 'on'

 

修改  postgresql.conf, 

vi  postgresql.conf 

[root@localhost data]# vim postgresql.conf 
#從機信息和連接用戶
primary_conninfo = 'host=192.168.5.131 user=replica password=123456'
#說明恢復到最新狀態
recovery_target_timeline = latest 
#大於主節點,正式環境重新考慮此值的大小
max_connections = 120
#說明這臺機器不僅可以用戶數據歸檔,還可以用於數據查詢
hot_standby = on
#流備份的最大延遲時間
max_standby_archive_delay = 30s
#向主機彙報本地狀態的間隔時間
wal_receiver_status_interval = 10s
#出現錯誤複製,向主機反饋
hot_standby_feedback = on

 

重啓數據庫:sudo systemctl start postgresql-15

 

實現了主從的配置搭建

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章