PG集群(PostgreSql環境)搭建


centos PG集群搭建

一、安裝PG

1、安裝之前首先查看軟件是否已經安裝

rpm -qa | grep postgresql

#若存在,需要卸載使用 yum remove postgresql

2、安裝postgresql和postgresql-server

能夠訪問外網

# 獲取源
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 postgresql12-server

不能訪問外網

# 如果不能訪問外網,yum是用不了的,卸載原有的pg也只能通過rpm -e 包名 挨個進行刪除

# 離線安裝
rpm -Uvh --force --nodeps *

3、環境變量

創建目錄,給與權限

cd /data/
mkdir pgdata
chown -R postgres:postgres ./pgdata

修改環境變量

vi /usr/lib/systemd/system/postgresql-12.service

# 修改 Environment
Environment=PGDATA=/data/pgdata/ #PGDATA一般是數據盤

# 重載
systemctl daemon-reload

4、啟動數據庫

# 初始化數據庫
/usr/pgsql-12/bin/postgresql-12-setup initdb

# 啟動
systemctl start postgresql-12

5、創建用戶

su - postgres
psql
# 用於pgpool
create role pgpool with login password 'postgres';
# 用於主從
create role repl login replication encrypted password 'postgres';

# 修改postgres密碼
alter user postgres with password 'postgres';

二、配置主從

主節點配置

1、pg_hba.conf

# 修改data(/data/pgdata)下面的配置
vi /data/pgdata/pg_hba.conf

# 追加
host    all            all     0.0.0.0/0          md5 
host    replication    repl    本機ip/32    trust
host    replication    repl    節點1 ip/32    trust #從節點1
...
host    replication    repl    節點n ip/32    trust #從節點n

host    all            all     本機ip 最后一位替換為0/24      md5 

2、postgresql.conf

# 修改data(/data/pgdata)下面的配置
vi /data/pgdata/postgresql.conf

# 修改內容
listen_addresses = '*' #開啟后子節點才能訪問
archive_mode = on
max_connections = 21000
archive_command = 'cp "%p" "/var/lib/pgsql/archivedir/%f"'
max_wal_senders = 10
max_replication_slots = 10
wal_level = replica
hot_standby = on
wal_log_hints = on

從節點配置

1、拉取主庫配置

#刪除從庫data目錄下文件
rm ‐rf data/*

# 拉取主庫配置,主庫記得開5432端口
pg_basebackup -h 主節點ip -U repl -D /data/pgdata -X stream -P 

# 開通端口
iptables -I INPUT -p tcp --dport 5432 -j ACCEPT

2、修改配置文件

# postgresql.conf修改內容
    primary_conninfo = 'host=主節點ip port=5432 user=repl(主節點對應賬號) password=密碼'
    recovery_target_timeline = latest  
    hot_standby = on
    max_standby_streaming_delay = 30s
    wal_receiver_status_interval = 10s
    hot_standby_feedback = on

# 12以上版本配置上有些變化
#   	1.將recovery.conf文件里的配置合並到主配置文件postgresql.conf中
# 	2.設置啟用備庫參數standby_mode,12之后廢棄了這個參數,切換到備庫建立空文件standby.signal進行觸發。

# standby.signal修改內容
    standby_mode = on

3、重啟服務

#重啟
systemctl restart postgresql-12

#也可以stop再start
systemctl stop postgresql-12
systemctl start postgresql-12

三、驗證

# 進入主庫
su - postgres
# 進入sql
psql

# 查詢同步狀態,完成的話顯示n行
select client_addr,usename,backend_start,application_name,sync_state,sync_priority FROM pg_stat_replication;

# 添加數據庫 
CREATE DATABASE test;

# 進入從庫查看,發現新的庫test
# 執行新建操作,警告only-read

四、其他

# 備份數據庫
pg_dump dbname > outfile
# 導入數據庫
psql dbname < infile

# 可用於測試主從是否完成
# 添加數據庫 
CREATE DATABASE test;
# 刪除數據庫
DROP DATABASE test;

# 查看已安裝的軟件包
rpm -qa | grep postgresql
# 離線刪除軟件包
rpm -e 包名


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM