Categories
Database Backup

** Discover the hidden dangers of DIY database backup scripts. Learn why custom Bash scripts fail in production, the risks of logical dumps, and how to secure your data with enterprise solutions.

Tá gach Riarthóir Bunachar Sonraí (DBA) agus Innealtóir Córais tar éis, ag pointe éigin ina ngairm, script bhlaosc (shell script) saincheaptha a scríobh chun bunachar sonraí a chúltaca. Is beagnach deasghnátha pasáiste é. Sna céimeanna tosaigh de thionscadal, is cosúil gur réiteach galánta, éadrom agus cost-éifeachtach é post cron simplí a fhorghníomhaíonn mysqldumppg_dump píopaithe isteach i gzip.

Mar sin féin, de réir mar a scálaíonn an bhonneagar, de réir mar a fhásann méideanna sonraí, agus de réir mar a éiríonn SLAanna aga fónaimh níos déine, athraíonn an script Bash 10-líne sin go ciúin ina bhuama ama. Éilíonn timpeallachtaí táirgthe ard-infhaighteacht, Cuspóirí Pointe Aisghabhála (RPO) dochta, agus Cuspóirí Ama Aisghabhála (RTO) tapa. Má bhíonn tú ag brath ar scripteanna cúltaca DIY sna timpeallachtaí seo, tugtar isteach rioscaí tromchúiseacha a bhaineann le comhsheasmhacht sonraí, teipeanna ciúine, leochaileachtaí slándála, agus próisis aisghabhála nach féidir a bhainistiú.

San alt seo, déanfaimid anailís ar lochtanna ailtireachta agus contúirtí ceilte na scripteanna cúltaca bunachar sonraí DIY, déanfaimid iniúchadh ar na gaistí teicniúla a bhaineann le cúltacaí loighciúla vs fisiciúla, agus pléifimid conas aistriú chuig réitigh ar ghrád fiontair cosúil le CloudSave chun do shonraí ríthábhachtacha a chosaint.

An Illusion of Simplicity: Anailís ar an Script Chlasaiceach DIY

Chun an chontúirt a thuiscint, ní mór dúinn breathnú ar dtús ar anatamaíocht script cúltaca DIY tipiciúil. Is minic a bhíonn cur chuige caighdeánach do bhunachar sonraí MySQL cosúil leis seo:

#!/bin/bash
# Script Cúltaca Simplí DIY MySQL
BACKUP_DIR="/mnt/backups"
DATE=$(date +%F)
DB_USER="admin"
DB_PASS="SuperSecret123!"

mysqldump -u $DB_USER -p$DB_PASS my_database | gzip > $BACKUP_DIR/mydb_$DATE.sql.gz

# Scrios cúltacaí atá níos sine ná 30 lá
find $BACKUP_DIR -type f -name "*.sql.gz" -mtime +30 -exec rm {} ;

Ar an gcéad amharc, déanann an script seo an sprioc a bhaint amach: baineann sé na sonraí amach, comhbhrúitear iad, agus bainistíonn sé coinneáil. Ach faoin dromchla, tá sé lán de lochtanna criticiúla a fhágfaidh caillteanas sonraí i dtimpeallacht táirgthe sa deireadh.

Contúirt 1: Teipeanna Ciúine agus Gaiste na Píopa

Ceann de na contúirtí is insidiúla a bhaineann le scripteanna DIY ná an teip chiúin. Sa script thuas, píopaítear (|) an t-ordú mysqldump go díreach isteach i gzip.

I Bash, is é stádas scoir píblíne ná stádas scoir an deireanach ordú sa phíblíne. Má ritheann an freastalaí bunachar sonraí as cuimhne, má thiteann an nasc, nó má thagann sé ar thábla faoi ghlas leathbhealach tríd an dumpáil, teipfidh ar mysqldump agus caithfidh sé earráid. Mar sin féin, comhbhrúfidh gzip an t-aschur páirteach a fuair sé go rathúil agus scoirfidh sé le cód stádais 0 (rath).

Tuairisceoidh do chóras monatóireachta, ag seiceáil cód scoir an phoist cron, cúltaca rathúil. Beidh comhad .gz bailí agat ar an diosca, ach istigh beidh comhad SQL gearrtha, gan úsáid. Ní bhfaighidh tú amach é seo go dtí go ndéanfaidh tú iarracht aisghabháil chriticiúil.

An Maolú (agus a theorainneacha)

