Cómo elegir una estrategia de backup eficaz

Introducción

Índice
  1. Introducción
  • Parte 1: ¿Cuál es la diferencia entre redundancia y copia de seguridad?
    1. Redundancia
    2. Respaldo
  • Parte 2: Copia de seguridad a nivel de archivo
    1. Cómo utilizar el comando cp
    2. Cómo utilizar Rsync
    3. Cómo utilizar otras herramientas de backup
  • Parte 3: Copias de seguridad a nivel de bloques
    1. Uso de dd para realizar copias de seguridad a nivel de bloque
  • Parte 4: Control de versiones de las copias de seguridad
  • Parte 5: Copias de seguridad a nivel de servidor
    1. GitOps
  • Conclusión
  • Las copias de seguridad son muy importantes para los servidores en la nube. Ya sea que esté ejecutando un solo proyecto con todos sus datos almacenados en un solo servidor o implementando directamente desde Git a máquinas virtuales que se ponen en marcha y se desmontan mientras se conserva un conjunto mínimo de registros, siempre debe planificar un escenario de falla. Esto puede significar muchas cosas diferentes según las aplicaciones que esté usando, la importancia de tener una conmutación por error inmediata y el tipo de problemas que esté anticipando.

    En esta guía, explorará los diferentes enfoques para proporcionar copias de seguridad y redundancia de datos. Debido a que los diferentes casos de uso exigen diferentes soluciones, este artículo no podrá brindarle una respuesta única para todos, pero aprenderá qué es importante en diferentes escenarios y qué implementaciones son las más adecuadas para su operación.

    En la primera parte de esta guía, analizará varias soluciones de respaldo y analizará las ventajas relativas de cada una para poder elegir el enfoque que mejor se adapte a su entorno. En la segunda parte, explorará las opciones de redundancia.

    Parte 1: ¿Cuál es la diferencia entre redundancia y copia de seguridad?

    Las definiciones de los términos redundante y backup suelen superponerse y, en muchos casos, resultar confusas. Se trata de dos conceptos distintos que están relacionados, pero son diferentes. Algunas soluciones ofrecen ambos.

    Redundancia

    La redundancia de datos significa que existe una conmutación por error inmediata en caso de que se produzca un problema en el sistema. Una conmutación por error significa que si un conjunto de datos (o un host) deja de estar disponible, se pone en producción otra copia perfecta de inmediato para ocupar su lugar. Esto da como resultado un tiempo de inactividad prácticamente inapreciable y la aplicación o el sitio web pueden seguir atendiendo solicitudes como si nada hubiera sucedido. Mientras tanto, el administrador del sistema (en este caso, usted) tiene la oportunidad de solucionar el problema y devolver el sistema a un estado completamente operativo.

    Sin embargo, una solución de redundancia no suele ser también una solución de copia de seguridad. El almacenamiento redundante no necesariamente proporciona protección contra un fallo que afecte a toda la máquina o sistema. Por ejemplo, si tiene configurado un RAID reflejado (como RAID 1), sus datos son redundantes, ya que si una unidad falla, la otra seguirá estando disponible. Sin embargo, si la máquina en sí falla, todos sus datos podrían perderse.

    Con soluciones de redundancia como MySQL Group Replication , cada operación se realiza normalmente en cada copia de los datos. Esto incluye operaciones maliciosas o accidentales. Por definición, una solución de copia de seguridad también debería permitirle restaurar desde un punto anterior en el que se sabe que los datos están en buen estado.

    Respaldo

    En general, es necesario mantener copias de seguridad funcionales de los datos importantes. Según la situación, esto podría significar realizar copias de seguridad de aplicaciones o datos de usuario, o de un sitio web o una máquina completa. La idea detrás de las copias de seguridad es que, en caso de pérdida del sistema, la máquina o los datos, se puedan restaurar, reimplementar o acceder de otro modo a los datos. Restaurar a partir de una copia de seguridad puede requerir un tiempo de inactividad, pero puede suponer la diferencia entre empezar desde el día anterior y empezar desde cero. Todo aquello que no se pueda permitir perder debe, por definición, tener una copia de seguridad.

    En cuanto a los métodos, existen varios niveles diferentes de copias de seguridad. Se pueden organizar en capas según sea necesario para dar cuenta de diferentes tipos de problemas. Por ejemplo, puede realizar una copia de seguridad de un archivo de configuración antes de modificarlo para poder volver a la configuración anterior en caso de que surja un problema. Esto es ideal para pequeños cambios que está supervisando activamente. Sin embargo, esta configuración podría fallar en caso de una falla del disco o algo más complejo. También debe realizar copias de seguridad periódicas y automatizadas en una ubicación remota.

    Las copias de seguridad por sí solas no proporcionan conmutación por error automática. Esto significa que sus errores pueden no costarle ningún dato (suponiendo que sus copias de seguridad estén 100 % actualizadas), pero pueden costarle tiempo de actividad. Esta es una de las razones por las que la redundancia y las copias de seguridad se utilizan a menudo en combinación.

    Parte 2: Copia de seguridad a nivel de archivo

    Una de las formas más conocidas de realizar copias de seguridad es la copia de seguridad a nivel de archivo. Este tipo de copia de seguridad utiliza herramientas de copia a nivel de sistema de archivos normales para transferir archivos a otra ubicación o dispositivo.

    Cómo utilizar el comando cp

    En teoría, podrías hacer una copia de seguridad de una máquina Linux, como tu servidor en la nube, con el cpcomando. Esto copia archivos de una ubicación local a otra. En una computadora local, podrías montar una unidad extraíble y luego copiar archivos en ella:

    1. mount /dev/sdc /mnt/my-backup
    2. cp -a /etc/* /mnt/my-backup
    3. umount /dev/sdc

    Este ejemplo monta un disco extraíble, sdccomo /mnt/my-backupy luego copia el /etcdirectorio en el disco. Luego desmonta la unidad, que se puede almacenar en otro lugar.

    Cómo utilizar Rsync

    Una mejor alternativa cpes el rsynccomando rsync, que es una herramienta potente que ofrece una amplia gama de opciones para replicar archivos y directorios en distintos entornos, con validación de suma de comprobación integrada y otras funciones. Rsync puede realizar el equivalente a la cpoperación anterior de la siguiente manera:

    1. mount /dev/sdc /mnt/my-backup
    2. rsync -azvP /etc/* /mnt/my-backup
    3. umount /dev/sdc

    -azvPes un conjunto típico de opciones de Rsync. A continuación, se detalla lo que hace cada una de ellas:

    • ahabilita el “Modo de archivo” para esta operación de copia, que conserva las horas de modificación de los archivos, los propietarios, etc. También es el equivalente a proporcionar cada una de las -rlptgoDopciones individualmente (sí, de verdad). En particular, la -ropción le dice a Rsync que recurra a los subdirectorios para copiar también los archivos y carpetas anidados. Esta opción es común a muchas otras operaciones de copia, como cpy scp.
    • zComprime los datos durante la transferencia, si es posible. Esto resulta útil para cualquier transferencia a través de conexiones lentas, especialmente cuando se transfieren datos que se comprimen de manera muy eficaz, como registros y otros textos.
    • vHabilita el modo detallado, para que puedas leer más detalles de tu transferencia mientras está en progreso.
    • Ple dice a Rsync que conserve copias parciales de cualquier archivo que no se transfiera completamente, para que las transferencias puedan reanudarse más tarde.

    Puede revisar otras opciones de rsync en su página de manual .

    Por supuesto, en un entorno de nube, normalmente no montarías y copiarías archivos en un disco montado cada vez. Rsync también puede realizar copias de seguridad remotas a través de una red al proporcionar una sintaxis de estilo SSH. Esto funcionará en cualquier host al que puedas acceder mediante SSH, siempre que Rsync esté instalado en ambos extremos. Debido a que Rsync se considera una herramienta central de Linux, esta es casi siempre una suposición segura, incluso si estás trabajando localmente en una máquina Mac o Windows.

    1. rsync -azvP /etc/* username@remote_host:/backup/

    Esto hará una copia de seguridad del /etcdirectorio de la máquina local en un directorio remote_hostubicado en /backup. Esto tendrá éxito si tiene permiso para escribir en este directorio y hay espacio disponible.

    También puede revisar más información sobre cómo usar Rsync para sincronizar directorios locales y remotos .

    Cómo utilizar otras herramientas de backup

    Aunque cpson rsyncútiles y omnipresentes, no son una solución completa por sí solas. Para automatizar las copias de seguridad con Rsync, deberá crear sus propios procedimientos automatizados, un programa de copias de seguridad, una rotación de registros, etc. Si bien esto puede ser apropiado para algunas implementaciones muy pequeñas que no desean utilizar servicios externos, o implementaciones muy grandes que tienen recursos dedicados para mantener scripts muy granulares para diversos fines, es posible que muchos usuarios deseen invertir en una oferta de copias de seguridad dedicada.

    Bacula

    Bacula es una solución compleja y flexible que funciona con un modelo cliente-servidor. Bacula está diseñado con conceptos separados de clientes, ubicaciones de copia de seguridad y directores (el componente que organiza la copia de seguridad propiamente dicha). También configura cada tarea de copia de seguridad en una unidad denominada “trabajo”.

    Esto permite una configuración extremadamente granular y flexible. Puede realizar copias de seguridad de varios clientes en un dispositivo de almacenamiento, de un cliente en varios dispositivos de almacenamiento y modificar el esquema de copia de seguridad agregando nodos o ajustando sus detalles. Funciona bien en un entorno en red y es ampliable y modular, lo que lo hace ideal para realizar copias de seguridad de un sitio o una aplicación distribuidos en varios servidores.

    Duplicidad

    Duplicity es otra herramienta de copia de seguridad de código abierto. Utiliza el cifrado GPG de forma predeterminada para las transferencias.

    La ventaja obvia de utilizar el cifrado GPG para las copias de seguridad de archivos es que los datos no se almacenan en texto sin formato. Solo el propietario de la clave GPG puede descifrarlos. Esto proporciona cierto nivel de seguridad para compensar las medidas de seguridad adicionales necesarias cuando los datos se almacenan en varias ubicaciones.

    Otro beneficio que puede no resultar evidente para quienes no utilizan GPG con regularidad es que cada transacción debe verificarse para comprobar que sea completamente precisa. GPG, al igual que Rsync, aplica una comprobación de hash para garantizar que no haya pérdida de datos durante la transferencia. Esto significa que, al restaurar datos a partir de una copia de seguridad, será mucho menos probable que se produzcan daños en los archivos.

    Parte 3: Copias de seguridad a nivel de bloques

    Una alternativa un poco menos común, pero importante, a las copias de seguridad a nivel de archivo son las copias de seguridad a nivel de bloque. Este estilo de copia de seguridad también se conoce como “creación de imágenes” porque se puede utilizar para duplicar y restaurar dispositivos completos. Las copias de seguridad a nivel de bloque permiten realizar copias a un nivel más profundo que el de un archivo. Mientras que una copia de seguridad basada en archivo puede copiar el archivo 1, el archivo 2 y el archivo 3 a una ubicación de copia de seguridad, un sistema de copia de seguridad basado en bloque copiaría todo el “bloque” en el que residen esos archivos. Otra forma de explicar el mismo concepto es decir que las copias de seguridad a nivel de bloque copian la información bit a bit. No conocen los archivos que pueden abarcar esos bits.

    Una ventaja de las copias de seguridad a nivel de bloques es que suelen ser más rápidas. Mientras que las copias de seguridad basadas en archivos suelen iniciar una nueva transferencia para cada archivo por separado, una copia de seguridad basada en bloques transferirá bloques, lo que significa que se deben iniciar menos transferencias no secuenciales para completar la copia.

    Uso de dd para realizar copias de seguridad a nivel de bloque

    El método más común para realizar copias de seguridad a nivel de bloques es con la ddutilidad. ddse puede utilizar para crear imágenes de disco completas y también se utiliza con frecuencia al archivar medios extraíbles como CD o DVD. Esto significa que puede realizar una copia de seguridad de una partición o un disco en un solo archivo o en un dispositivo sin formato sin ningún paso preliminar.

    Para utilizar dd, debe especificar una ubicación de entrada y una ubicación de salida, de la siguiente manera:

    1. dd if=/path/of/original/device of=/path/to/place/backup

    En este escenario, el if=argumento especifica el dispositivo de entrada o la ubicación. Los of=argumentos especifican el archivo de salida o la ubicación. Tenga cuidado de no confundirlos, ya que podría borrar un disco entero por error.

    Por ejemplo, para realizar una copia de seguridad de una partición que contiene sus documentos, que se encuentra en /dev/sda3, puede crear una imagen de ese directorio proporcionando una ruta de salida a un .imgarchivo:

    1. dd if=/dev/sda3 of=~/documents.img

    Parte 4: Control de versiones de las copias de seguridad

    Una de las principales motivaciones para realizar copias de seguridad de los datos es poder restaurar una versión anterior de un archivo en caso de que se produzca un cambio o una eliminación no deseados. Si bien todos los mecanismos de copia de seguridad mencionados hasta ahora pueden ofrecer esta posibilidad, también puede implementar una solución más granular.

    Por ejemplo, una forma manual de lograr esto sería crear una copia de seguridad de un archivo antes de editarlo en nano:

    1. cp file1 file1.bak
    2. nano file1

    Incluso podría automatizar este proceso creando archivos ocultos con marca de tiempo cada vez que modifique un archivo con su editor. Por ejemplo, podría colocar esto en su ~/.bashrcarchivo, de modo que cada vez que ejecute nanodesde su shell bash(es decir, $), cree automáticamente una copia de seguridad con marca de año ( %y), mes ( %m), día ( %d), etc.:

    1. nano() { cp $1 .${1}.`date +%y-%m-%d_%H.%M.%S`.bak; /usr/bin/nano $1; }

    Esto funcionaría en la medida en que edites archivos manualmente con nano, pero tiene un alcance limitado y podría llenar rápidamente un disco. Puedes ver cómo podría terminar siendo peor que copiar manualmente los archivos que vas a editar.

    Una alternativa que soluciona muchos de los problemas inherentes a este diseño es utilizar Git como sistema de control de versiones. Aunque fue desarrollado principalmente para centrarse en el control de versiones de texto plano, normalmente código fuente, línea por línea, se puede utilizar Git para realizar un seguimiento de casi cualquier tipo de archivo. Para obtener más información, puedes consultar Cómo usar Git de forma eficaz .

    Parte 5: Copias de seguridad a nivel de servidor

    La mayoría de los proveedores de alojamiento también ofrecen su propia función de copia de seguridad opcional. La función de copia de seguridad de DigtalOcean realiza copias de seguridad automáticas de forma periódica para los droplets que han habilitado este servicio. Puede activarlo durante la creación del droplet marcando la casilla de verificación “Copias de seguridad”:

    Esto hará una copia de seguridad de toda la imagen del servidor en la nube de forma periódica. Esto significa que puede volver a implementar desde la copia de seguridad o usarla como base para nuevos droplets.

    Para crear una imagen única de su sistema, también puede crear instantáneas. Estas funcionan de manera similar a las copias de seguridad, pero no están automatizadas. Si bien es posible tomar una instantánea de un sistema en ejecución en algunos contextos, no siempre se recomienda, según cómo esté escribiendo en su sistema de archivos:

    Puede obtener más información sobre las copias de seguridad y las instantáneas de DigitalOcean en la documentación de Contenedores e imágenes .

    GitOps

    Por último, cabe señalar que existen algunas circunstancias en las que no necesariamente se buscará implementar copias de seguridad por servidor. Por ejemplo, si su implementación sigue los principios de GitOps , puede tratar muchos de sus servidores en la nube individuales como descartables y, en cambio, tratar las fuentes de datos remotas, como los repositorios de Git, como la fuente efectiva de verdad para sus datos. Las implementaciones modernas y complejas como esta pueden ser más escalables y menos propensas a fallar en muchos casos. Sin embargo, aún querrá implementar una estrategia de copia de seguridad para sus propios almacenes de datos o para un servidor de registro centralizado al que cada uno de estos servidores descartables puede enviar información. Considere qué aspectos de su implementación pueden no necesitar una copia de seguridad y cuáles sí.

    Conclusión

    En este artículo, exploró varios conceptos y soluciones de respaldo. A continuación, es posible que desee revisar soluciones para habilitar la redundancia .

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion