Categories
Disaster Recovery

**

Per als enginyers DevOps, els administradors de bases de dades (DBA) i els arquitectes de sistemes informàtics, l’Objectiu de Temps de Recuperació (RTO) i l’Objectiu de Punt de Recuperació (RPO) són més que simples paraules de moda de continuïtat de negoci: són restriccions d’enginyeria estrictes. Quan es gestionen bases de dades crítiques, no calcular, planificar i validar correctament aquestes mètriques pot provocar una pèrdua de dades catastròfica i un temps d’inactivitat prolongat.

En els entorns empresarials moderns, el càlcul de l’RTO i l’RPO requereix una comprensió profunda dels interns de la base de dades, l’E/S d’emmagatzematge, el rendiment de la xarxa i la mecànica dels registres de transaccions. Aquesta guia explora les metodologies tècniques per calcular, provar i optimitzar l’RTO i l’RPO per a sistemes de bases de dades de producció.

Deconstruint l’RPO (Objectiu de Punt de Recuperació) en sistemes de bases de dades

L’RPO defineix la quantitat màxima acceptable de pèrdua de dades mesurada en temps. Si el vostre RPO és de 15 minuts, un desastre que es produeixi a les 12:00 PM significa que heu de ser capaços de recuperar totes les transaccions confirmades almenys fins a les 11:45 AM.

Per a les bases de dades, l’RPO ve dictat per la vostra estratègia de gestió de registres de transaccions (WAL a PostgreSQL, Redo Logs a Oracle, Transaction Logs a SQL Server).

La mecànica de la pèrdua de dades i la generació de registres

Per calcular l’RPO assolible, primer heu d’entendre la taxa de generació de registres de transaccions de la vostra base de dades. Si envieu registres a un repositori de còpies de seguretat cada 15 minuts, però la vostra xarxa no pot transferir 15 minuts de registres dins d’aquest període, el vostre RPO real es degradarà contínuament.

Podeu establir una línia de base de la vostra taxa de generació de registres utilitzant ordres SQL natives. Per exemple, a PostgreSQL (versió 10+), podeu mesurar la taxa de generació del registre d’escriptura prèvia (WAL) durant un interval específic:

-- Executeu això a T=0
SELECT pg_current_wal_lsn() AS start_lsn;

-- Espereu exactament 5 minuts (300 segons), després executeu:
SELECT pg_current_wal_lsn() AS end_lsn,
       pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), 'START_LSN_VALUE')) AS wal_generated_size,
       pg_wal_lsn_diff(pg_current_wal_lsn(), 'START_LSN_VALUE') / 300 AS bytes_per_second;

Si aquesta consulta revela que esteu generant 50 MB/s de dades WAL durant la càrrega màxima, un RPO de 15 minuts requereix transferir 45 GB de dades de registre al vostre emmagatzematge de còpies de seguretat. La vostra xarxa i els vostres objectius d’emmagatzematge han de suportar velocitats d’escriptura sostingudes superiors a 50 MB/s per mantenir aquest RPO.

Impacte de la replicació síncrona vs. asíncrona

Molts DBA confien en la replicació d’Alta Disponibilitat (HA) per satisfer l’RPO. Tanmateix, la replicació no és una còpia de seguretat. Una taula eliminada (DROP TABLE users;) es replica a l’instant.

Quan s’utilitza la replicació per a la Recuperació davant Desastres (DR), el mode de replicació afecta directament l’RPO:
* Replicació síncrona: Garanteix un RPO de zero (RPO=0). La base de dades principal no confirmarà una transacció fins que l’espera (standby) confirmi la recepció. El compromís és un augment de la latència en les operacions d’escriptura principals.
* Replicació asíncrona: Introdueix un retard de replicació. El vostre RPO és efectivament igual al vostre retard de replicació actual.

Per supervisar el retard de la replicació asíncrona a PostgreSQL, utilitzeu:

SELECT application_name,
       client_addr,
       state,
       sync_state,
       pg_wal_lsn_diff(pg_current_wal_lsn(), replay_lsn) AS replication_lag_bytes
FROM pg_stat_replication;

Deconstruint l’RTO (Objectiu de Temps de Recuperació) per a bases de dades a gran escala