Is minic a dhéanann innealtóirí iarracht é seo a phaisteáil trí láimhseáil earráidí docht a chumasú i Bash:

set -e
set -o pipefail

Cé go n-áirithíonn set -o pipefail go dteipeann ar an script má theipeann ar aon ordú sa phíblíne, éilíonn sé fós ort meicníochtaí láidre foláirimh, logála agus athiarrachta a thógáil timpeall na scripte. Nuair a bhíonn earráid líonra neamhbhuan ina chúis le teip ag 2:00 AM, faigheann script DIY bás go simplí. Láimhseálann ardáin fiontair na hearráidí neamhbhuan seo le hathiarrachtaí cliste, easpónantúla.

Contúirt 2: Comhsheasmhacht Sonraí agus Tromluí Glasála

Braitheann scripteanna DIY go mór ar chúltacaí loighciúla (mysqldump, pg_dump). Baineann cúltacaí loighciúla sonraí amach trí ráitis SELECT a rith thar gach tábla. I mbunachar sonraí táirgthe an-idirbheartach, tá sonraí ag athrú i gcónaí. Má thógann sé 45 nóiméad ar script bunachar sonraí 100GB a dhumpáil, beidh na sonraí ag tús na dumpála 45 nóiméad níos sine ná na sonraí ag an deireadh, rud a sháraíonn comhlíonadh ACID.

Comhsheasmhacht Idirbheartach MySQL

Chun léargas comhsheasmhach a bhaint amach i MySQL ag baint úsáide as InnoDB, ní mór duit bratacha sonracha a chur ar aghaidh:

mysqldump --single-transaction --quick --routines --events -u user -p db > dump.sql

Socraíonn an bhratach --single-transaction an leibhéal leithlisithe go REPEATABLE READ agus tosaíonn sé idirbheart sula ndéantar dumpáil. Mar sin féin, má tá táblaí MyISAM oidhreachta fós sa bhunachar sonraí agat, ní choiscfidh an bhratach seo iad ó ghlasáil, rud a d’fhéadfadh trácht léitheoireachta/scríofa táirgthe a stopadh agus an cúltaca ag rith. Ina theannta sin, brisfidh aon ráitis ALTER TABLE, DROP TABLE, nó RENAME TABLE a fhorghníomhaíonn forbróirí le linn an chúltaca an léargas REPEATABLE READ, rud a fhágann go dteipfidh ar an dumpáil.

PostgreSQL agus Cartlannú WAL

Maidir le PostgreSQL, soláthraíonn pg_dump cúltacaí loighciúla comhsheasmhacha, ach ní féidir le cúltacaí loighciúla amháin Aisghabháil Pointe-in-Am (PITR) a sholáthar. Má thuairteálann do bhunachar sonraí ag 4:00 PM agus má ritheadh do script cron deireanach ag meán oíche, caillfidh tú 16 uair an chloig de shonraí.

Éilíonn baint amach PITR cartlannú leanúnach ar Logaí Write-Ahead (WAL). Tá sé thar a bheith deacair script DIY a scríobh chun archive_command a láimhseáil go sábháilte.

# postgresql.conf
wal_level = replica
archive_mode = on
archive_command = 'test ! -f /mnt/wal_archive/%f && cp %p /mnt/wal_archive/%f'

Má líonann an stóráil chinn scríbe (/mnt/wal_archive/) nó má éiríonn sé neamh-infhaighte, teipfidh ar an archive_command. Stórálfaidh PostgreSQL comhaid WAL go háitiúil ansin go dtí go líonfaidh an príomhdhiosca, rud a fhágann go mbeidh cliseadh iomlán ar an mbunachar sonraí. Is annamh a bhíonn an teileiméadracht ag scripteanna DIY a theastaíonn chun monatóireacht a dhéanamh ar charnadh WAL agus chun foláireamh a thabhairt do riarthóirí sula dtarlaíonn cliseadh.

Contúirt 3: Roulette na Coinneála

Féach siar ar an ordú coinneála inár script tosaigh:

find $BACKUP_DIR -type f -name "*.sql.gz" -mtime +30 -exec rm {} ;

Is imeacht tubaisteach caillteanas sonraí é seo atá ag fanacht le tarlú. Samhlaigh cás ina mbriseann athrú cumraíochta fíordheimhniú mysqldump. Teipeann ar an script cúltacaí nua a chruthú, ach leanann an t-ordú find ag rith gach oíche, ag scriosadh comhaid atá níos sine ná 30 lá go dílis.

