Estar preparado para fallas catastróficas del sistema

Las estrategias de recuperación ante desastres para blockchains son más flexibles que las de las bases de datos regulares, porque el contenido de la cadena se replica automáticamente (y se puede recuperar de) otros nodos de la red. No obstante, existen dos buenas razones para realizar una copia de seguridad de los nodos individuales.
Primero y más importante, si las claves privadas para las direcciones de un nodo no se almacenan deliberadamente fuera de su billetera, entonces es vital hacer una copia de seguridad de la billetera y sus claves. Si la clave privada de una dirección se pierde de forma permanente, no se pueden realizar más transacciones en nombre de esa dirección.
En segundo lugar, si un nodo necesita recuperarse rápidamente de una falla del sistema, sin el retraso causado por recuperar y volver a indexar el contenido de la cadena de bloques, entonces puede tener sentido hacer una copia de seguridad del estado completo del nodo.
Ambos métodos se describen a continuación, junto con instrucciones sobre cómo restaurar cada tipo de copia de seguridad. También debe tenerse en cuenta que la agrupación en clústeres puede servir como una alternativa a las copias de seguridad y como solución temporal al hecho de que los nodos deben detenerse cuando se realiza una copia de seguridad de su estado completo.
Realizar una copia de seguridad de la billetera
La billetera de un nodo, que incluye tanto las claves privadas como las direcciones de solo observación, se almacena en el archivo wallet.dat en el directorio de la cadena de bloques de ese nodo. Por defecto, este directorio es ~ / .multichain / [nombre-cadena] / en Linux y Mac y% APPDATA% \ MultiChain \ [nombre-cadena] \ en Windows.
En general, se puede hacer una copia de seguridad del archivo wallet.dat directamente. Sin embargo, si se está ejecutando un nodo, es mejor utilizar el comando de la API de backupwallet para crear una copia del archivo con un bloqueo exclusivo.
Tenga en cuenta que al hacer una copia de seguridad de la billetera de un nodo, también puede ser útil hacer una copia de seguridad de dos cosas más:
• La lista de activos y flujos a los que está suscrito ese nodo. Utilice los comandos de API listassets y liststreams, y anote el nombre de cualquier entidad para la que suscrito sea verdadero.
• El nombre de usuario y la contraseña para acceder a la API del nodo junto con cualquier otro parámetro de tiempo de ejecución fijo. Estos se almacenan en el archivo multichain.conf en el directorio blockchain.
Restaurar una copia de seguridad de la billetera
El proceso de recrear un nodo a partir de una copia de seguridad de solo billetera es el siguiente:
1. Obtenga la dirección de nodo de otro nodo en la cadena usando el comando getinfo.
2. En el servidor que se va a recuperar, asegúrese de que el directorio blockchain ya no exista.
3. Inicie la conexión a la cadena de bloques de la forma habitual, pasando la dirección de nodo obtenida previamente como parámetro a multichaind.
4. Si multichaind no se detiene con un mensaje sobre la necesidad de permisos de conexión, deténgalo después de unos segundos usando multichain-cli [nombre-cadena] stop. (Esto puede suceder en una cadena de bloques con el parámetro cualquiera-puede-conectar = verdadero).
5. Reemplace el archivo wallet.dat en el nuevo directorio de blockchain del nodo con la versión de la que se hizo una copia de seguridad.
6. Si se mantuvo una copia de seguridad del archivo multichain.conf del nodo, restaure ese archivo también.
7. Reinicie el nodo de la forma habitual: multichaind [nombre-cadena] -daemon. En el caso de que la primera dirección en la billetera ya no tenga permisos de conexión, use el parámetro de tiempo de ejecución handshakelocal para especificar qué dirección usar para el protocolo de enlace.
8. Observe el valor de los bloques en getinfo para ver cuándo el nodo se ha puesto al día con el resto de la red. Para cadenas grandes, esto puede llevar una cantidad considerable de tiempo.
9. Si se mantuvo un registro de los activos y flujos suscritos, vuelva a suscribirse utilizando el comando de suscripción sin volver a escanear, p. subscribe '["stream1", "asset1"]' falso. A continuación, detenga el nodo, reinícielo con la opción -rescan y espere a que se complete la nueva exploración.
¡Eso es! Su nodo restaurado debe estar actualizado con la cadena de bloques y listo para ser utilizado nuevamente.


Copia de seguridad y restauración de estado completo
Como alternativa a hacer una copia de seguridad y restaurar la billetera del nodo y alguna otra pequeña información, es posible hacer una copia de seguridad completa y sencilla de todos los archivos en el directorio de la cadena de bloques, p. Ej. ~ / .multichain / [nombre-cadena] / en Linux o Mac, o% APPDATA% \ MultiChain \ [nombre-cadena] \ en Windows. Restaurar desde una copia de seguridad completa es simplemente una cuestión de volver a colocar estos archivos en el lugar correcto, reiniciar el nodo y esperar a que se ponga al día con los bloques creados después de que se realizó la copia de seguridad.
Hay dos ventajas clave de realizar una copia de seguridad del estado completo en lugar de solo la billetera:
• El proceso de respaldo y recuperación es mucho más simple, basado en copiar un directorio completo de archivos.
• Un nodo en funcionamiento se puede recuperar instantáneamente sin necesidad de recuperar y reindexar toda la cadena de bloques.
Sin embargo, las copias de seguridad de estado completo también tienen dos desventajas clave:
• El nodo debe detenerse antes de realizar la copia de seguridad, para garantizar la coherencia en los archivos de la copia de seguridad. La agrupación en clústeres puede ayudar aquí: mientras un nodo de un clúster se detiene para realizar copias de seguridad, otro puede continuar sirviendo la aplicación.
• La cantidad total de datos respaldados será drásticamente mayor. Sin embargo, debe tenerse en cuenta que las técnicas de compresión estándar como gzip o zip pueden reducir este tamaño en un 50-75%, dependiendo del patrón de actividad dentro de la cadena.