Do Riarthóirí Bunachar Sonraí (DBAnna) agus innealtóirí DevOps a bhainistíonn PostgreSQL i dtimpeallacht táirgthe, is príomhordú é cuspóir pointe téarnaimh (RPO) gar do nialas a bhaint amach. I gcroílár chumais téarnaimh ó thubaiste agus Téarnamh go Pointe Ama (PITR) PostgreSQL tá Logáil Scríobh-Ar-Tús (WAL). Cé go gcinnteoidh WAL comhlíonadh ACID trí idirbhearta a logáil sula scríobhtar iad chuig na comhaid sonraí, is é cartlannú WAL an mheicníocht a chaomhnaíonn na logaí seo le haghaidh cúltaca agus macasamhlú fadtéarmach.
Mar sin féin, ní oibríocht é cumrú cartlannaithe WAL ar féidir é a “shocrú agus dearmad a dhéanamh air”. Is féidir le míchumraíochtaí, teipeanna ciúine, agus míthuiscintí ailtireachta a bheith mar thoradh ar chaillteanas tubaisteach sonraí, cásanna scoilte-inchinne, nó briseadh iomlán ar an mbunachar sonraí.
Sa treoir chuimsitheach seo, déanfaimid iniúchadh ar ailtireacht cartlannaithe WAL PostgreSQL, sainaithneoimid na gaistí is coitianta a fhágann go gcailltear sonraí, agus leagfaimid amach dea-chleachtais ar ghrád táirgthe chun a chinntiú go bhfanann do bhunachar sonraí athléimneach.
Ailtireacht WAL PostgreSQL a Thuiscint
Sula dtéann tú i ngleic leis na gaistí, tá sé ríthábhachtach a thuiscint conas a láimhseálann PostgreSQL logaí idirbhirt.
Scríobhann PostgreSQL gach modhnú chuig deighleoga WAL (16MB de réir réamhshocraithe) atá suite sa chomhadlann pg_wal (pg_xlog roimhe seo i leaganacha roimh 10). Déantar gach idirbheart a thaifeadadh go seicheamhach, marcáilte le Uimhir Seicheamh Loga (LSN).
Nuair a líonann deighleog WAL, aistríonn PostgreSQL chuig ceann nua. Chun cosc a chur ar an gcomhadlann pg_wal fás go héigríochta, athchúrsálann nó baineann PostgreSQL seandeighleoga WAL nuair nach bhfuil gá leo a thuilleadh le haghaidh téarnamh ó thuairteáil nó macasamhlú.
Idircheapann Cartlannú WAL an próiseas athchúrsála seo. Nuair a bhíonn archive_mode cumasaithe, cuireann PostgreSQL archive_command sainithe ag an úsáideoir i bhfeidhm (nó úsáideann sé archive_library i PostgreSQL 15+) chun an deighleog WAL críochnaithe a chóipeáil chuig suíomh slán tánaisteach sula scriostar nó sula n-oscríobhtar é.
Chun Téarnamh go Pointe Ama (PITR) a dhéanamh, teastaíonn dhá chomhpháirt uait:
1. Cúltaca bonn bailí.
2. Slabhra gan bhriseadh de chomhaid WAL cartlannaithe ó am an chúltaca bonn go dtí an t-am téarnaimh sprice atá uait.
Má bhriseann an slabhra WAL sin, teipeann ar do PITR.
Cartlannú WAL a Chumrú le haghaidh Táirgthe
Chun cartlannú WAL a chumasú, ní mór duit do chomhad postgresql.conf a mhodhnú. Éilíonn cumraíocht bhunúsach an wal_level a shocrú, archive_mode a chumasú, agus an archive_command a shainiú.
# postgresql.conf
wal_level = replica # tá gá le 'replica' nó 'logical' le haghaidh cartlannaithe
archive_mode = on # Cumasaíonn sé an próiseas cartlannaithe
archive_command = 'test ! -f /mnt/nfs/archive/%f && cp %p /mnt/nfs/archive/%f'
archive_timeout = 600 # Cuir iallach ar lasc WAL gach 10 nóiméad
Sa archive_command:
* Léiríonn %p an cosán iomlán chuig an gcomhad WAL le cartlannú.
* Léiríonn %f ainm comhaid an chomhaid WAL.
Cé go bhfuil an chumraíocht thuas simplí, tugann brath ar ghnáth-orduithe bhlaosc i dtimpeallachtaí fiontair rioscaí suntasacha isteach.
Gaistí Coitianta i gCartlannú WAL
Ghaiste 1: “Rath Ciúin” an archive_command
Braitheann PostgreSQL go hiomlán ar chód scoir an archive_command. Má fhilltear 0 ón ordú, glacann PostgreSQL leis go bhfuil an comhad WAL cartlannaithe go sábháilte agus téann sé ar aghaidh chun an bunchomhad a athchúrsáil.
Botún coitianta is ea ordú a úsáid a fhilltear 0 fiú mura bhfuil na sonraí sruthlaithe go sábháilte chuig stóráil bhuan. Mar shampla, d’fhéadfadh ordú simplí cp rath a thabhairt ar ais a luaithe a shroicheann na sonraí an taisce leathanach OS ar an bhfreastalaí ceann scríbe. Má chailleann an freastalaí ceann scríbe cumhacht sula sruthlaítear an taisce chuig an diosca, cailltear an comhad WAL, ach tá a chóip áitiúil scriosta ag PostgreSQL cheana féin.
An Riosca: Slabhra WAL briste agus neamhábaltacht PITR a dhéanamh, nach bhfaightear amach ach le linn cás téarnaimh ó thubaiste.
An Maolú: Cinntigh go gcuireann do script cartlannaithe scríobh sioncronach i bhfeidhm. Má úsáideann tú gnáth-orduithe bhlaosc, bain úsáid as uirlisí a ráthaíonn go sruthlaítear sonraí, nó scríobh script fillteáin a fhíoraíonn méid an chomhaid agus an seicshuim tar éis an aistrithe.
Ghaiste 2: Ídiú Deighilt pg_wal (Bloat WAL)
Má theipeann ar an archive_command (cód scoir neamh-nialas a thabhairt ar ais)—mar gheall ar bhriseadh líonra, ceadanna míchearta, nó diosca ceann scríbe lán—coimeádfaidh PostgreSQL an comhad WAL sa chomhadlann pg_wal agus déanfaidh sé iarracht ar an ordú arís go héigríochta.
Cé go gcuireann sé seo cosc ar chaillteanas sonraí trí WALanna neamhchartlannaithe a scriosadh, tugann sé riosca tromchúiseach infhaighteachta isteach. Má tá an chomhadlann pg_wal ar dheighilt a líonann suas go 100%, eiseoidh PostgreSQL PANIC agus tuairteálfaidh sé. Ní thosóidh an bunachar sonraí arís go dtí go nglanfar spás.
An Riosca: Am aga bunachar sonraí iomlán mar gheall ar dheighilt pg_wal lán.
An Maolú:
1. Cuir pg_wal ar dheighilt diosca tiomnaithe i gcónaí.
2. Cuir monatóireacht ionsaitheach i bhfeidhm ar mhéid na comhadlainne pg_wal.
3. Déan monatóireacht ar an amharc pg_stat_archiver chun orduithe cartlainne atá ag teip a bhrath láithreach.
Ghaiste 3: Cúltacaí Bonn Neamhiomlána
Níl aon úsáid le cúltaca bonn gan na comhaid WAL a ghintear le linn an phróisis chúltaca. Má ghlacann tú léargas ar leibhéal an chórais comhad nó má úsáideann tú pg_basebackup gan na WALanna a shruthú (-X stream), ní mór duit a chinntiú go gcartlannaítear na comhaid WAL a ghintear idir tús agus deireadh an chúltaca go rathúil.
Má tá do chartlannaí ag moilliú nó ag teip, agus má chailltear na comhaid WAL sonracha sin, ní féidir an cúltaca bonn a thabhairt go staid chomhsheasmhach.
An Riosca: Cúltacaí bonn truaillithe nó neamh-in-aisghabhála.
An Maolú: Úsáid pg_basebackup -X stream chun na comhaid WAL riachtanacha a chur san áireamh laistigh den phálasta cúltaca féin, nó bain úsáid as réitigh chúltaca fiontair a bhainistíonn an spleáchas idir cúltacaí bonn agus deighleoga WAL go huathoibríoch.
Ghaiste 4: Mearbhall Amlíne agus Cásanna Scoilte-Inchinne
Nuair a dhéantar freastalaí fuireachais a chur chun cinn go príomhfhreastalaí, méadaíonn PostgreSQL an “Aitheantas Amlíne” (an chéad chuid d’ainm comhaid WAL, m.sh., 0000000200000001000000A4). Cuireann sé seo cosc ar an bpríomhfhreastalaí nua stair WAL an tsean-phríomhfhreastalaí a fhorscríobh.
Mar sin féin, má thosaítear an sean-phríomhfhreastalaí de thaisme gan é a fhálú i gceart (cás scoilte-inchinne), d’fhéadfadh sé iarracht a dhéanamh comhaid WAL a bhrú chuig an suíomh cartlainne céanna ag baint úsáide as an sean-amlíne. Má fhorscríobhann do archive_command comhaid go dall, d’fhéadfá do stór cartlainne a thruailliú.
An Riosca: Comhaid WAL forscríofa, cartlanna truaillithe, agus bunachair sonraí neamh-in-aisghabhála.
An Maolú: Níor cheart do archive_command comhad atá ann cheana a fhorscríobh riamh. Tabhair faoi deara sa chumraíocht bhunúsach níos luaithe, d’úsáideamar test ! -f /mnt/nfs/archive/%f chun teip go sainráite má tá an comhad ann cheana féin.
Rioscaí Caillteanais Sonraí a Mhaolú: Dea-Chleachtais Táirgthe
Chun do straitéis cartlannaithe PostgreSQL a chruadhú, cuir na dea-chleachtais seo a leanas i bhfeidhm.
1. Monatóireacht a dhéanamh ar an bPróiseas Cartlannaithe go Dúchasach
Soláthraíonn PostgreSQL amharc ionsuite, pg_stat_archiver, a rianaíonn rath agus teip do phróisis cartlannaithe. Ba cheart duit an t-amharc seo a chomhtháthú i do chruach breathnaitheachta (m.sh., Prometheus, Datadog, nó Zabbix).
SELECT
archived_count,
last_archived_wal,
last_archived_time,
failed_count,
last_failed_wal,
last_failed_time,
stats_reset
FROM pg_stat_archiver;
Tairseacha foláirimh le cumrú:
* Tabhair foláireamh má mhéadaíonn failed_count.
* Tabhair foláireamh má sháraíonn an difríocht ama idir now() agus last_archived_time do thairseach RPO (m.sh., 15 nóiméad), ag cuimhneamh go bhféadfadh moilleanna a bheith ag bunachair sonraí le trácht íseal go nádúrtha mura bhfuil archive_timeout socraithe.
2. Bain úsáid as archive_timeout
I mbunachair sonraí le toirt scríofa íseal, d’fhéadfadh uaireanta a bheith i gceist le comhad WAL 16MB a líonadh. Go dtí go líonann sé, ní dhéantar é a chartlannú. Má thuairteálann an freastalaí agus má chailltear an diosca áitiúil, caillfidh tú uaireanta d’idirbhearta.
Má shocraítear archive_timeout = 600 (10 nóiméad) cuirtear iallach ar PostgreSQL aistriú chuig comhad WAL nua agus an ceann reatha a chartlannú, fiú mura bhfuil sé lán. Ráthaíonn sé seo nach sáróidh do RPO 10 nóiméad, ar chostas úsáid stórála beagán níos airde mar gheall ar chomhaid WAL atá líonta go páirteach.
3. Aistriú chuig archive_library (PostgreSQL 15+)
Go stairiúil, sceith archive_command próiseas bhlaosc nua do gach comhad WAL aonair. I dtimpeallachtaí ard-tréchur a ghineann na céadta comhad WAL in aghaidh an nóiméid, éiríonn an forchostas a bhaineann le próisis bhlaosc a fhorcáil ina bhacainn feidhmíochta.
Thug PostgreSQL 15 an paraiméadar archive_library isteach, rud a ligeann do chartlannú WAL a bheith láimhseáilte ag modúil C a luchtú go dinimiciúil. Cuireann sé seo deireadh leis an bhforchostas forcála bhlaosc agus soláthraíonn sé meicníocht cartlannaithe i bhfad níos láidre agus ardfheidhmíochta. Má tá tú ar PostgreSQL 15 nó níos airde, lorg uirlisí cúltaca a thacaíonn le modúil cartlainne saincheaptha.
4. Tástáil Rialta ar Théarnamh go Pointe Ama
Ní cúltaca é cúltaca nár tástáladh; is mian é. Is é an t-aon bhealach chun a fhíorú go bhfuil do chartlannú WAL ag feidhmiú i gceart, go bhfuil do shlabhra WAL gan bhriseadh, agus go bhfuil do chúltacaí bonn comhsheasmhach, ná tástálacha PITR uathoibrithe rialta a dhéanamh.
Cuir tús le hinsealbhú sealadach, athchóirigh an cúltaca bonn, cumraigh restore_command chun tarraingt ó do chartlann, agus téarnamh go stampa ama sonrach. Fíoraigh go sroicheann an bunachar sonraí staid chomhsheasmhach agus go n-osclaíonn sé le haghaidh naisc.
Cúltaca agus Téarnamh Fiontair le CloudSave
Is féidir le bainistiú scripteanna bhlaosc saincheaptha le haghaidh archive_command, láimhseáil dídhúblála WAL, agus stóráil shlán lasmuigh den láithreán le haghaidh logaí idirbhirt a bheith ina ualach oibríochtaúil go tapa d’fhoirne TF.
Seo an áit a soláthraíonn CloudSave luach suntasach do thimpeallachtaí fiontair PostgreSQL. Comhtháthaíonn CloudSave go díreach le APIanna cúltaca agus cartlannaithe WAL dúchasacha PostgreSQL chun na gaistí láimhe a pléadh thuas a dhíchur.
In ionad scripteanna bash leochaileacha a scríobh, soláthraíonn CloudSave comhtháthú láidir, bunaithe ar ghníomhaire nó gan ghníomhaire a:
* Ráthaíonn Seachadadh: Cuireann sé orduithe bhlaosc caighdeánacha in ionad aistrithe fíoraithe, seicshuim-bhailíochtaithe chuig stóráil shlán lasmuigh den láithreán nó sa scamall.
* Cosc ar Bloat WAL: Déanann sé monatóireacht ghníomhach ar an gcomhadlann pg_wal agus tugann sé foláireamh do riarthóirí i bhfad sula dtarlaíonn ídiú deighilte.
* Uathoibríonn PITR: Simplíonn sé Téarnamh go Pointe Ama trí chomhéadan iomasach. Roghnaíonn tú an nóiméad cruinn ar mhaith leat téarnamh chuige, agus aisghabhann CloudSave an cúltaca bonn ceart go huathoibríoch agus sruthaíonn sé an seicheamh cruinn de chomhaid WAL a theastaíonn chun an staid sin a bhaint amach.
* Láimhseálann Amlínte: Bainistíonn sé stair amlíne PostgreSQL go cliste, ag cinntiú nach ndéanann teipeanna agus cásanna scoilte-inchinne do stór cúltaca a thruailliú.
Trí an t-ualach trom a bhaineann le bainistíocht WAL a dhíluchtú chuig CloudSave, is féidir le DBAnna díriú ar bharrfheabhsú ceisteanna agus feidhmíocht bunachar sonraí, agus fios acu go bhfuil a SLAanna RPO agus RTO cosanta ag ardán ar ghrád fiontair.
Conclúid
Is é cartlannú WAL PostgreSQL cnámh droma an téarnaimh ó thubaiste bunachar sonraí. Cé go bhfuil an coincheap maidir le comhad a chóipeáil ó chomhadlann amháin go ceann eile simplí, cruthaíonn na cásanna imeallacha—teipeanna ciúine, ídiú diosca, agus éagsúlacht amlíne—rioscaí tromchúiseacha d’ionracas sonraí.
Trí ailtireacht pg_wal a thuiscint, trí chumraíochtaí archive_command millteach a sheachaint go docht, monatóireacht a dhéanamh ar pg_stat_archiver, agus leas a bhaint as ardáin chúltaca fiontair cosúil le CloudSave, is féidir leat bonneagar PostgreSQL athléimneach a thógáil atá in ann maireachtáil trí theipeanna crua-earraí, earráidí daonna, agus briseadh tubaisteach gan idirbheart tiomanta amháin a chailleadh.
Faigh amach na gaistí coitianta a bhaineann le cartlannú WAL PostgreSQL a fhágann go gcailltear sonraí. Foghlaim dea-chleachtais saineolaithe DBA, leideanna cumraíochta, agus conas Téarnamh go Pointe Ama (PITR) iontaofa a chinntiú do bhunachair sonraí fiontair.