Tar éis 30 lá de theipeanna ciúine cúltaca, scriosfaidh an t-ordú find do chúltaca maith deireanach atá fágtha. Fágtar tú anois le nialas cúltacaí.

Úsáideann bogearraí cúltaca fiontair cosúil le CloudSave polasaithe coinneála stáit. Tuigeann sé an difríocht idir “scrios cúltacaí atá níos sine ná 30 lá” agus “cinntigh go bhfuil ar a laghad 30 pointe aisghabhála rathúil ann sula ndéantar sean-shonraí a bhearradh.”

Contúirt 4: Spotaí dalla Slándála, Criptithe agus Comhlíonta

I ré na ransomware agus na gcreat comhlíonta dochta (GDPR, HIPAA, SOC 2), is príomhsprioc iad cúltacaí. Is minic a sháraíonn scripteanna DIY dea-chleachtais slándála:

  1. Dintiúir Crua-chódaithe: Is riosca mór slándála é pasfhocail bunachar sonraí a stóráil i scripteanna gnáth-théacs nó i sainmhínithe cron. Cé go maolaíonn uirlisí cosúil le mysql_config_editor MySQL nó comhad .pgpass PostgreSQL é seo, éilíonn siad fós comhaid eochrach áitiúla a bhainistiú ar an bhfreastalaí.
  2. Easpa Criptithe ag Rest: Má dhumpáiltear SQL amh chuig diosca fágann sé PII/PHI íogair nochta.
  3. Píblínte Criptithe Coimpléascacha: Má dhéantar iarracht cúltacaí a chriptiú ar an eitilt ag baint úsáide as GPG tugtar isteach forchostas tromchúiseach LAP agus castachtaí bainistíochta eochrach.
# Píblíne cúltaca criptithe DIY
pg_dump mydb | gzip | gpg --symmetric --cipher-algo AES256 --passphrase-file /etc/keys/backup.key > backup.sql.gz.gpg

Má dhéantar an freastalaí a chur i mbaol, tá rochtain ag an ionsaitheoir ar an gcúltaca criptithe agus ar an gcomhad /etc/keys/backup.key, rud a fhágann go bhfuil an criptiú gan úsáid. Ina theannta sin, má fhágann an DBA a ghin an eochair GPG an chuideachta agus má chailltear an eochair, ní féidir na cúltacaí a aisghabháil.

Contúirt 5: Seiceáil Réaltachta RTO (Tá Aisghabháil níos deacra ná Cúltaca)

Is é an tástáil deiridh ar chúltaca ná an t-aisghabháil. Tá cáil ar chúltacaí loighciúla a ghintear le scripteanna DIY as a bheith mall le hathchóiriú. D’fhéadfadh 15 nóiméad a thógáil chun dumpáil SQL 500GB a chruthú, ach éilíonn a athchóiriú go ndéanann an t-inneall bunachar sonraí anailís ar an SQL, athfhoirgníonn sé innéacsanna, agus athríomhann sé srianta. Féadann sé seo uaireanta nó fiú laethanta a thógáil, ag scriosadh do RTO.

Maidir le bunachair shonraí táirgthe móra, tá cúltacaí fisiciúla (ag cóipeáil na gcomhad sonraí iarbhír) éigeantach. Cé go bhfuil uirlisí cosúil le Percona XtraBackup nó pg_basebackup ann, tá sé thar a bheith casta iad a fhilleadh i scripteanna Bash DIY. Ní mór duit léargais LVM a bhainistiú, córas comhad a láimhseáil, agus a chinntiú go n-aistrítear an cúltaca lasmuigh den láithreán gan an comhéadan líonra a sháithiú.

Gaiste Léargais LVM

Déanann go leor innealtóirí iarracht cúltacaí fisiciúla “zero downtime” a dhéanamh ag baint úsáide as léargais LVM:

# Cruthaigh léargas
lvcreate --size 20G --snapshot --name db_snap /dev/vg0/db_vol

# Mount agus cóipeáil
mount /dev/vg0/db_snap /mnt/snap
tar -czf /backups/db_physical.tar.gz /mnt/snap/mysql

