這篇文章主要介紹POSTGRESQL10.3 RPM包如何實(shí)現(xiàn)主從搭建,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)是一家以網(wǎng)站設(shè)計(jì)建設(shè),小程序制作、網(wǎng)站開發(fā)設(shè)計(jì),網(wǎng)絡(luò)軟件產(chǎn)品開發(fā),企業(yè)互聯(lián)網(wǎng)推廣服務(wù)為主的民營科技公司。主要業(yè)務(wù)涵蓋:為客戶提供網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)、網(wǎng)站開發(fā)、域名與空間、網(wǎng)站優(yōu)化排名、外鏈等服務(wù)領(lǐng)域。憑借建站老客戶口碑做市場(chǎng),建設(shè)網(wǎng)站時(shí),根據(jù)市場(chǎng)搜索規(guī)律和搜索引擎的排名收錄規(guī)律編程,全力為建站客戶設(shè)計(jì)制作排名好的網(wǎng)站,深受老客戶認(rèn)可和贊譽(yù)。
一、POSTGRESQL主從復(fù)制搭建
1、安裝POSTGRESQL
PGSQL10.3
下載地址:
https://yum.postgresql.org/testing/10/redhat/rhel-6-x86_64/repoview/postgresqldbserver10.group.html
下載
· postgresql10 - PostgreSQL client programs and libraries
· postgresql10-contrib - Contributed source and binaries distributed with PostgreSQL
· postgresql10-libs - The shared libraries required for any PostgreSQL clients
· postgresql10-server - The programs needed to create and run a PostgreSQL server
依次使用rpm –ivh 進(jìn)行安裝(兩個(gè)節(jié)點(diǎn)都安裝)
安裝順序:
rpm -ivh postgresql10-libs-10.3-1PGDG.rhel6.x86_64.rpm
rpm -ivh postgresql10-10.3-1PGDG.rhel6.x86_64.rpm
rpm -ivh postgresql10-server-10.3-1PGDG.rhel6.x86_64.rpm
rpm -ivh postgresql10-contrib-10.3-1PGDG.rhel6.x86_64.rpm
2、啟動(dòng)POSTGRESQL服務(wù)
(1)第一步啟動(dòng)
service postgresql-10 initdb
(2)第二步啟動(dòng)
service postgresql-10 start
3、修改監(jiān)聽
(1)修改監(jiān)聽地址
vi /var/lib/pgsql/10/data/postgresql.conf
# - Connection Settings -
#這里原本是#listen_addresses ='localhost'修改為以下黃色字體
listen_addresses = '192.168.159.128'
(2)查看監(jiān)聽
顯示黃色特色字體即可
netstat -anlp |grep post
tcp 0 0 192.168.159.128:5432 0.0.0.0:* LISTEN 4784/postmaster
udp 0 0 ::1:57424 ::1:57424 ESTABLISHED 4784/postmaster
unix 2 [ ACC ] STREAM LISTENING 30353 4784/postmaster /var/run/postgresql/.s.PGSQL.5432
unix 2 [ ACC ] STREAM LISTENING 30356 4784/postmaster /tmp/.s.PGSQL.5432
4、主從搭建
(1)主庫環(huán)境
su - postgres
psql
創(chuàng)建一個(gè)用戶復(fù)制的用戶replica
CREATE ROLE replica login replication encrypted password 'replica';
修改pg_hba.conf文件,指定replica登錄網(wǎng)絡(luò)(最后一添加)
vi /var/lib/pgsql/10/data/pg_hba.conf
host replication replica 192.168.159.0/24 md5
host all replica 192.168.159.0/24 trust
主庫配置文件修改以下幾項(xiàng),其他不變
vi /var/lib/pgsql/10/data/postgresql.conf
listen_addresses = '*'
wal_level = hot_standby #熱備模式
max_wal_senders= 6 #可以設(shè)置最多幾個(gè)流復(fù)制鏈接,差不多有幾個(gè)從,就設(shè)置多少
wal_keep_segments = 10240 #重要配置
wal_send_timeout = 60s
max_connections = 512 #從庫的 max_connections要大于主庫
archive_mode = on #允許歸檔
archive_command = 'cp %p /url/path%f' #根據(jù)實(shí)際情況設(shè)置
(2)從庫環(huán)境
把備庫的數(shù)據(jù)文件夾目錄清空
rm -rf /var/lib/pgsql/10/data/*
在備庫上運(yùn)行
pg_basebackup -F p --progress -D /var/lib/pgsql/10/data/ -h 192.168.159.128 -p 5432 -U replica --password
輸入密碼replica
?。?!注意,復(fù)制完成后,在備庫一定要將數(shù)據(jù)目錄下的所有文件重新授權(quán)
chown -R postgres.postgres /var/lib/pgsql/10/data/
創(chuàng)建recovery.cnf 文件
cp /usr/pgsql-10/share/recovery.conf.sample /var/lib/pgsql/10/data/recovery.conf
vi /var/lib/pgsql/10/data/recovery.conf
standby_mode = on
primary_conninfo = 'host=192.168.159.128 port=5432 user=replica password=replica'
recovery_target_timeline = 'latest'
trigger_file = '/var/lib/pgsql/10/data/trigger.kenyon'
vi /var/lib/pgsql/10/data/postgresql.conf
listen_addresses ='*'
wal_level = hot_standby
max_connections =1000 #一般從的最大鏈接要大于主的
hot_standby =on #說明這臺(tái)機(jī)器不僅僅用于數(shù)據(jù)歸檔,也用于查詢
max_standby_streaming_delay =30s
wal_receiver_status_interval = 10s #多久向主報(bào)告一次從的狀態(tài)
hot_standby_feedback = on #如果有錯(cuò)誤的數(shù)據(jù)復(fù)制,是否向主進(jìn)行范例
啟動(dòng)備庫
service postgresql-10 start
如果無法啟動(dòng),如下操作:
scp /var/lib/pgsql/10/data/postmaster.opts 192.168.159.129:/var/lib/pgsql/10/data/
chown -R postgres.postgres /var/lib/pgsql/10/data/
chmod 700 data/
5、驗(yàn)證主從功能
主庫查詢
su - postgres
psql
postgres=# select client_addr,sync_state from pg_stat_replication;
client_addr | sync_state
-----------------+------------
192.168.159.129 | async
(1 row)
在主庫創(chuàng)建表
create table test2 (name varchar(3));
在從庫查詢表
\d
主庫查詢黃色字體
[root@ha1 data]# ps aux | grep postgres
postgres 4686 0.0 0.8 356584 15592 ? S 15:22 0:00 /usr/pgsql-10/bin/postmaster -D /var/lib/pgsql/10/data
postgres 4688 0.0 0.0 209416 1572 ? Ss 15:22 0:00 postgres: logger process
postgres 4690 0.0 0.1 356700 3744 ? Ss 15:22 0:00 postgres: checkpointer process
postgres 4691 0.0 0.1 356584 3044 ? Ss 15:22 0:00 postgres: writer process
postgres 4692 0.0 0.3 356584 5980 ? Ss 15:22 0:00 postgres: wal writer process
postgres 4693 0.0 0.1 356992 2616 ? Ss 15:22 0:00 postgres: autovacuum launcher process
postgres 4694 0.0 0.0 211516 1540 ? Ss 15:22 0:00 postgres: archiver process
postgres 4695 0.0 0.0 211648 1784 ? Ss 15:22 0:02 postgres: stats collector process
postgres 4696 0.0 0.1 356876 2272 ? Ss 15:22 0:00 postgres: bgworker: logical replication launcher
postgres 4711 0.7 0.4 358576 8536 ? Ss 15:24 0:35 postgres: dbuser exampledb 192.168.159.1(63172) idle
postgres 4845 0.0 0.1 357384 3424 ? Ss 15:39 0:00 postgres: wal sender process replica 192.168.159.129(46554) streaming 0/401B0A0
root 5049 0.0 0.0 103256 840 pts/3 S+ 16:42 0:00 grep postgres
備庫查詢黃色字體
[root@ha2 data]# ps aux | grep postgres
postgres 4827 0.0 2.2 398228 42844 ? S 15:39 0:00 /usr/pgsql-10/bin/postmaster -D /var/lib/pgsql/10/data
postgres 4829 0.0 0.0 209416 1536 ? Ss 15:39 0:00 postgres: logger process
postgres 4830 0.0 0.2 398324 3948 ? Ss 15:39 0:00 postgres: startup process recovering 000000010000000000000004
postgres 4831 0.0 0.1 398228 3496 ? Ss 15:39 0:00 postgres: checkpointer process
postgres 4832 0.0 0.1 398228 2772 ? Ss 15:39 0:00 postgres: writer process
postgres 4833 0.0 0.0 211516 1604 ? Ss 15:39 0:00 postgres: stats collector process
postgres 4834 0.1 0.1 405444 3688 ? Ss 15:39 0:06 postgres: wal receiver process streaming 0/401B0A0
root 4912 0.0 0.0 103252 828 pts/3 S+ 16:42 0:00 grep postgres
6、POSTGRESQL相關(guān)
(1)創(chuàng)建LINUX用戶
useradd dbuser
passwd dbuser
(2)創(chuàng)建數(shù)據(jù)庫用戶
CREATE USER dbuser WITH PASSWORD 'password';
(3)創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE exampledb OWNER dbuser;
(4)賦予權(quán)限
GRANT ALL PRIVILEGES ON DATABASE exampledb TO dbuser;
(5)以dbuser的身份連接數(shù)據(jù)庫exampledb
su - dbuser
psql -d exampledb
(6)網(wǎng)絡(luò)登陸方式
vi /var/lib/pgsql/10/data/pg_hba.conf(在IPV4那里添加以下)
host exampledb dbuser 192.168.159.0/24 trust
切換dbuser用戶登陸
psql -h 192.168.159.128 -U dbuser -p password -d exampledb -p 5432
(7)重啟和停止命令
service postgresql-10 restart
service postgresql-10 stop
(8)重要配置文件
pg_hba.conf
postgresql.conf
(9)PG的安裝目錄及命令目錄
查看進(jìn)程是否啟動(dòng),可以找到
命令目錄/usr/pgsql-10/bin/
安裝目錄/var/lib/pgsql/10/data
[root@ha1 ~]# ps -ef|grep post
root 1732 1 0 02:25 ? 00:00:00 /usr/libexec/postfix/master
postfix 1742 1732 0 02:25 ? 00:00:00 pickup -l -t fifo -u
postfix 1743 1732 0 02:25 ? 00:00:00 qmgr -l -t fifo -u
postgres 2322 1 1 02:38 ? 00:00:00 /usr/pgsql-10/bin/postmaster -D /var/lib/pgsql/10/data
postgres 2324 2322 0 02:38 ? 00:00:00 postgres: logger process
postgres 2329 2322 0 02:38 ? 00:00:00 postgres: checkpointer process
postgres 2330 2322 0 02:38 ? 00:00:00 postgres: writer process
postgres 2331 2322 0 02:38 ? 00:00:00 postgres: wal writer process
postgres 2332 2322 0 02:38 ? 00:00:00 postgres: autovacuum launcher process
postgres 2333 2322 0 02:38 ? 00:00:00 postgres: stats collector process
postgres 2334 2322 0 02:38 ? 00:00:00 postgres: bgworker: logical replication launcher
root 2336 2232 0 02:39 pts/0 00:00:00 grep post
7、主備手動(dòng)切換
4、手動(dòng)主備切換
(1)創(chuàng)建備庫recovery.conf 文件( 在備庫上操作192.168.159.152)
cp $PGHOME/share/recovery.conf.sample $PGDATA/recovery.conf
配置以下參數(shù)
standby_mode = 'on' --標(biāo)記PG為STANDBY SERVER
primary_conninfo = 'host=192.168.159.151 port=1921 user=repuser ' --標(biāo)識(shí)主庫信息
trigger_file = '/data/pg/data/trigger.kenyon' --標(biāo)識(shí)觸發(fā)器文件
(2) 關(guān)閉主庫(在主庫上操作192.168.159.151)
/opt/postgresql-10.3/bin/pg_ctl -D /data/pg/data/ -l logfile stop
(3)激活備庫到主庫狀態(tài) ( 在備庫上操作192.168.159.152 )
激活備庫只要?jiǎng)?chuàng)建一個(gè)文件即可,根據(jù)備庫 recovery.conf 配置文件的參數(shù) trigger_file 值,
創(chuàng)建這個(gè) trigger 文件即可。 例如 "touch /data/pg/data/trigger.kenyon"
touch /data/pg/data/trigger.kenyon
過一會(huì)兒發(fā)現(xiàn) recovery.conf 文件變成 recovery.done ,說明備庫已經(jīng)激活。
查看logfile日志,出現(xiàn)以下信息即激活
2018-06-04 21:11:01.137 PDT [12818] 日志: 已找到觸發(fā)器文件:/data/pg/data/trigger.kenyon
2018-06-04 21:11:01.148 PDT [12818] 日志: redo 在 0/C02A390 完成
2018-06-04 21:11:01.172 PDT [12818] 日志: 已選擇的新時(shí)間線ID:2
2018-06-04 21:11:05.442 PDT [12818] 日志: 歸檔恢復(fù)完畢
2018-06-04 21:11:05.568 PDT [12817] 日志: 數(shù)據(jù)庫系統(tǒng)準(zhǔn)備接受連接
(4)修改原來主庫的配置文件
vi /data/pg/data/postgresql.conf
max_connections = 1500
(5)激活原來的主庫,讓其轉(zhuǎn)變成從庫 (在原來的主庫上執(zhí)行192.168.159.151)
--創(chuàng)建 $PGDATA/recovery.conf 文件,配置以下參數(shù)
vi /data/pg/data/recovery.conf
recovery_target_timeline = 'latest'
standby_mode = 'on' --標(biāo)記PG為STANDBY SERVER
primary_conninfo = 'host=192.168.159.152 port=1921 user=repuser ' --標(biāo)識(shí)主庫信息
trigger_file = '/data/pg/data/trigger.kenyon' --標(biāo)識(shí)觸發(fā)器文件
--修改 pg_hba.conf (現(xiàn)在的主庫上增加192.168.159.152),添加以下配置
vi /data/pg/data/pg_hba.conf
host replication repuser 192.168.159.151/32 md5
啟動(dòng)原來的主庫即現(xiàn)在的從庫(192.168.159.151)
/opt/postgresql-10.3/bin/pg_ctl -D /data/pg/data/ -l logfile start
查看現(xiàn)在的從庫logfile日志發(fā)現(xiàn)報(bào)錯(cuò)信息
2018-06-05 00:08:00.326 PDT [9729] 詳細(xì)信息: WAL結(jié)束時(shí),到了時(shí)間線1和地址0/C02A400.
2018-06-05 00:08:00.327 PDT [9725] 日志: 在當(dāng)前恢復(fù)點(diǎn)0/C02A630之前, 新的時(shí)間點(diǎn)2脫離了當(dāng)前茅的數(shù)據(jù)庫系統(tǒng)時(shí)間點(diǎn)1
2018-06-05 00:08:05.322 PDT [9729] 日志: 在0/C000000處時(shí)間線1上重啟WAL流操作
2018-06-05 00:08:05.327 PDT [9729] 日志: 復(fù)制由主用服務(wù)器終止
2018-06-05 00:08:05.327 PDT [9729] 詳細(xì)信息: WAL結(jié)束時(shí),到了時(shí)間線1和地址0/C02A400.
2018-06-05 00:08:05.329 PDT [9725] 日志: 在當(dāng)前恢復(fù)點(diǎn)0/C02A630之前, 新的時(shí)間點(diǎn)2脫離了當(dāng)前茅的數(shù)據(jù)庫系統(tǒng)時(shí)間點(diǎn)1
2018-06-05 00:08:10.328 PDT [9729] 日志: 在0/C000000處時(shí)間線1上重啟WAL流操作
2018-06-05 00:08:10.332 PDT [9729] 日志: 復(fù)制由主用服務(wù)器終止
2018-06-05 00:08:10.332 PDT [9729] 詳細(xì)信息: WAL結(jié)束時(shí),到了時(shí)間線1和地址0/C02A400.
2018-06-05 00:08:10.333 PDT [9725] 日志: 在當(dāng)前恢復(fù)點(diǎn)0/C02A630之前, 新的時(shí)間點(diǎn)2脫離了當(dāng)前茅的數(shù)據(jù)庫系統(tǒng)時(shí)間點(diǎn)1
在現(xiàn)在的主庫操作:
scp /data/pg/data/pg_wal/00000002.history 192.168.159.151:/data/pg/data/pg_wal/4、手動(dòng)主備切換
(1)創(chuàng)建備庫recovery.conf 文件( 在備庫上操作192.168.159.152)
cp $PGHOME/share/recovery.conf.sample $PGDATA/recovery.conf
配置以下參數(shù)
standby_mode = 'on' --標(biāo)記PG為STANDBY SERVER
primary_conninfo = 'host=192.168.159.151 port=1921 user=repuser ' --標(biāo)識(shí)主庫信息
trigger_file = '/data/pg/data/trigger.kenyon' --標(biāo)識(shí)觸發(fā)器文件
(2) 關(guān)閉主庫(在主庫上操作192.168.159.151)
/opt/postgresql-10.3/bin/pg_ctl -D /data/pg/data/ -l logfile stop
(3)激活備庫到主庫狀態(tài) ( 在備庫上操作192.168.159.152 )
激活備庫只要?jiǎng)?chuàng)建一個(gè)文件即可,根據(jù)備庫 recovery.conf 配置文件的參數(shù) trigger_file 值,
創(chuàng)建這個(gè) trigger 文件即可。 例如 "touch /data/pg/data/trigger.kenyon"
touch /data/pg/data/trigger.kenyon
過一會(huì)兒發(fā)現(xiàn) recovery.conf 文件變成 recovery.done ,說明備庫已經(jīng)激活。
查看logfile日志,出現(xiàn)以下信息即激活
2018-06-04 21:11:01.137 PDT [12818] 日志: 已找到觸發(fā)器文件:/data/pg/data/trigger.kenyon
2018-06-04 21:11:01.148 PDT [12818] 日志: redo 在 0/C02A390 完成
2018-06-04 21:11:01.172 PDT [12818] 日志: 已選擇的新時(shí)間線ID:2
2018-06-04 21:11:05.442 PDT [12818] 日志: 歸檔恢復(fù)完畢
2018-06-04 21:11:05.568 PDT [12817] 日志: 數(shù)據(jù)庫系統(tǒng)準(zhǔn)備接受連接
(4)修改原來主庫的配置文件
vi /data/pg/data/postgresql.conf
max_connections = 1500
(5)激活原來的主庫,讓其轉(zhuǎn)變成從庫 (在原來的主庫上執(zhí)行192.168.159.151)
--創(chuàng)建 $PGDATA/recovery.conf 文件,配置以下參數(shù)
vi /data/pg/data/recovery.conf
recovery_target_timeline = 'latest'
standby_mode = 'on' --標(biāo)記PG為STANDBY SERVER
primary_conninfo = 'host=192.168.159.152 port=1921 user=repuser ' --標(biāo)識(shí)主庫信息
trigger_file = '/data/pg/data/trigger.kenyon' --標(biāo)識(shí)觸發(fā)器文件
--修改 pg_hba.conf (現(xiàn)在的主庫上增加192.168.159.152),添加以下配置
vi /data/pg/data/pg_hba.conf
host replication repuser 192.168.159.151/32 md5
啟動(dòng)原來的主庫即現(xiàn)在的從庫(192.168.159.151)
/opt/postgresql-10.3/bin/pg_ctl -D /data/pg/data/ -l logfile start
查看現(xiàn)在的從庫logfile日志發(fā)現(xiàn)報(bào)錯(cuò)信息
2018-06-05 00:08:00.326 PDT [9729] 詳細(xì)信息: WAL結(jié)束時(shí),到了時(shí)間線1和地址0/C02A400.
2018-06-05 00:08:00.327 PDT [9725] 日志: 在當(dāng)前恢復(fù)點(diǎn)0/C02A630之前, 新的時(shí)間點(diǎn)2脫離了當(dāng)前茅的數(shù)據(jù)庫系統(tǒng)時(shí)間點(diǎn)1
2018-06-05 00:08:05.322 PDT [9729] 日志: 在0/C000000處時(shí)間線1上重啟WAL流操作
2018-06-05 00:08:05.327 PDT [9729] 日志: 復(fù)制由主用服務(wù)器終止
2018-06-05 00:08:05.327 PDT [9729] 詳細(xì)信息: WAL結(jié)束時(shí),到了時(shí)間線1和地址0/C02A400.
2018-06-05 00:08:05.329 PDT [9725] 日志: 在當(dāng)前恢復(fù)點(diǎn)0/C02A630之前, 新的時(shí)間點(diǎn)2脫離了當(dāng)前茅的數(shù)據(jù)庫系統(tǒng)時(shí)間點(diǎn)1
2018-06-05 00:08:10.328 PDT [9729] 日志: 在0/C000000處時(shí)間線1上重啟WAL流操作
2018-06-05 00:08:10.332 PDT [9729] 日志: 復(fù)制由主用服務(wù)器終止
2018-06-05 00:08:10.332 PDT [9729] 詳細(xì)信息: WAL結(jié)束時(shí),到了時(shí)間線1和地址0/C02A400.
2018-06-05 00:08:10.333 PDT [9725] 日志: 在當(dāng)前恢復(fù)點(diǎn)0/C02A630之前, 新的時(shí)間點(diǎn)2脫離了當(dāng)前茅的數(shù)據(jù)庫系統(tǒng)時(shí)間點(diǎn)1
在現(xiàn)在的主庫操作:
scp /data/pg/data/pg_wal/00000002.history 192.168.159.151:/data/pg/data/pg_wal/
(1)創(chuàng)建備庫recovery.conf 文件( 在備庫上操作192.168.159.149)
cp /usr/pgsql-10/share/recovery.conf.sample /var/lib/pgsql/10/data/recovery.conf
配置以下參數(shù)
standby_mode = 'on' --標(biāo)記PG為STANDBY SERVER
primary_conninfo = 'host=192.168.159.128 port=5432 user=replica password=replica' --標(biāo)識(shí)主庫信息
trigger_file = '/var/lib/pgsql/10/data/trigger.kenyon' --標(biāo)識(shí)觸發(fā)器文件
(2) 關(guān)閉主庫(在主庫上操作192.168.159.148)
service postgresql-10 stop
(3)激活備庫到主庫狀態(tài) ( 在備庫上操作192.168.159.149 )
激活備庫只要?jiǎng)?chuàng)建一個(gè)文件即可,根據(jù)備庫 recovery.conf 配置文件的參數(shù) trigger_file 值,
創(chuàng)建這個(gè) trigger 文件即可。 例如 "touch /var/lib/pgsql/10/data/trigger.kenyon"
touch /var/lib/pgsql/10/data/trigger.kenyon
過一會(huì)兒發(fā)現(xiàn) recovery.conf 文件變成 recovery.done ,說明備庫已經(jīng)激活。
查看/var/lib/pgsql/10/data/log/目錄下的最新日志,出現(xiàn)以下信息即激活
(我這里的日志是tail -100f postgresql-Tue.log)
2018-06-05 19:32:36.403 PDT [3969] LOG: fetching timeline history file for timeline 2 from primary server
2018-06-05 19:32:36.429 PDT [3969] LOG: started streaming WAL from primary at 0/3000000 on timeline 1
2018-06-05 19:32:36.461 PDT [3969] LOG: replication terminated by primary server
2018-06-05 19:32:36.461 PDT [3969] DETAIL: End of WAL reached on timeline 1 at 0/301B078.
2018-06-05 19:32:36.478 PDT [3916] LOG: new target timeline is 2
2018-06-05 19:32:36.479 PDT [3969] LOG: restarted WAL streaming at 0/3000000 on timeline 2
2018-06-05 19:32:37.044 PDT [3916] LOG: redo starts at 0/301B078
(4)修改原來主庫的配置文件(192.168.159.148)
vi /var/lib/pgsql/10/data/postgresql.conf
max_connections = 150
(5)激活原來的主庫,讓其轉(zhuǎn)變成從庫 (在原來的主庫上執(zhí)行192.168.159.148)
--創(chuàng)建 $PGDATA/recovery.conf 文件,配置以下參數(shù)
vi /data/pg/data/recovery.conf
recovery_target_timeline = 'latest'
standby_mode = 'on' --標(biāo)記PG為STANDBY SERVER
primary_conninfo = 'host=192.168.159.149 port=1921 user=repuser ' --標(biāo)識(shí)主庫信息
trigger_file = '/var/lib/pgsql/10/data/trigger.kenyon' --標(biāo)識(shí)觸發(fā)器文件
--修改 pg_hba.conf (現(xiàn)在的主庫上增加192.168.159.149),添加以下配置
vi /data/pg/data/pg_hba.conf
host replication replica 192.168.159.0/24 md5
host all replica 192.168.159.0/24 trust
注意這里修改完配置文件后需要重啟數(shù)據(jù)庫服務(wù)(192.168.159.149)
service postgresql-10 restart
啟動(dòng)原來的主庫即現(xiàn)在的從庫(192.168.159.148)
service postgresql-10 start
主庫查詢
su - postgres
psql
postgres=# select client_addr,sync_state from pg_stat_replication;
client_addr | sync_state
-----------------+------------
192.168.159.148 | async
(1 row)
相關(guān)報(bào)錯(cuò):
(1)網(wǎng)絡(luò)登錄方式報(bào)錯(cuò)
psql: FATAL: no pg_hba.conf entry for host "192.168.159.128", user "dbuser", database "exampledb", SSL off
出現(xiàn)這個(gè)報(bào)錯(cuò),就要檢查pg_hba.conf文件了,
添加設(shè)置host exampledb dbuser 192.168.159.0/24 trust 重啟數(shù)據(jù)庫即可解決
(2)發(fā)現(xiàn)登陸postgres時(shí)出現(xiàn)以下問題
-bash-4.1$
root用戶執(zhí)行
cp /etc/skel/.bash* /var/lib/pgsql/
再次登陸即可變成
[postgres@node1 ~]$
以上是“POSTGRESQL10.3 RPM包如何實(shí)現(xiàn)主從搭建”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!