您好,登錄后才能下訂單哦!
這篇文章主要講解了“怎么搭建postgresql-pg簡(jiǎn)易異步流復(fù)制”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“怎么搭建postgresql-pg簡(jiǎn)易異步流復(fù)制”吧!
流復(fù)制是PostgreSQL 9.0之后才提供的新的傳遞WAL日志的方法。通過(guò)流復(fù)制,備庫(kù)不斷的從主庫(kù)同步相應(yīng)的數(shù)據(jù),并在備庫(kù)apply每個(gè)WAL record,這里的流復(fù)制每次傳輸單位是WAL日志的record。就如 oracle的dataguard技術(shù)一樣,pg的流復(fù)制也是按照同步模式的不同,分為同步流復(fù)制和異步流復(fù)制。同步流復(fù)制雖然能在主庫(kù)壞掉時(shí)確保數(shù)據(jù)的一致,但是當(dāng)網(wǎng)絡(luò)或者備庫(kù)有問(wèn)題的時(shí)候,會(huì)導(dǎo)致主庫(kù)事務(wù)hang住。異步流復(fù)制則沒(méi)有這樣的缺點(diǎn),不會(huì)影響生產(chǎn)庫(kù)的性能,但是在主庫(kù)壞掉的時(shí)候,可能會(huì)丟掉一小部分?jǐn)?shù)據(jù)。
pg的流復(fù)制安裝非常的簡(jiǎn)單,如下配置完成后,就可以做到,如下版本是pg11在rhel7的配置,注意,需要提前在兩邊服務(wù)器上建好同一個(gè)版本的pg服務(wù):
01主庫(kù)操作
1.1創(chuàng)建復(fù)制用戶作為主從同步使用
postgres=# create role repl login replication encrypted password '123456';
CREATE ROLE
1.2修改pg_hba.conf文件
主庫(kù)
host allall192.168.0.0/24md5
host replication repl192.168.0.52/24md5
第一行#允許XX這個(gè)從服務(wù)器連接到主服務(wù)器
第二行#允許使用replica用戶來(lái)復(fù)制,第二個(gè)字段必須要填repl (上一步添加的用戶)
#psql
psql> select pg_reload_conf();#生效
1.3修改postgresql.conf
listen_addresses='*'#這個(gè)一般安裝服務(wù)器之后都會(huì)進(jìn)行配置,檢查下
wal_level=replica #默認(rèn)replica,不動(dòng)
wal_keep_segments=256#設(shè)置流復(fù)制保留的最多的xlog數(shù)目
#重啟pg服務(wù)生效。
#只有l(wèi)isten_address改變需要重啟,否則select pg_reload_conf()即可。
pg_ctl stop –D $PGDATA
pg_ctl start –D $PGDATA
1.4在從庫(kù)測(cè)試連接是否成功
psql -h 192.168.0.51-p 5432-U postgres
02備庫(kù)操作
2.1停止pg服務(wù),清空data目錄
[postgres@apple-standby ~]$ echo $PGDATA
/data/pg11.5/data
[postgres@apple-standby data]$ rm -rf /data/pg11.5/data
2.2從主節(jié)點(diǎn)拷貝數(shù)據(jù)到從節(jié)點(diǎn)
$ pg_basebackup -h 192.168.0.51-U repl -D /data/pg11.5/data -X stream -P
could not identify current directory: No such file or directory
Password:
45238/45238 kB (100%),1/1 tablespace
2.3配置recovery.conf
cd $PGHOME(軟件安裝目錄)
cp share/recovery.conf.sample $PGDATA/recovery.conf
vi recovery.conf
standby_mode = on
primary_conninfo='host=192.168.0.51 port=5432 user=repl password=123456'
recovery_target_timeline='latest'
###
primary_conninfo 主服務(wù)器的信息以及連接的用戶
standby_mode = on #說(shuō)明該節(jié)點(diǎn)是從服務(wù)器
recovery_target_timeline #指定恢復(fù)到特定時(shí)間軸。默認(rèn)設(shè)置是沿著執(zhí)行基本備份時(shí)的當(dāng)前時(shí)間線恢復(fù)。將此設(shè)置為 latest 將恢復(fù)到存檔中找到的最新時(shí)間軸
2.4啟動(dòng)服務(wù)
pg_ctl start -D $PGDATA
在主庫(kù)上查詢,如下,可以看到,sync_state,async就表示異步流復(fù)制。
postgres=# select pid,usename,application_name,client_addr,state,sync_state from pg_stat_replication;
如上,就簡(jiǎn)單的搭好了一個(gè)流復(fù)制數(shù)據(jù)庫(kù)!
感謝各位的閱讀,以上就是“怎么搭建postgresql-pg簡(jiǎn)易異步流復(fù)制”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)怎么搭建postgresql-pg簡(jiǎn)易異步流復(fù)制這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。