CentOS7 安裝PG叢集

AlexWong2526發表於2020-10-03

注:是CentOS, PG版本是10

一、PG單機安裝

準備兩臺伺服器

主機名IPhostname
master192.168.50.100master5432
slave192.168.50.101slave5432

1.獲取源

yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm -y

2.使用yum安裝

yum install postgresql10-contrib postgresql10-server -y

3.初始化資料庫

  • 初始化資料庫
  • 啟動資料庫
  • 新增到開機啟動
/usr/pgsql-10/bin/postgresql-10-setup initdb
systemctl start postgresql-10
systemctl enable postgresql-10.service

4.配置資料庫

  • 切換使用者
  • 連線資料庫
  • 設定資料庫密碼
  • 退出
su - postgres
psql
ALTER USER postgres WITH PASSWORD ‘password’;
\q

5.配置外網訪問

  • 編輯pg_hba.conf檔案
vi /var/lib/pgsql/10/data/pg_hba.conf
  • 翻到檔案最後,將最後三行註釋,並新增一行程式碼
host all all 0.0.0.0/0 md5
  • 編輯postgresql.conf檔案,將 listen_addresses 修改為 listen_addresses = ‘*’
  • 重啟postgresql
systemctl restart postgresql-10
  • 測試postgresql連線(自己測試吧,就不上圖了)

二、叢集整合

1.配置hosts

在主、備伺服器上都設定

[root@master ~]# cat /etc/hosts
127.0.0.1   localhost
192.168.50.100 master
192.168.50.101 slave

2.[可選]初始化master資料庫

上面已經介紹瞭如何初始化,這裡不在講解

3.master建立PG使用者

建立使用者使用者複製WAL日誌,在psql下建立!!!

CREATE USER repuser replication LOGIN CONNECTION LIMIT 3 ENCRYPTED PASSWORD '123456';

4.配置master的pg_hba.conf

在最後一行加上下面內容

host replication      repuser         slave          md5

5.配置master的postgresql.conf

listen_addresses = '*' 
port = 5432 
max_wal_senders = 10 
wal_level = replica
archive_mode = on 
archive_command = 'cd ./'
hot_standby = on
wal_keep_segments = 64
full_page_writes = on
wal_log_hints = on

6.重啟資料庫

systemctl restart postgresql-10

7.pg_basebackup 建立備庫

在slave端的postgres使用者下執行:

pg_basebackup -h master -U repuser -D /var/lib/pgsql/10/data/ -X stream -P
# 此處會讓你輸入在master上配置的那個同步WAL日誌的賬號的密碼也就是123456

上面這條命令的意思是把master節點中PG data目錄下的檔案及資料夾全部拷貝到slave的data目錄下面,此處可能涉及到Linux使用者許可權,使用

chown postgres.postgres -R data

應該可以把data目錄的組及使用者改為postgres

8.master及slave配置recovery.conf

master節點:

cp /usr/pgsql-11/share/recovery.conf.sample /var/lib/pgsql/11/data/recovery.done
# 注意!!! 上面複製的檔名字尾就是 .done,沒有寫錯
vi /var/lib/pgsql/11/data/recovery.done

# 內容在下面:
recovery_target_timeline = 'latest'
standby_mode = on
primary_conninfo = 'host=slave port=5432 user=repuser password=123456'

slave節點:

cp /usr/pgsql-11/share/recovery.conf.sample /var/lib/pgsql/11/data/recovery.conf
vi /var/lib/pgsql/11/data/recovery.conf
#編輯內容如下
recovery_target_timeline = 'latest'
standby_mode = on
primary_conninfo = 'host=master port=5432 user=repuser password=123456'

9.檢視程式狀態

主庫
檢視主庫的WAL日誌傳送程式是否正常

從庫
檢視從庫WAL日誌接收程式是否正常

10.重啟主、備資料庫使配置生效

使用navicate連線兩個資料庫,在主庫中新建資料庫及表,並新增資料。可以在從庫中檢視到相應新增的資料庫及表和資料。

相關文章