這篇文章給大家分享的是有關(guān)PostgreSQL如何搭建主備環(huán)境的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),疏勒企業(yè)網(wǎng)站建設(shè),疏勒品牌網(wǎng)站建設(shè),網(wǎng)站定制,疏勒網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,疏勒網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
安裝部署數(shù)據(jù)庫軟件
安裝部署還是得啰嗦幾句,使用的是9.5版本的源碼安裝,源碼包很小,就幾十兆。
1)解壓
tar -zxvf postgresql-9.5.0.tar.gz
2)切換到解壓目錄,嘗試編譯準(zhǔn)備
cd postgresql-9.5.0
./configure -prefix /usr/local/pgsql
這個(gè)過程很可能有問題,比如下面的錯(cuò)誤。
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.
類似的錯(cuò)誤還有readline,實(shí)際的情況zlib包和readline包都是有的。
這里需要注意一點(diǎn):
redhat 系列下這個(gè)軟件包叫 readline-devel ubuntu 下叫readline-dev 細(xì)分又分為libreadline5-dev 和 libreadline6-dev
所以我們需要安裝的是readline-devel和zlib-devel的包即可搞定,而不要只是懷疑,然后把--without-zlib選項(xiàng)給啟用了。
接下來的步驟就簡(jiǎn)單了。
3)開始編譯安裝
這兩個(gè)過程耗時(shí)相對(duì)會(huì)多一些,大概幾分鐘吧,比MySQL的源碼編譯要快很多。
make
make install
4)創(chuàng)建用戶和組
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
至此,數(shù)據(jù)庫軟件部署就搞定了,在這里我們只做了功能,還沒有涉及性能層面的調(diào)整和優(yōu)化。
2
3
配置主庫
使用的環(huán)境是兩臺(tái)服務(wù)器
192.168.179.128 主庫
192.168.253.134 備庫
1)創(chuàng)建一個(gè)復(fù)制角色
CREATE ROLE replica login replication encrypted password 'replica';
2)配置訪問權(quán)限文件gp_hba.conf
添加一條記錄,使得備庫可以訪問,修改后需要重啟
host replication replica 192.168.253.134/24 trust
因?yàn)槭强缇W(wǎng)段,我額外補(bǔ)充了一條網(wǎng)關(guān)的記錄
host replication replica 192.168.179.1/24 trust
3)修改參數(shù)配置文件postgresql.conf
修改如下的幾個(gè)參數(shù)設(shè)置,端口還是保留默認(rèn)的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
配置備庫
備庫需要同樣的步驟來部署數(shù)據(jù)庫軟件,參考第一部分即可。
這個(gè)時(shí)候備庫上還沒有初始化數(shù)據(jù),我們模擬客戶端的方式來訪問,可能會(huì)有如下的錯(cuò)誤。
$ 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還原數(shù)據(jù)
先不必?fù)?dān)心,我們可以使用pg_basebackup或者命令行的方式來做備份恢復(fù)
$ 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)配置恢復(fù)配置recovery.conf
這個(gè)步驟是關(guān)鍵,和Oracle里面的歸檔參數(shù)或者和MySQL里的change master的設(shè)置類似。
recovery.conf文件可以從模板里拿到:
cp /usr/local/pgsql/share/recovery.conf.sample /data/pgsql9.5/recovery.conf
recovery.conf文件的內(nèi)容改動(dòng)參考如下:
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)修改參數(shù)文件postgresql.conf的配置
postgresql.conf文件的內(nèi)容修改如下,配置和主庫差別較大,需要注意。
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)啟動(dòng)PG備庫
$ /usr/local/pgsql/bin/pg_ctl -D /data/pgsql9.5 -l logfile start
5)查看復(fù)制狀態(tài)
可以在主庫端查看復(fù)制狀態(tài),參考pg_stat_replication視圖,在查看的過程中,這個(gè)視圖字段較大,看起來會(huì)有些亂,我們可以使用類似MySQL \G的方式來查看,即\x的擴(kuò)展模式。
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
感謝各位的閱讀!關(guān)于“PostgreSQL如何搭建主備環(huán)境”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!