Kif Kkonfigurat PostgreSQL 12 Streaming Replikazzjoni f'CentOS 8
Id-database PostgreSQL tappoġġja diversi soluzzjonijiet ta' replikazzjoni biex jinbnew applikazzjonijiet ta' disponibbiltà għolja, skalabbli u tolleranti għall-ħsarat, li waħda minnhom hija l-Write-Ahead Log (WAL) Shipping. Din is-soluzzjoni tippermetti li server standby jiġi implimentat bl-użu ta' log shipping ibbażat fuq fajl jew replikazzjoni ta' streaming, jew fejn possibbli, taħlita taż-żewġ approċċi.
Bi streaming replikazzjoni, server tad-database standby (replication slave) huwa kkonfigurat biex jgħaqqad mas-server prinċipali/primarju, li jgħaddi r-rekords WAL lejn l-istandby hekk kif jiġu ġġenerati, mingħajr ma jistenna li l-fajl WAL jimtela.
B'mod awtomatiku, ir-replikazzjoni tal-istreaming hija asinkronika fejn id-dejta tinkiteb lis-server(i) standby wara li tkun saret tranżazzjoni fuq is-server primarju. Dan ifisser li hemm dewmien żgħir bejn it-twettiq ta 'tranżazzjoni fis-server prinċipali u l-bidliet li jsiru viżibbli fis-server standby. Waħda negattiva ta 'dan l-approċċ hija li f'każ li s-server prinċipali jiġġarraf, kwalunkwe tranżazzjoni mhux impenjata tista' ma tiġix replikata u dan jista 'jikkawża telf ta' data.
Din il-gwida turi kif twaqqaf Postgresql 12 master-standby streaming replikazzjoni fuq CentOS 8. Se nużaw \replikazzjoni slots għall-standby bħala soluzzjoni biex jiġi evitat li s-server prinċipali milli jirriċikla segmenti WAL qodma qabel ma l-istandby tkun irċeviehom.
Innota li meta mqabbla ma 'metodi oħra, slots ta' replikazzjoni jżommu biss in-numru ta 'segmenti magħrufa li huma meħtieġa.
Din il-gwida tassumi li int konness mas-servers tad-database prinċipali u standby tiegħek bħala l-għerq permezz ta' SSH (uża l-kmand Sudo fejn meħtieġ jekk tkun konness bħala utent normali bi drittijiet amministrattivi):
Postgresql master database server: 10.20.20.9 Postgresql standby database server: 10.20.20.8
Iż-żewġ servers tad-database għandu jkollhom Postgresql 12 installat, inkella, ara: Kif Tinstalla PostgreSQL u pgAdmin f'CentOS 8.
Nota: PostgreSQL 12 jiġi b'bidliet kbar fl-implimentazzjoni u l-konfigurazzjoni tar-replikazzjoni bħas-sostituzzjoni ta 'recovery.conf u l-konverżjoni tal-parametri ta' recovery.conf għal parametri normali ta 'konfigurazzjoni ta' PostgreSQL, li jagħmilha ħafna aktar faċli biex tiġi kkonfigurata r-replikazzjoni tal-clusters.
Pass 1: Konfigurazzjoni tal-PostgreSQL Master/Primary Database Server
1. Fuq is-server prinċipali, aqleb għall-kont tas-sistema postgres u kkonfigura l-indirizz(i) IP li fuqhom is-server prinċipali se jisma' għal konnessjonijiet mill-klijenti.
F'dan il-każ, se nużaw *
li jfisser kollox.
# su - postgres $ psql -c "ALTER SYSTEM SET listen_addresses TO '*';"
Il-kmand SQL ALTER SYSTEM SET huwa karatteristika qawwija biex tbiddel il-parametri tal-konfigurazzjoni ta 'server, direttament b'mistoqsija SQL. Il-konfigurazzjonijiet jiġu ffrankati fil-fajl postgresql.conf.auto li jinsab fl-għerq tal-folder tad-dejta (eż. /var/lib/pgsql/12/data/) u aqra flimkien ma 'dawk maħżuna f'postgresql.conf. Iżda l-konfigurazzjonijiet fl-ewwel jieħdu preċedenza fuq dawk fl-aħħar u fajls oħra relatati.
2. Imbagħad oħloq rwol ta 'replikazzjoni li se jintuża għal konnessjonijiet mis-server standby għas-server prinċipali, bl-użu tal-programm createuser. Fil-kmand li ġej, il-bandiera -P
titlob password għar-rwol il-ġdid u -e
tirrepeti l-kmandi li createuser jiġġenera u jibgħat lis-server tad-database.
# su – postgres $ createuser --replication -P -e replicator $ exit
3. Imbagħad daħħal l-entrata li ġejja fl-aħħar tal-fajl tal-konfigurazzjoni tal-awtentikazzjoni tal-klijent /var/lib/pgsql/12/data/pg_hba.conf bil-qasam tad-database issettjat għal replikazzjoni kif muri fil-screenshot.
host replication replicator 10.20.20.8/24 md5
4. Issa terġa 'tibda s-servizz Postgres12 billi tuża l-kmand systemctl li ġej biex tapplika l-bidliet.
# systemctl restart postgresql-12.service
5. Sussegwentement, jekk għandek is-servizz firewalld jaħdem, għandek bżonn iżżid is-servizz Postgresql fil-konfigurazzjoni firewalld biex tippermetti talbiet mis-server standby lill-kaptan.
# firewall-cmd --add-service=postgresql --permanent # firewall-cmd --reload
Pass 2: Nagħmlu Backup Bażi biex Bootstrap is-Server Standby
6. Sussegwentement, għandek bżonn tagħmel backup bażi tas-server kaptan mis-server standby; dan jgħin biex bootstrap-server standby. Trid twaqqaf is-servizz postgresql 12 fuq is-server standby, taqleb għall-kont tal-utent postgres, tagħmel backup tad-direttorju tad-dejta (/var/lib/pgsql/12/data/), imbagħad ħassar kollox taħtu kif muri, qabel ma tieħu l-bażi backup.
# systemctl stop postgresql-12.service # su - postgres $ cp -R /var/lib/pgsql/12/data /var/lib/pgsql/12/data_orig $ rm -rf /var/lib/pgsql/12/data/*
7. Imbagħad uża l-għodda pg_basebackup biex tieħu l-backup bażi bis-sjieda t-tajba (l-utent tas-sistema tad-database jiġifieri Postgres, fi ħdan il-kont tal-utent Postgres) u bil-permessi t-tajba.
Fil-kmand li ġej, l-għażla:
-h
– jispeċifika l-host li huwa s-server prinċipali.-D
– jispeċifika d-direttorju tad-dejta.-U
– jispeċifika l-utent tal-konnessjoni.-P
– tippermetti r-rappurtar tal-progress.-v
– jippermetti l-modalità verbose.-R
– tippermetti l-ħolqien ta’ konfigurazzjoni ta’ rkupru: Joħloq fajl standby.signal u tehmeż is-settings tal-konnessjoni ma’ postgresql.auto.conf taħt id-direttorju tad-dejta.-X
– użat biex jinkludi l-fajls tal-ġurnal tal-kitba bil-quddiem meħtieġa (fajls WAL) fil-backup. Valur ta 'fluss ifisser li tixxandar il-WAL waqt li tinħoloq il-backup.-C
– jippermetti l-ħolqien ta’ slot ta’ replikazzjoni msemmi mill-għażla -S qabel ma tibda l-backup.-S
– jispeċifika l-isem tal-islott tar-replikazzjoni.
$ pg_basebackup -h 10.20.20.9 -D /var/lib/pgsql/12/data -U replicator -P -v -R -X stream -C -S pgstandby1 $ exit
8. Meta jsir il-proċess tal-backup, id-direttorju tad-dejta l-ġdid fuq is-server standby għandu jidher bħal dak fil-screenshot. Jinħoloq standby.signal u s-settings tal-konnessjoni huma mehmuża ma' postgresql.auto.conf. Tista' telenka l-kontenut tagħha billi tuża l-kmand ls.
# ls -l /var/lib/pgsql/12/data/
Skjav tar-replikazzjoni se jaħdem fil-modalità \Hot Standby jekk il-parametru hot_standby huwa ssettjat għal fuq (il-valur default) f'postgresql.conf u jkun hemm fajl standby.signal preżenti fid-direttorju tad-dejta.
9. Issa lura fuq is-server prinċipali, għandek tkun tista 'tara l-islott ta' replikazzjoni msejjaħ pgstandby1 meta tiftaħ il-veduta pg_replication_slots kif ġej.
# su - postgres $ psql -c "SELECT * FROM pg_replication_slots;" $ exit
10. Biex tara l-issettjar tal-konnessjoni mehmuża fil-fajl postgresql.auto.conf, uża l-kmand tal-qtates.
# cat /var/lib/pgsql/12/data/postgresql.auto.conf
11. Issa ibda l-operazzjonijiet normali tad-database fuq is-server standby billi tibda s-servizz PostgreSQL kif ġej.
# systemctl start postgresql-12
Pass 3: Ittestjar PostgreSQL Streaming Replication
12. Ladarba konnessjoni tiġi stabbilita b'suċċess bejn il-kaptan u l-istandby, se tara proċess ta 'riċevitur WAL fis-server standby bi status ta' streaming, tista 'tiċċekkja dan billi tuża l-veduta pg_stat_wal_receiver.
$ psql -c "\x" -c "SELECT * FROM pg_stat_wal_receiver;"
u proċess ta 'mittent WAL korrispondenti fis-server prinċipali/primarju bi stat ta' streaming u sync_state ta 'async, tista' tiċċekkja din il-veduta pg_stat_replication pg_stat_replication.
$ psql -c "\x" -c "SELECT * FROM pg_stat_replication;"
Mill-screenshot ta 'hawn fuq, ir-replikazzjoni tal-istreaming hija asinkronika. Fit-taqsima li jmiss, aħna se nuru kif b'mod fakultattiv nippermettu replikazzjoni sinkronika.
13. Issa ttestja jekk ir-replikazzjoni tkunx qed taħdem sew billi toħloq database tat-test fis-server prinċipali u ċċekkja jekk teżistix fis-server standby.
[master]postgres=# OĦLOQ DATABASE tecmint;
[standby]postgres=# \l
Fakultattiv: Attivazzjoni tar-Replikazzjoni Sinkronika
14. Replikazzjoni sinkronika toffri l-abbiltà li tikkommetti tranżazzjoni (jew tikteb data) fid-database primarja u l-istandby/replika simultanjament. Jikkonferma biss li tranżazzjoni tirnexxi meta l-bidliet kollha magħmula mit-tranżazzjoni jkunu ġew trasferiti għal server standby sinkroniku wieħed jew aktar.
Biex tippermetti r-replikazzjoni sinkronika, is-synchronous_commit għandu wkoll ikun issettjat għal fuq (li huwa l-valur default, u għalhekk l-ebda ħtieġa għal xi bidla) u għandek bżonn ukoll li tissettja l-parametru synchronous_standby_names għal valur mhux vojt. Għal din il-gwida, aħna se nissettjawha għal kulħadd.
$ psql -c "ALTER SYSTEM SET synchronous_standby_names TO '*';"
15. Imbagħad reload is-servizz PostgreSQL 12 biex tapplika l-bidliet ġodda.
# systemctl reload postgresql-12.service
16. Issa meta mistoqsija l-proċess tal-mittent WAL fuq is-server primarju għal darb'oħra, għandu juri stat ta 'streaming u sync_state ta' sinkronizzazzjoni.
$ psql -c "\x" -c "SELECT * FROM pg_stat_replication;"
Wasalna fl-aħħar ta 'din il-gwida. Aħna wrejna kif twaqqaf PostgreSQL 12 master-standby database streaming replikazzjoni f'CentOS 8. Aħna koprejna wkoll kif nippermettu replikazzjoni sinkronika f'raggruppament ta 'database PostgreSQL.
Hemm ħafna użi ta' replikazzjoni u dejjem tista' tagħżel soluzzjoni li tissodisfa l-ambjent tal-IT tiegħek u/jew ir-rekwiżiti speċifiċi għall-applikazzjoni. Għal aktar dettalji, mur Log-Shipping Standby Servers fid-dokumentazzjoni PostgreSQL 12.