Base de conocimientos

Haz una instantánea y restáurala

Cómo se toman las instantáneas, por qué la consistencia de crash suele ser suficiente, cómo silenciar cuando no lo es, y qué hace una restauración en una instancia en ejecución.

Qué es una instantánea aquí

Una copia puntual del disco de la instancia, tomada en la capa de almacenamiento y escrita en un almacenamiento diferente al de la instancia. Los espacios se venden en paquetes; un espacio contiene una instantánea y se reutiliza al sobrescribirla. Tomar una no pausa la instancia, y el costo de copia en escritura en los minutos posteriores es lo bastante pequeño como para que rara vez aparezca en una gráfica de latencia.

No es una copia de seguridad. Una instantánea vive en el mismo sitio que la instancia, lo que te protege de tus propios rm y no del sitio. La copia de seguridad fuera del nodo es un complemento aparte, cifrada en tu lado, escrita en otra ciudad.

Cómo tomar una

curl -s -X POST https://paragonvps.com/api/v1/instances/<instance-id>/snapshots -H "Authorization: Bearer $Paragon_TOKEN" -H "Content-Type: application/json" -d '{"label":"pre-upgrade"}'
curl -s https://paragonvps.com/api/v1/instances/<instance-id>/snapshots -H "Authorization: Bearer $Paragon_TOKEN" | jq -r '.[] | .id + " " + .label + " " + .created'

Consistente ante caídas, y cuándo no es suficiente

Una instantánea de una instancia en ejecución es exactamente lo que el disco parecería tras un corte de energía. PostgreSQL, MariaDB y todos los sistemas de archivos con journaling en nuestras imágenes se recuperan de ese estado al arrancar, porque recuperarse de él es para lo que están. El riesgo no es realmente la base de datos. Es tu propia aplicación, a medio camino de escribir dos archivos que deben concordar entre sí.

Donde necesites una línea limpia, vacía y congela el volumen de datos durante el segundo que tarda:

sync
fsfreeze -f /srv/data
# take the snapshot here
fsfreeze -u /srv/data

Congela el volumen de datos. Nunca congeles /. Un sistema de archivos raíz congelado impide que el proceso que debe descongelarlo haga cualquier cosa, y la salida es un reinicio forzado.

Para una base de datos, la opción más ordenada es tomar la instantánea y dejar que el motor se recupere, y luego verificar que lo hizo:

sudo -u postgres pg_isready
journalctl -u postgresql -n 50

Restaurar

Una restauración detiene la instancia, intercambia el disco por la instantánea y la inicia de nuevo. Segundos, no minutos. Las direcciones no cambian, el DNS inverso que configuraste se mantiene, y todo lo escrito desde la instantánea desaparece.

Eso incluye lo que te llevó a decidir restaurar. Si hay alguna posibilidad de que quieras leer los registros del estado roto, toma una instantánea de él primero y luego restaura encima.

curl -s -X POST https://paragonvps.com/api/v1/snapshots/<snapshot-id>/restore -H "Authorization: Bearer $Paragon_TOKEN"

Programación

Las programaciones por instancia llegaron con la revisión 5.4 de la plataforma. Diaria a una hora fija con una ventana móvil es la opción común: la más antigua se elimina cuando los espacios están llenos.

curl -s -X PUT https://paragonvps.com/api/v1/instances/<instance-id>/snapshot-schedule -H "Authorization: Bearer $Paragon_TOKEN" -H "Content-Type: application/json" -d '{"cron":"20 3 * * *","keep":7}'

Elige una hora que sea tranquila para tu carga de trabajo, no para la nuestra. El costo de almacenamiento de una instantánea es proporcional a lo que cambia después, así que una programación que se activa durante tu trabajo nocturno por lotes retiene mucho más datos que una que se activa una hora después.

Cancelar una instancia elimina sus instantáneas

Inmediatamente, sin período de gracia, porque se almacenan contra la instancia. Cualquier cosa que quieras conservar más allá de la cancelación pertenece a la copia de seguridad fuera del nodo o a algún lugar que no seamos nosotros en absoluto.

Listo cuando tú lo estés

Elige una ciudad. Elige un tamaño. Paga con monedas.

Sin fórmulas sobre quién eres, sin esperar a que un humano te apruebe, sin llamada telefónica para verificar nada. La factura se liquida y las credenciales llegan a tu bandeja de entrada.