Prueba de las restauraciones
Una copia de seguridad que no puede restaurarse no sirve de nada.
Prueba de las restauraciones es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Academy incluye 4 lecciones en total.
Una copia de seguridad que no puede restaurar es inútil
Muchos equipos invierten tiempo en configurar copias de seguridad automatizadas, pero nunca verifican si realmente pueden utilizarse para recuperar los datos. Una copia de seguridad que falla durante la restauración no es una copia de seguridad en absoluto.
En esta lección se explica la disciplina de las pruebas de restauración: cómo verificar que sus copias de seguridad funcionan antes de que un desastre real le obligue a descubrirlo de la peor manera.
¿En qué consiste una prueba de restauración?
Una prueba de restauración consiste en tomar un archivo de copia de seguridad y cargarlo en una base de datos — normalmente, una instancia de prueba independiente — para después consultar esa base de datos y confirmar que los datos están completos y son coherentes.
Los pasos son: 1) Obtenga el archivo de copia de seguridad. 2) Restáurelo en un entorno aislado. 3) Ejecute consultas de validación. 4) Compare los resultados con producción.
Creación de una instantánea de línea base para comparar
Antes de poder verificar una restauración, necesita una línea base: un conjunto conocido de recuentos y sumas de comprobación de producción que pueda comparar con la copia restaurada.
Ejecute esto en su base de datos de producción y registre los resultados:
SELECT
'orders' AS tbl, COUNT(*) AS row_count FROM orders
UNION ALL
SELECT
'customers' AS tbl, COUNT(*) AS row_count FROM customers
UNION ALL
SELECT
'order_items' AS tbl, COUNT(*) AS row_count FROM order_items;Verificación de los recuentos de filas después de la restauración
Una vez restaurada la copia de seguridad en una base de datos de prueba, ejecute la misma consulta y compare los números. Si los recuentos coinciden, la estructura básica de la restauración es correcta.
Una discrepancia indica inmediatamente que se perdieron datos durante la copia de seguridad o la restauración, antes de que tenga que tocar producción.
-- Run on the RESTORED test database
SELECT
'orders' AS tbl, COUNT(*) AS row_count FROM orders
UNION ALL
SELECT
'customers' AS tbl, COUNT(*) AS row_count FROM customers
UNION ALL
SELECT
'order_items' AS tbl, COUNT(*) AS row_count FROM order_items;Comprobación de los datos más recientes
Los recuentos de filas confirman la cantidad, pero no confirman la actualidad. Compruebe que la base de datos restaurada contenga registros recientes; la copia de seguridad debe reflejar los datos hasta el momento en que se realizó.
SELECT
MAX(created_at) AS latest_order,
MIN(created_at) AS oldest_order,
COUNT(*) AS total_orders
FROM orders;Validación de la integridad referencial
Aunque los recuentos de filas coincidan, una restauración puede dejar filas huérfanas: registros secundarios cuyo registro principal ya no existe. Esto ocurre a menudo cuando las claves foráneas no se aplican durante la copia de seguridad o la restauración.
Utilice un LEFT JOIN para detectar elementos de pedido huérfanos:
SELECT
oi.id AS orphaned_item_id,
oi.order_id AS missing_order_id
FROM order_items oi
LEFT JOIN orders o ON o.id = oi.order_id
WHERE o.id IS NULL;Uso de una suma de comprobación para detectar corrupción
En las tablas críticas, genere una suma de comprobación de los datos para detectar corrupción a nivel de bits. En PostgreSQL puede combinar MD5 con una conversión de la fila completa.
Si la suma de comprobación de producción y la de la copia restaurada difieren, los datos se modificaron o se corrompieron en algún momento.
SELECT
MD5(string_agg(row_data, ',' ORDER BY row_data)) AS table_checksum
FROM (
SELECT CAST(ROW(id, customer_id, total, created_at) AS TEXT) AS row_data
FROM orders
) sub;Creación de una tabla de validación de restauraciones
Para realizar un seguimiento del historial de las pruebas de restauración, cree una tabla de registro de validación específica. Registre cada ejecución de prueba con la fecha de la copia de seguridad, los recuentos de filas restaurados y si la validación se aprobó.
CREATE TABLE IF NOT EXISTS restore_validation_log (
id SERIAL PRIMARY KEY,
backup_taken_at TIMESTAMP NOT NULL,
restored_at TIMESTAMP NOT NULL DEFAULT NOW(),
table_name VARCHAR(100) NOT NULL,
expected_rows INT NOT NULL,
actual_rows INT NOT NULL,
passed BOOLEAN NOT NULL
);Inserción de un resultado de validación
Después de cada prueba de restauración, inserte una fila en el registro de validación. Esto le proporciona un registro de auditoría que demuestra que las copias de seguridad se probaron y muestra un patrón de aprobaciones y fallos a lo largo del tiempo.
INSERT INTO restore_validation_log
(backup_taken_at, table_name, expected_rows, actual_rows, passed)
VALUES
('2024-06-09 02:00:00', 'orders', 15482, 15482, TRUE),
('2024-06-09 02:00:00', 'customers', 8201, 8201, TRUE),
('2024-06-09 02:00:00', 'order_items', 47310, 47310, TRUE);Consulta del historial de validaciones
Revise periódicamente el registro de validación para detectar cualquier regresión. Una copia de seguridad que se aprobó la semana pasada pero falla esta semana indica un problema en su proceso de copias de seguridad que debe investigarse de inmediato.
SELECT
backup_taken_at,
table_name,
expected_rows,
actual_rows,
passed,
CASE
WHEN passed THEN 'OK'
ELSE 'MISMATCH - investigate!'
END AS status
FROM restore_validation_log
ORDER BY backup_taken_at DESC, table_name;Verificación de la recuperación a un momento dado
Las bases de datos modernas admiten la recuperación a un momento dado (PITR), que permite restaurar una base de datos a cualquier momento mediante una copia de seguridad base y archivos de WAL (Write-Ahead Log).
Para verificar que PITR funciona, restaure a una marca de tiempo conocida y compruebe que un registro creado después de esa marca de tiempo NO aparezca en la base de datos restaurada:
-- After a PITR restore to '2024-06-09 03:00:00',
-- this order (created at 03:45) should NOT exist:
SELECT id, created_at, total
FROM orders
WHERE created_at > '2024-06-09 03:00:00'
ORDER BY created_at
LIMIT 5;
-- Zero rows = PITR worked correctlyComprobación rápida
¿Cuál de las siguientes consultas es más útil para detectar registros secundarios huérfanos después de restaurar una copia de seguridad?
Resumen de la lección: pruebas de restauración
En esta lección ha aprendido por qué las pruebas de restauración son una parte obligatoria de cualquier estrategia de copias de seguridad y cómo implementarlas con SQL:
- Instantáneas de línea base — registre los recuentos de filas de producción antes de realizar las pruebas.
- Comparación de recuentos de filas — ejecute la misma consulta en la base de datos restaurada y compare los resultados.
- Comprobación de actualidad — confirme que los registros más recientes coincidan con la ventana de copia de seguridad esperada.
- Integridad referencial — utilice LEFT JOIN para encontrar filas secundarias huérfanas.
- Validación mediante sumas de comprobación — detecte corrupción a nivel de bits con agregaciones MD5.
- Tabla de registro de validación — realice un seguimiento de cada ejecución de prueba para disponer de un historial auditable.
- Verificación de PITR — confirme que la recuperación a un momento dado llega al momento correcto.
Una copia de seguridad solo es tan buena como la última prueba de restauración realizada correctamente. Programe estas comprobaciones con regularidad y trate cualquier fallo como un incidente crítico.
Preguntas frecuentes
¿La lección «Prueba de las restauraciones» es gratis?
Sí — el texto completo de «Prueba de las restauraciones» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Academy, actualiza a CoddyKit PRO. El curso de SQL Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Prueba de las restauraciones»?
Una copia de seguridad que no puede restaurarse no sirve de nada. Practicas SQL Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar SQL Academy?
No se requiere experiencia previa. SQL Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Prueba de las restauraciones»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de SQL Academy?
Sí. Cada lección de SQL Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Copias de seguridad lógicas y físicas
- Recuperación a un momento dado
- Prueba de las restauraciones
- Planificación de recuperación ante desastres