共計 3424 個字符,預計需要花費 9 分鐘才能閱讀完成。
這篇文章給大家分享的是有關 PostgreSQL 如何搭建主備環境的內容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,一起跟隨丸趣 TV 小編過來看看吧。
安裝部署數據庫軟件
安裝部署還是得啰嗦幾句,使用的是 9.5 版本的源碼安裝,源碼包很小,就幾十兆。
1) 解壓
tar -zxvf postgresql-9.5.0.tar.gz
2) 切換到解壓目錄,嘗試編譯準備
cd postgresql-9.5.0
./configure -prefix /usr/local/pgsql
這個過程很可能有問題,比如下面的錯誤。
configure: error: zlib library not found
If you have zlib already installed, see config.log for details on the
failure. It is possible the compiler isn t looking in the proper directory.
Use –without-zlib to disable zlib support.
類似的錯誤還有 readline,實際的情況 zlib 包和 readline 包都是有的。
這里需要注意一點:
redhat 系列下這個軟件包叫 readline-devel ubuntu 下叫 readline-dev 細分又分為 libreadline5-dev 和 libreadline6-dev
所以我們需要安裝的是 readline-devel 和 zlib-devel 的包即可搞定,而不要只是懷疑,然后把 –without-zlib 選項給啟用了。
接下來的步驟就簡單了。
3) 開始編譯安裝
這兩個過程耗時相對會多一些,大概幾分鐘吧,比 MySQL 的源碼編譯要快很多。
make
make install
4) 創建用戶和組
useradd postgres
mkdir -p /data/pgsql9.5
chown -R postgres:postgres /data/pgsql9.5
su – postgres
5)初始化部署
/usr/local/pgsql/bin/initdb -D /data/pgsql9.5
至此,數據庫軟件部署就搞定了,在這里我們只做了功能,還沒有涉及性能層面的調整和優化。
2
3
配置主庫
使用的環境是兩臺服務器
192.168.179.128 主庫
192.168.253.134 備庫
1)創建一個復制角色
CREATE ROLE replica login replication encrypted password replica
2)配置訪問權限文件 gp_hba.conf
添加一條記錄,使得備庫可以訪問,修改后需要重啟
host replication replica 192.168.253.134/24 trust
因為是跨網段,我額外補充了一條網關的記錄
host replication replica 192.168.179.1/24 trust
3)修改參數配置文件 postgresql.conf
修改如下的幾個參數設置,端口還是保留默認的 5432
listen_addresses = *
port = 5432
wal_level = hot_standby
max_wal_senders = 2
wal_keep_segments = 32
wal_sender_timeout =60s
max_connections =100
這些步驟完成后,切記要重啟一下 PG 使得配置生效
4)重啟 PG
$ /usr/local/pgsql/bin/pg_ctl -D /data/pgsql9.5 -l logfile restart
3
3
配置備庫
備庫需要同樣的步驟來部署數據庫軟件,參考第一部分即可。
這個時候備庫上還沒有初始化數據,我們模擬客戶端的方式來訪問,可能會有如下的錯誤。
$ psql -Ureplica -h292.168.179.128 -p5432 –password
Password for user replica:
psql: FATAL: no pg_hba.conf entry for host 192.168.179.1 , user replica , database replica
1)使用 pg_basebackup 還原數據
先不必擔心,我們可以使用 pg_basebackup 或者命令行的方式來做備份恢復
$ pg_basebackup -F p –progress -D /data/pgsql9.5 -h 192.168.179.128 -p 5432 -U replica –password
Password:
22484/22484 kB (100%), 1/1 tablespace
NOTICE: WAL archiving is not enabled; you must ensure that all required WAL segments are copied through other means to complete the backup
2)配置恢復配置 recovery.conf
這個步驟是關鍵,和 Oracle 里面的歸檔參數或者和 MySQL 里的 change master 的設置類似。
recovery.conf 文件可以從模板里拿到:
cp /usr/local/pgsql/share/recovery.conf.sample /data/pgsql9.5/recovery.conf
recovery.conf 文件的內容改動參考如下:
standby_mode = on
primary_conninfo = host=192.168.179.128 port=5432 user=replica password=replica
recovery_target_timeline = latest
trigger_file = /data/pgsql9.5/trigger_activestb
3)修改參數文件 postgresql.conf 的配置
postgresql.conf 文件的內容修改如下,配置和主庫差別較大,需要注意。
listen_addresses = *
port = 5432
wal_level = minimal
max_wal_senders = 0
wal_keep_segments = 0
max_connections = 1000
synchronous_commit = off
synchronous_standby_names =
hot_standby = on
max_standby_streaming_delay = 30
wal_receiver_status_interval = 1s
hot_standby_feedback = on
4)啟動 PG 備庫
$ /usr/local/pgsql/bin/pg_ctl -D /data/pgsql9.5 -l logfile start
5)查看復制狀態
可以在主庫端查看復制狀態,參考 pg_stat_replication 視圖,在查看的過程中,這個視圖字段較大,看起來會有些亂,我們可以使用類似 MySQL \G 的方式來查看,即 \x 的擴展模式。
postgres=# \x
Expanded display is on.
postgres=# select * from pg_stat_replication;
-[RECORD 1]—-+——————————
pid | 20539
usesysid | 16384
usename | replica
application_name | walreceiver
client_addr | 192.168.179.1
client_hostname |
client_port | 49374
backend_start | 2018-03-25 05:19:15.215181+08
backend_xmin | 1756
state | streaming
sent_location | 0/302F600
write_location | 0/302F600
flush_location | 0/302F600
replay_location | 0/302F600
sync_priority | 0
sync_state | async
感謝各位的閱讀!關于“PostgreSQL 如何搭建主備環境”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!