主從上安裝postgres相同步驟:
1. 查詢已安裝postgres
rpm? -qa | grep postgres
卸載掉postgres:
rpm -e --nodeps postgresql95-contrib-9.5.3-2PGDG.rhel7.x86_64
rpm -e --nodeps postgresql95-devel-9.5.3-2PGDG.rhel7.x86_64
rpm -e --nodeps postgresql95-libs-9.5.3-2PGDG.rhel7.x86_64
rpm -e --nodeps postgresql95-server-9.5.3-2PGDG.rhel7.x86_64
rpm -e --nodeps postgresql95-9.5.3-2PGDG.rhel7.x86_64
2. 安裝postgresql
rpm包
rpm -ivh postgresql95-*
3. mkdir -p /opt/pgsql/data
chown postgres /opt/pgsql
4. su - postgres initdb -D
/opt/pgsql/data
Or
/usr/pgsql-9.5/bin/postgresql95-setup
initdb
service postgresql-9.5 status
5. 添加環(huán)境變量:
vi /etc/profile
在最后加入:
export PGHOME=/usr/pgsql-9.5
export PGDATA=/opt/pgsql/data
export PATH=$PGHOME/bin:$PATH:/usr/local/pgpool/bin
export LANG=zh_CN.UTF-8
export PGPORT=5432
export PATH=/usr/pgsql-9.5/bin:$PATH
6. 添加開機啟動:
$PGHOME/bin/pg_ctl start -l logfile -D $PGDATA
7. 啟動postgressql:
pg_ctl -D /opt/pgsql/data/ -l logfile start
主(192.168.205.145):
1. 創(chuàng)建歸檔目錄:mkdir /opt/pgsql/pg_archive
2. 修改postgres用戶的密碼:
su - postgres
psql postgres
alter user postgres with password 'postgres';
3. 配置pg_hba.conf:
vi /opt/pgsql/data/pg_hba.conf
在最后加入:
host????????all????????????????all????????????????0.0.0.0/0????????????????trust
host????????replication????????????????postgres????????????????0.0.0.0/0????????????????trust
4. 配置postgresql.conf:
vi /opt/pgsql/data/postgresql.conf
修改其中配置項:
listen_addresses = '*'?? # 監(jiān)聽所有IP
archive_mode = on?
# 允許歸檔
archive_command = 'cp %p /opt/pgsql/pg_archive/%f'? # 用該命令來歸檔logfile segment
wal_level = hot_standby
max_wal_senders = 32 # 這個設(shè)置了可以最多有幾個流復制連接趁冈,差不多有幾個從焰情,就設(shè)置幾個wal_keep_segments = 256 # 設(shè)置流復制保留的最多的xlog數(shù)目
wal_sender_timeout = 60s # 設(shè)置流復制主機發(fā)送數(shù)據(jù)的超時時間
max_connections = 100 # 這個設(shè)置要注意下,從庫的max_connections必須要大于主庫的
5. 重啟pgsql服務(wù):
pg_ctl stop -D /opt/pgsql/data
pg_ctl start -D /opt/pgsql/data
從(192.168.205.161):
1. 將主機節(jié)點拷貝數(shù)據(jù)到從機節(jié)點
su - postgres
rm -rf /opt/pgsql/data/*?? #先將data目錄下的數(shù)據(jù)都清空
pg_basebackup -h 192.168.205.145 -U postgres -D /opt/pgsql/data -X stream -P? # 從主機拷貝數(shù)據(jù)到從機(基礎(chǔ)備份)
mkdir /opt/pgsql/pg_archive
2. 配置recovery.conf
cp /usr/pgsql-9.5/share/recovery.conf.sample /opt/pgsql/data/recovery.conf
vi /opt/pgsql/data/recovery.conf
修改配置:
standby_mode = on???
# 說明該節(jié)點是從服務(wù)器
primary_conninfo = 'host=192.168.205.145 port=5432
user=postgres password=postgres'? # 主服務(wù)器的信息以及連接的用戶
recovery_target_timeline = 'latest'
3. 配置postgresql
vi /opt/pgsql/data/postgresql.conf
修改配置:
wal_level = hot_standby
max_connections = 1000 # 一般查多于寫的應用從庫的最大連接數(shù)要比較大
hot_standby = on # 說明這臺機器不僅僅是用于數(shù)據(jù)歸檔,也用于數(shù)據(jù)查詢
max_standby_streaming_delay = 30s # 數(shù)據(jù)流備份的最大延遲時間
wal_receiver_status_interval = 10s # 多久向主報告一次從的狀態(tài)纳猪,當然從每次數(shù)據(jù)復制都會向主報告狀態(tài),這里只是設(shè)置最長的間隔時間
hot_standby_feedback = on # 如果有錯誤的數(shù)據(jù)復制该镣,是否向主進行反饋
4. 重啟pgsql服務(wù):
pg_ctl stop -D /opt/pgsql/data
pg_ctl start -D /opt/pgsql/data
6. 在從機上測試主機
su - postgres
psql -h 192.168.205.145 -U postgres
驗證主備同步狀態(tài):
ps aux | grep wal
主機上有 wal sender process 進程
從機上有 wal receiver process 進程
表示配置成功