Má bhíonn borradh tobann sa scríobh I/O ag an mbunachar sonraí, is féidir leis an léargas LVM 20G líonadh láithreach. Nuair a líonann léargas LVM, éiríonn sé neamhbhailí, agus teipeann ar an gcúltaca. Níos measa fós, is féidir le léargais LVM a úsáidtear go mór feidhmíocht I/O an phríomh-imleabhar bunachar sonraí a dhíghrádú go mór, rud a fhágann spící latency feidhmchláir.

Aistriú chuig Cosaint ar Ghrád Fiontair

Is cloch mhíle aibíochta ríthábhachtach é an t-aistriú ó scripteanna DIY go hardán fiontair d’aon fhoireann bhonneagair. Is é an sprioc bogadh ó “ag súil go rith an script” go dtí cruthúnas cripteagrafach ar inaisghabhálacht a bheith agat.

Tá ardáin cosúil le CloudSave innealtóireacht go sonrach chun spotaí dalla na scripteanna DIY a dhíchur. Trí ghníomhairí atá feasach ar fheidhmchláir a imscaradh, idirghníomhaíonn CloudSave go díreach le APIanna an bhunachar sonraí (MySQL, PostgreSQL, MS SQL, Oracle) chun cúltacaí fisiciúla agus loighciúla comhsheasmhacha a eagrú gan táblaí a ghlasáil nó feidhmíocht a dhíghrádú.

Príomhbhuntáistí a bhaineann le Bogadh ar shiúl ó Scripteanna:

  1. Fíorú Uathoibrithe: Ní thógann ardáin nua-aimseartha cúltacaí amháin; déanann siad tástáil orthu. Is féidir le CloudSave cás bunachar sonraí sealadach a chasadh suas go huathoibríoch, an cúltaca a athchóiriú, seiceálacha comhsheasmhachta a rith (m.sh., DBCC CHECKDB), agus é a chuimilt, ag soláthar tuarascáil fíoraithe go bhfuil an cúltaca inúsáidte i ndáiríre.
  2. Stóráil Dho-athraithe: Chun ransomware a chomhrac, ní mór cúltacaí a bheith do-athraithe. Ní féidir le scripteanna DIY scríobh go héasca chuig stóráil WORM (Write Once, Read Many). Comhtháthaíonn réitigh fiontair go dúchasach le S3 Object Lock agus stóráil scamall do-athraithe, ag cinntiú, fiú má dhéantar freastalaí a chur i mbaol go hiomlán, nach féidir leis an ionsaitheoir na cúltacaí a scriosadh nó a chriptiú.
  3. PITR Simplithe: In ionad cúltaca bonn agus na céadta comhad WAL a fhuáil le chéile de láimh ag baint úsáide as paraiméadair chasta recovery.confpostgresql.auto.conf, soláthraíonn ardáin amlíne amhairc. Níl le déanamh agat ach an nóiméad cruinn ar mhaith leat a athchóiriú a roghnú, agus láimhseálann na bogearraí an t-athsheinm loga go huathoibríoch.
  4. Dúbláil agus Comhbhrú: Braitheann scripteanna DIY ar gzip, a chomhbhrúitear gach comhad ina n-aonar. Úsáideann bogearraí cúltaca fiontair dúbláil domhanda ar leibhéal an bhloc, rud a laghdaíonn costais stórála agus bandaleithead líonra go mór agus cúltacaí á n-aistriú lasmuigh den láithreán.

Conclúid

Tá sé éasca script Bash saincheaptha a scríobh chun bunachar sonraí a chúltaca. Tá sé beagnach dodhéanta script a scríobh a láimhseálann teipeanna píblíne ciúine, a ráthaíonn comhsheasmhacht ACID, a bhainistíonn eochracha cripteagrafacha go slán, a choscann caillteanas sonraí bunaithe ar choinneáil, agus a ráthaíonn SLAanna dochta RTO/RPO.

I dtimpeallachtaí táirgthe, is é an bunachar sonraí an tsócmhainn is tábhachtaí sa ghnó. Is riosca é nach féidir le haon fhiontar a íoc a chosaint a chóireáil mar thionscadal taobh a chothaítear le cúpla céad líne de script bhlaosc. Trí iniúchadh a dhéanamh ar do straitéisí cúltaca reatha, teorainneacha na ndumpálacha loighciúla a thuiscint, agus aistriú chuig ardáin láidre uathoibrithe cosúil le CloudSave, is féidir le foirne DevOps agus DBA an “fachtóir bus” de scripteanna saincheaptha a dhíchur agus a chinntiú go bhfuil a gcuid sonraí fíor-athléimneach.

Categories