L’RTO és la durada màxima tolerable d’inactivitat. Calcular l’RTO de la base de dades és notòriament complex perquè no és simplement el temps que es triga a copiar els fitxers de tornada a un servidor.

El model matemàtic per al càlcul de l’RTO

Un càlcul realista de l’RTO de la base de dades ha de tenir en compte quatre fases diferents:

RTO = T(infra) + T(transferència) + T(restauració) + T(recuperació)

  1. T(infra) – Provisió d’infraestructura: Temps per posar en marxa el procés i l’emmagatzematge de reemplaçament. (Pot ser gairebé zero amb llocs de DR preprovisionats o canonades d’Infraestructura com a Codi).
  2. T(transferència) – Transferència de dades: Temps per moure la càrrega útil de la còpia de seguretat des del repositori al servidor de la base de dades.
  3. T(restauració) – Restauració física: Temps per escriure els fitxers de dades al disc de destinació.
  4. T(recuperació) – Recuperació d’errors de la base de dades: Temps perquè el motor de la base de dades reprodueixi els registres de transaccions, avanci les transaccions confirmades i reverteixi les no confirmades.

Càlcul dels temps de transferència i restauració

Per calcular T(transferència) i T(restauració), heu d’establir una línia de base de l’amplada de banda de la vostra xarxa i les IOPS/rendiment del disc. No confieu en els màxims teòrics; proveu la vostra infraestructura real.

Utilitzeu iperf3 per provar el rendiment de la xarxa entre el vostre repositori de còpies de seguretat i el servidor de la base de dades:

# Al repositori de còpies de seguretat (servidor)
iperf3 -s

# Al servidor de la base de dades (client)
iperf3 -c <backup_repo_ip> -t 60 -P 4

Utilitzeu fio per provar el rendiment d’escriptura seqüencial dels vostres volums d’emmagatzematge de bases de dades, simulant una operació de restauració de base de dades:

fio --name=restore_sim --ioengine=libaio --rw=write --bs=1M --size=10G --numjobs=4 --iodepth=32 --direct=1 --filename=/var/lib/postgresql/data/testfile

Si la vostra base de dades és de 5 TB i les vostres proves fio mostren una velocitat d’escriptura sostinguda màxima de 500 MB/s, el vostre T(restauració) mínim absolut és d’aproximadament 2,8 hores. Si el vostre SLA empresarial exigeix un RTO d’1 hora, les restauracions tradicionals en streaming fallaran. Heu de pivotar la vostra arquitectura cap a instantànies (snapshots) a nivell d’emmagatzematge o replicació a nivell de bloc.

La trampa oculta: T(recuperació)

La variable que se subestima més sovint és T(recuperació). Si restaureu una còpia de seguretat completa setmanal i necessiteu aplicar 6 dies de registres de transaccions per assolir el vostre RPO, el motor de la base de dades ha de reproduir seqüencialment cada transacció.

Reproduir 500 GB de registres de transaccions pot trigar hores, amb un coll d’ampolla important pel rendiment de la CPU d’un sol fil i les IOPS d’emmagatzematge. Per minimitzar T(recuperació), augmenteu la freqüència de les vostres còpies de seguretat completes o diferencials.

Tancant la bretxa: passos pràctics per validar l’RTO i l’RPO

Calcular l’RTO i l’RPO teòrics és només el primer pas. Els entorns crítics requereixen una validació contínua.

Pas 1: Implementar l’arxivat continu

Per aconseguir RPO de menys d’un minut sense la penalització de rendiment de la replicació síncrona, implementeu l’arxivat continu de registres. En lloc d’esperar que un fitxer de registre s’ompli (cosa que podria trigar hores durant períodes de poc trànsit), forceu els canvis de registre a intervals regulars.

A SQL Server, podeu automatitzar les còpies de seguretat freqüents del registre de transaccions:

BACKUP LOG [MissionCriticalDB] 
TO DISK = N'\BackupRepoSQLMissionCriticalDB_Log.trn' 
WITH NOFORMAT, NOINIT, 
NAME = N'MissionCriticalDB-Transaction Log Backup', 
SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10;

Bona pràctica: Programeu aquesta tasca perquè s’executi cada 1-5 minuts segons els vostres requisits d’RPO.

