Respaldar que las bases de datos de los clientes estén siempre disponibles es una de las cosas más importantes que hacemos en Lakebase. Hemos diseñado el sistema con superfluidad en todos los niveles, conmutando automáticamente y recuperando su almohadilla de datos en caso de fallas de hardware o software.
En un sistema de gran escalera, tal fallas no planificadas son una expectativa estadística, pero para una almohadilla de datos individual, no son eso frecuente. Para una almohadilla de datos individual, mantenimiento planificado tiende a causar más interrupción de la carga de trabajo. Posteriormente de todo, una almohadilla de datos típica recibe parches con más frecuencia de la que experimenta fallas de hardware.
Hoy en día, casi todos los proveedores de bases de datos operan con ventanas de mantenimiento: períodos en los que su almohadilla de datos corta todas las conexiones activas y se actualiza y reinicia en un proceso que puede tardar desde unos pocos segundos hasta minutos. Mientras que Lakebase te permite programar actualizaciones en un momento inmejorable para usted, sigue siendo una breve interrupción cuando sucede.
Creemos que podemos hacerlo mejor. Esta publicación de blog es la primera de una serie sobre cómo estamos aprovechando la edificio de la almohadilla del estanque para eliminar por completo el impacto del mantenimiento planificado. Nuestro objetivo: hacer que las actualizaciones de versiones y los parches de seguridad pasen completamente desapercibidos.
En esta publicación, cubriremos precalentamiento: una técnica que evita cualquier degradación del rendimiento que sigue al reinicio de la almohadilla de datos. En publicaciones futuras, analizaremos las mejoras en el proceso de conmutación por error en sí y optimizaciones adicionales que nos acercarán a una verdadera aplicación de parches sin tiempo de inactividad.
El problema de los reinicios en frío
El desafío al reiniciar PostgreSQL es que los cachés en memoria (específicamente el distinción del búfer y distinción de archivos locales) están perdidos. Aunque la almohadilla de datos vuelve a estar en tilde muy rápidamente (1 segundo @ P99), la carga de trabajo puede estudiar una desaceleración en los primeros minutos luego del reinicio: vimos una reducción de ~70 % en el TPS de pgbench. Esto se debe a una mengua tasa de aciertos de la distinción mientras los datos se leen desde el almacenamiento y la distinción se calienta. Si acertadamente esto puede parecer sólo un problema de rendimiento, puede ser un problema de disponibilidad si la desaceleración es lo suficientemente profundo como para que la almohadilla de datos no pueda seguir el ritmo de la carga de trabajo y se produzcan tiempos de calma.
Existen técnicas para tocar esto en Postgres: pg_precalentar se puede utilizar para calentar cachés de búfer. Sin secuestro, esto corre luego un reinicio cuando la carga de trabajo ya se ve afectada. La replicación de transmisión se puede utilizar para configurar una réplica, que se puede precalentar antaño de realizar la conmutación por error (promocionarla a primaria). Sin secuestro, esto requiere crear una réplica completa y orquestar cuidadosamente el precalentamiento antaño de la conmutación por error.
Precalentamiento en la edificio Lakebase
En el edificio de la almohadilla del estanquecombinamos nodos informáticos elásticos y sin estado con almacenamiento compartido y desagregado. Los nodos de cálculo gastar cachés locales para ofrecer el mayor rendimiento sin ofrecer las propiedades sin servidor. Si acertadamente el distinción enfrenta los mismos problemas de inicio en frío descritos anteriormente, tenemos más opciones con la edificio Lakebase.
Transmitido que las réplicas informáticas de Postgres de Lakebase no tienen estado, podemos activarlas o desactivarlas según demanda. Utilizamos esto y lo combinamos con el precalentamiento forzoso en reinicios planificados para minimizar el impacto en el rendimiento de la carga de trabajo. Así es como funciona:
- Está habitable una nueva traducción de la imagen informática Postgres de Lakebase. Recibirá una notificación y podrá programar el reinicio en el momento que mejor le convenga.
- Poco antaño de la hora programada, nuestro plano de control activa un nuevo cálculo de Postgres en segundo plano. No lo ve y no se le hechura por ello. La carga de trabajo del primario flagrante no se ve afectada.
- Se envía una serie de páginas en la distinción del primario flagrante al nuevo proceso. El nuevo proceso carga esas páginas en la distinción desde nuestro nivel de almacenamiento compartido sin afectar al principal.
- El nuevo proceso se suscribe al WAL (registro de escritura anticipada) para perseverar su distinción actualizado. Para viejo eficiencia, a diferencia de una réplica regular de Postgres, puede ignorar todos los registros WAL que no afecten su distinción. Obtiene el WAL de nuestro Guardianessin suponer una carga adicional para el proceso principal.
- Cuando se completa el precalentamiento, apagamos rápidamente el antiguo sistema principal, promovemos el nuevo proceso a principal y lo activamos. La promoción utiliza el estereotipado pg_promoción desde OSS Postgres y no reinicia el servidor de almohadilla de datos.
Antiguamente:

Posteriormente:

Con la edificio de almohadilla de estanque, obtienes esto sin costo adicional, sin fertilizar por réplicas adicionales. A partir de hoy, todos los reinicios planificados de los puntos finales de recitación/escritura se realizan de esta guisa sin que usted tenga que hacer falta. Pronto incluso lo ampliaremos a terminales de solo recitación.
Resultados
Para determinar el impacto de los cachés en frío, ejecutamos 10 GB de pgbench (factótum de escalera 670) en una almohadilla de datos mientras la reiniciaba; primero con precalentamiento preparado, luego sin precalentamiento. El primer croquis muestra una carga de trabajo de solo recitación (pgbench “solo preferir”), mientras que el segundo muestra una carga de trabajo de recitación y escritura (pgbench “aggiornamento simple”).


En uno y otro casos, vemos que el rendimiento se recupera casi instantáneamente con el precalentamiento. Sin precalentamiento, la recuperación es mucho más lenta mientras la distinción fría se calienta. La diferencia es más marcada para la carga de trabajo de solo recitación porque el precalentamiento progreso la tasa de aciertos de distinción, lo que ayuda a las lecturas proporcionalmente más que a las escrituras.