Preparación del Entorno
Inicializar la Base de Datos y el Estado Local
Después de configurar tu base de datos y los ajustes de cubos, antes de ejecutar Stellar Core por primera vez, debes inicializar la base de datos:
stellar-core new-db
Este comando inicializará la base de datos, así como el directorio de cubos, y luego saldrá. También puedes usar este comando si tu base de datos se corrompe y deseas reiniciarla desde cero.
Mantenimiento Automático
Algunas tablas en stellar-core se utilizan para publicar datos de ledger en archivos de historial.
Si no se gestionan correctamente, esas tablas crecerán sin límites. Para evitar esto, un programador integrado eliminará datos de los ledgers antiguos que ya no son utilizados por otras partes del sistema.
Por defecto, stellar-core realizará este mantenimiento automático. Los campos de configuración que controlan el comportamiento del mantenimiento automático son:
AUTOMATIC_MAINTENANCE_PERIOD
,AUTOMATIC_MAINTENANCE_COUNT
Si necesitas regenerar los metadatos, la forma más sencilla es reproducir ledgers para el rango que te interese después de (opcionalmente) limpiar la base de datos con el comando new-db
referenciado anteriormente.
En algunos casos, el mantenimiento automático tiene demasiado trabajo que hacer para volver al estado nominal. Esto puede ocurrir tras grandes operaciones de actualización, como al realizar una actualización completa que puede crear un retraso de decenas de millones de ledgers.
Si esto sucede, el rendimiento de la base de datos puede ser restaurado. El nodo requerirá un tiempo de inactividad mientras realizas los siguientes comandos de recuperación:
- ejecuta el comando http
maintenance
manualmente con un gran número de ledgers, y - realiza una operación de mantenimiento de la base de datos como
VACUUM FULL
para recuperar/reconstruir la base de datos según sea necesario.
Instantáneas y Restauración de Metadatos
Algunas implementaciones de Stellar Core y Horizon querrán retener metadatos para la historia completa de la red. Estos metadatos pueden ser bastante grandes y computacionalmente costosos de regenerar de nuevo al reproducir ledgers en stellar-core desde un estado inicial de base de datos vacío, como se describe en la sección anterior.
Esto puede ser especialmente costoso si debe ejecutarse más de una vez. Por ejemplo, al poner en línea un nuevo nodo. O incluso si se ejecuta un único nodo con Horizon, ya habiendo ingerido los metadatos una vez: una versión posterior de Horizon puede tener un cambio en el esquema que implique reingerirlo de nuevo.
Debido a los requisitos de tamaño muy grandes, recomendamos no retener metadatos para toda la historia de la red.
Por lo tanto, algunos operadores prefieren apagar sus procesos de stellar-core (y/o Horizon) y tomar instantáneas a nivel de sistema de archivos o volcados a nivel de base de datos del contenido de la base de datos y directorio de cubos de Stellar Core, y/o la base de datos de Horizon, después de que la generación de metadatos haya ocurrido por primera vez. Tales instantáneas pueden ser restauradas, poniendo a stellar-core y/o Horizon en un estado que contenga metadatos sin realizar una reproducción completa.
Cualquier estado razonablemente reciente servirá; si tal instantánea es un poco antigua, stellar-core reproducirá ledgers desde cuando se tomó la instantánea hasta el estado actual de la red de todos modos; pero este procedimiento puede acelerar enormemente la restauración de nodos validador, o clonarlos para crear nuevos.
Archivos de Historia
Stellar Core normalmente interactúa con uno o más archivos de historia, que son instalaciones configurables donde los Validadores Completos almacenan archivos planos que contienen puntos de control de historia: archivos de cubo y registros de historia. Los archivos de historia suelen ser servicios de almacenamiento de mercancías fuera del sitio, como Amazon S3, Google Cloud Storage, Azure Blob Storage, o servidores SCP/SFTP/HTTP personalizados.
Utiliza plantillas de comandos en el archivo de configuración para dar los detalles de qué servicios utilizarás y cómo acceder a ellos. El ejemplo de configuración demostrará cómo configurar un archivo de historia a través de plantillas de comandos.
Configurando para Obtener Datos de un Archivo
No importa qué tipo de nodo estés ejecutando, deberías configurarlo para get
historia de uno o más archivos públicos. Puedes configurar cualquier número de archivos para descargar: Stellar Core redirigirá automáticamente entre ellos.
Cuando estés eligiendo tu conjunto de quorum, deberías incluir nodos de alta calidad —que, por definición, publican archivos— y agregar la ubicación de cada archivo en el campo HISTORY
en el array de validadores.
Si notas muchos errores relacionados con la descarga de archivos, deberías asegurarte de que todos los archivos en tu configuración están actualizados. Puedes revisar la [configuración de ejemplo de Mainnet] para ver cómo podrías usar validadores de Tier 1 actualizados para sus archivos de historia.
Configurando para Publicar Datos en un Archivo
Las secciones de archivos también pueden ser configuradas con comandos put
y mkdir
para hacer que la instancia publique en ese archivo (para nodos configurados como validadores completos).
La primera vez que quieras usar tu archivo, antes de arrancar tu nodo, necesitas inicializarlo con:
stellar-core new-hist <historyarchive>
Una guía más detallada y estrategias para publicar archivos de historia se pueden encontrar en la página de publicación de archivos de historia. Por favor, consulta allá para más información.
- Asegúrate de configurar tanto
put
comomkdir
siput
no crea automáticamente subcarpetas. - Escribir en el mismo archivo desde diferentes nodos no está soportado y resultará en un comportamiento indefinido, potencialmente pérdida de datos.
- No ejecutes
new-hist
en un archivo existente a menos que quieras borrarlo.
Otra Preparación
Además, debes asegurarte de que tu entorno operativo también sea funcional. Esto significa que deberías haber considerado y preparado lo siguiente.