Pas 2: Automatitzar les proves de restauració

Una còpia de seguretat no provada és només un concepte teòric. Per garantir el vostre RTO calculat, heu de realitzar proves de restauració automatitzades.

Les plataformes de còpia de seguretat empresarials com CloudSave simplifiquen això proporcionant proves de recuperació automatitzades i aïllades. CloudSave pot posar en marxa automàticament un entorn sandbox, muntar la còpia de seguretat més recent, realitzar una recuperació completa de la base de dades i executar scripts de validació personalitzats (p. ex., DBCC CHECKDB per a SQL Server) per mesurar l’RTO exacte i garantir la integritat de les dades. Això transforma l’RTO d’una suposició calculada en una mètrica provada i reportable.

Pas 3: Supervisar i alertar sobre incompliments de l’SLA

La vostra pila de supervisió (Prometheus, Datadog, Zabbix) ha de fer un seguiment actiu de les mètriques que amenacen els vostres SLA d’RTO/RPO. Les regles d’alerta s’han de configurar per a:
* Errors en les tasques de còpia de seguretat: Amenaça immediata per a l’RPO.
* Latència d’enviament de registres: Si la transferència de registres triga més que l’interval de generació.
* Limitació d’IOPS d’emmagatzematge: Els proveïdors de núvol (com AWS EBS) limiten les IOPS si s’esgoten els crèdits de ràfega, cosa que destruirà silenciosament el vostre RTO durant una emergència real.

Optimització de l’arquitectura de còpies de seguretat de bases de dades per complir amb SLA estrictes

Quan els càlculs matemàtics revelen que la vostra arquitectura actual no pot complir amb els SLA empresarials, heu d’optimitzar la vostra estratègia de còpia de seguretat.

1. Aprofiteu les còpies de seguretat incrementals a nivell de bloc

Els bolcats de bases de dades tradicionals (còpies de seguretat lògiques com pg_dump o mysqldump) són massa lents per als RTO crítics. Utilitzeu còpies de seguretat físiques a nivell de bloc. Les còpies de seguretat incrementals a nivell de bloc només copien els blocs de disc que han canviat des de l’última còpia de seguretat, reduint dràsticament el T(transferència) i la sobrecàrrega de la xarxa.

2. Utilitzeu instantànies d’emmagatzematge

Per a bases de dades de diversos terabytes que requereixen un RTO inferior a 15 minuts, la còpia de fitxers tradicional és físicament impossible a través de xarxes estàndard. La integració amb instantànies d’emmagatzematge SAN o natives del núvol (p. ex., AWS EBS Snapshots, Pure Storage) permet un T(restauració) gairebé instantani. El motor de la base de dades només ha de realitzar la recuperació d’errors a la instantània.

3. Implementar el paral·lelisme

Assegureu-vos que les vostres eines de còpia de seguretat i restauració utilitzin el multithreading. Quan restaureu una base de dades PostgreSQL utilitzant pgbackrest o una base de dades SQL Server, definiu explícitament fils de treball paral·lels per saturar l’amplada de banda de xarxa i disc disponible.

# Exemple de restauració paral·lela a pgBackRest
pgbackrest --stanza=prod_db --process-max=8 restore

Conclusió

Calcular l’RTO i l’RPO per a bases de dades crítiques és un exercici rigorós d’enginyeria de sistemes. Requereix que els DBA vagin més enllà de les configuracions de còpia de seguretat predeterminades i modelin matemàticament la seva E/S d’emmagatzematge, la capacitat de la xarxa i la mecànica de recuperació de la base de dades.

En establir una línia de base de les taxes de generació de registres, entendre les fases diferents de la recuperació de la base de dades i implementar proves automatitzades mitjançant plataformes robustes com CloudSave, els equips informàtics poden garantir amb confiança els seus SLA de recuperació davant desastres. Recordeu: en l’àmbit de l’administració de bases de dades, l’esperança no és una estratègia i les còpies de seguretat no provades són un passiu.

Apreneu com els enginyers DevOps i els DBA poden calcular, provar i optimitzar amb precisió l’RTO i l’RPO per a bases de dades crítiques utilitzant mecàniques de recuperació avançades, eines CLI i proves automatitzades.