sql >> Base de Datos >  >> RDS >> MariaDB

Opciones de copia de seguridad en la nube para bases de datos MySQL y MariaDB

El objetivo principal de hacer una copia de seguridad de sus datos es, por supuesto, la capacidad de retroceder y acceder a sus archivos en caso de falla del hardware. Para hacer negocios hoy, necesita la certeza de saber que, en caso de desastre, sus datos estarán protegidos y accesibles. Deberá almacenar sus copias de seguridad fuera del sitio, en caso de que su centro de datos se incendie.

La protección de datos sigue siendo un desafío para las pequeñas y medianas empresas. Las pequeñas y medianas empresas prefieren archivar los datos de su empresa mediante almacenamiento adjunto directo, y la mayoría de las empresas tienen planes de realizar copias de seguridad fuera del sitio. El enfoque de almacenamiento local puede conducir a uno de los dilemas más graves a los que se puede enfrentar la empresa moderna:la pérdida de datos en caso de desastre.

Muchos factores entran en consideración al juzgar si permitir que una base de datos crítica para el negocio se transfiera fuera del sitio y al elegir un proveedor adecuado para hacerlo. Los métodos tradicionales, como escribir en cinta y enviarlos a una ubicación remota, pueden ser un proceso complicado que requiere hardware especial, personal debidamente capacitado y procedimientos para garantizar que las copias de seguridad se produzcan y protejan con regularidad y que se verifique la integridad de la información contenida en ellas. Las pequeñas empresas suelen tener pequeños presupuestos de TI. A menudo, no pueden permitirse tener un centro de datos secundario, incluso si tienen un centro de datos dedicado. Sin embargo, sigue siendo importante mantener una copia de sus archivos de respaldo fuera del sitio. Desastres como huracanes, inundaciones, incendios o robos pueden destruir sus servidores y almacenamiento. Mantener los datos respaldados en el centro de datos separado garantiza que los datos estén seguros, sin importar lo que esté sucediendo en su centro de datos principal. El almacenamiento en la nube es una excelente manera de abordar este problema.
Con el enfoque de copia de seguridad en la nube, hay una serie de factores a considerar. Algunas de las preguntas que tienes son:

  • ¿Los datos respaldados están protegidos en reposo en el centro de datos externo?
  • ¿Es segura la transferencia hacia o desde el centro de datos externo a través de la red pública de Internet?
  • ¿Hay algún efecto sobre el RTO (objetivo de tiempo de recuperación)?
  • ¿Es el proceso de copia de seguridad y recuperación lo suficientemente fácil para nuestro personal de TI?
  • ¿Se requieren cambios en los procesos existentes?
  • ¿Se necesitan herramientas de copia de seguridad de terceros?
  • ¿Cuáles son los costos adicionales en términos de software requerido o transferencia de datos?
  • ¿Cuáles son los costos de almacenamiento?

Funciones de copia de seguridad al realizar una copia de seguridad en la nube

Si su servidor MySQL o el destino de la copia de seguridad se encuentra en una infraestructura expuesta como una nube pública, un proveedor de alojamiento o está conectado a través de una red WAN que no es de confianza, debe pensar en acciones adicionales en su política de copia de seguridad. Hay pocas formas diferentes de realizar copias de seguridad de bases de datos para MySQL y, según el tipo de copia de seguridad, el tiempo de recuperación, el tamaño y las opciones de infraestructura variarán. Dado que muchas de las soluciones de almacenamiento en la nube son simplemente almacenamiento con diferentes interfaces API, cualquier solución de copia de seguridad se puede realizar con un poco de secuencias de comandos. Entonces, ¿cuáles son las opciones que tenemos para que el proceso sea fluido y seguro?

Cifrado

Siempre es una buena idea aplicar el cifrado para mejorar la seguridad de los datos de copia de seguridad. Un caso de uso simple para implementar el cifrado es cuando desea enviar la copia de seguridad a un almacenamiento de copia de seguridad externo ubicado en la nube pública.

Al crear una copia de seguridad cifrada, una cosa que debe tener en cuenta es que, por lo general, lleva más tiempo recuperarla. La copia de seguridad debe descifrarse antes de cualquier actividad de recuperación. Con un gran conjunto de datos, esto podría generar algunos retrasos en el RTO.

Por otro lado, si está utilizando una clave privada para el cifrado, asegúrese de almacenar la clave en un lugar seguro. Si falta la clave privada, la copia de seguridad será inútil e irrecuperable. Si se roba la clave, todas las copias de seguridad creadas que usan la misma clave se verán comprometidas, ya que ya no están protegidas. Puede usar el popular GnuPG u OpenSSL para generar las claves privadas o públicas.
Para realizar el cifrado mysqldump usando GnuPG, genere una clave privada y siga el asistente correspondiente:

$ gpg --gen-key

Cree una copia de seguridad simple de mysqldump como de costumbre:

$ mysqldump --routines --events --triggers --single-transaction db1 | gzip > db1.tar.gz

Cifre el archivo de volcado y elimine la copia de seguridad simple anterior:

$ gpg --encrypt -r ‘[email protected]’ db1.tar.gz
$ rm -f db1.tar.gz

GnuPG agregará automáticamente la extensión .gpg en el archivo encriptado. Para descifrar,
simplemente ejecute el comando gpg con el indicador --decrypt:

$ gpg --output db1.tar.gz --decrypt db1.tar.gz.gpg

Para crear un mysqldump encriptado usando OpenSSL, uno tiene que generar una clave privada y una clave pública:
OpenSSL req -x509 -nodes -newkey rsa:2048 -keyout dump.priv.pem -out dump.pub.pem

Esta clave privada (dump.priv.pem) debe guardarse en un lugar seguro para su descifrado futuro. Para mysqldump, se puede crear una copia de seguridad cifrada canalizando el contenido a openssl, por ejemplo

mysqldump --routines --events --triggers --single-transaction database | openssl smime -encrypt -binary -text -aes256
-out database.sql.enc -outform DER dump.pub.pem

Para descifrar, simplemente use la clave privada (dump.priv.pem) junto con el indicador -decrypt:
openssl smime -decrypt -in database.sql.enc -binary -inform

DEM -inkey dump.priv.pem -out database.sql

Percona XtraBackup se puede utilizar para cifrar o descifrar copias de seguridad locales o de transmisión con la opción xbstream para agregar otra capa de protección a las copias de seguridad. El cifrado se realiza con la biblioteca libgcrypt. Tanto la opción --encrypt-key como la opción --encryptkey-file se pueden usar para especificar la clave de cifrado. Las claves de cifrado se pueden generar con comandos como

$ openssl rand -base64 24
$ bWuYY6FxIPp3Vg5EDWAxoXlmEFqxUqz1

Este valor se puede utilizar como clave de cifrado. Ejemplo del comando innobackupex utilizando --encrypt-key:

$ innobackupex --encrypt=AES256 --encrypt-key=”bWuYY6FxIPp3Vg5EDWAxoXlmEFqxUqz1” /storage/backups/encrypted

La salida del comando OpenSSL anterior también se puede redirigir a un archivo y se puede tratar como un archivo clave:

openssl rand -base64 24 > /etc/keys/pxb.key

Úselo con la opción --encrypt-key-file en su lugar:

innobackupex --encrypt=AES256 --encrypt-key-file=/etc/keys/pxb.key /storage/backups/encrypted

Para descifrar, simplemente use la opción --decrypt con --encrypt-key o --encrypt-key-file:

$ innobackupex --decrypt=AES256 --encrypt-key=”bWuYY6FxIPp3Vg5EDWAxoXlmEFqxUqz1”
/storage/backups/encrypted/2018-11-18_11-10-09/

Para obtener más información sobre el cifrado de MySQL y MariaDB, consulte nuestra otra publicación de blog.

Compresión

Dentro del mundo de las copias de seguridad en la nube de bases de datos, la compresión es uno de sus mejores amigos. No solo puede ahorrar espacio de almacenamiento, sino que también puede reducir significativamente el tiempo necesario para descargar/cargar datos.
Hay muchas herramientas de compresión disponibles, a saber, gzip, bzip2, zip, rar y 7z.
Normalmente, mysqldump puede tener las mejores tasas de compresión ya que es un archivo de texto plano. Según la herramienta de compresión y la relación, un mysqldump comprimido puede ser hasta 6 veces más pequeño que el tamaño de la copia de seguridad original. Para comprimir la copia de seguridad, puede canalizar la salida de mysqldump a una herramienta de compresión y redirigirla a un archivo de destino. También puede omitir varias cosas como comentarios, declaración de tablas de bloqueo (si es InnoDB), omitir GTID purgado y disparadores:

mysqldump --single-transaction --skip-comments --skip-triggers --skip-lock-tables --set-gtid-purged OFF --all-databases | gzip > /storage/backups/all-databases.sql.gz

Con Percona Xtrabackup, puede utilizar el modo de transmisión (innobackupex), que envía la copia de seguridad a STDOUT en formato especial tar o xbstream en lugar de copiar los archivos en el directorio de copia de seguridad. Tener una copia de seguridad comprimida podría ahorrarle hasta un 50 % del tamaño de la copia de seguridad original, según el conjunto de datos. Agregue la opción --compress en el comando de copia de seguridad. Al usar xbstream en las copias de seguridad de transmisión, puede acelerar el proceso de compresión usando la opción --compress-threads. Esta opción especifica la cantidad de subprocesos creados por xtrabackup para la compresión de datos en paralelo. El valor predeterminado para esta opción es 1. Para usar esta función, agregue la opción a una copia de seguridad local. Un ejemplo de copia de seguridad con compresión:

innobackupex --stream=xbstream --compress --compress-threads=4 > /storage/backups/backup.xbstream

Antes de aplicar registros durante la etapa de preparación, los archivos comprimidos deberán
descomprimirse usando xbstream:
Luego, use qpress para extraer cada archivo que termina con .qp en su directorio respectivo antes
de ejecutar -- comando apply-log para preparar los datos de MySQL.

$ xbstream -x < /storage/backups/backup.xbstream

Limitar el rendimiento de la red

Una excelente opción para las copias de seguridad en la nube es limitar el ancho de banda de transmisión de la red (Mb/s) al realizar una copia de seguridad. Puedes lograr eso con la herramienta pv. La utilidad pv viene con la opción de modificadores de datos -L RATE, --rate-limit RATE que limitan la transferencia a un máximo de RATE bytes por segundo. El siguiente ejemplo lo restringirá a 2 MB/s.

$ pv -q -L 2m

En el siguiente ejemplo, puede ver xtrabackup con gzip paralelo, encriptación

 /usr/bin/innobackupex --defaults-file=/etc/mysql/my.cnf --galera-info --parallel 4 --stream=xbstream --no-timestamp . | pv -q -L 2m | pigz -9 - | openssl enc -aes-256-cbc -pass file:/var/tmp/cmon-008688-19992-72450efc3b6e9e4f.tmp > /home/ubuntu/backups/BACKUP-3445/backup-full-2018-11-28_213540.xbstream.gz.aes256 ) 2>&1.

Transferir copia de seguridad a la nube

Ahora, cuando su copia de seguridad esté comprimida y cifrada, estará lista para transferirse.

nube de Google

La herramienta de línea de comandos gsutil se usa para administrar, monitorear y usar sus depósitos de almacenamiento en Google Cloud Storage. Si ya instaló gcloud util, ya tiene gsutil instalado. De lo contrario, siga las instrucciones para su distribución de Linux desde aquí.

Para instalar la CLI de gcloud puede seguir el siguiente procedimiento:

curl https://sdk.cloud.google.com | bash

Reinicie su shell:

exec -l $SHELL

Ejecuta gcloud init para inicializar el entorno de gcloud:

gcloud init

Con la herramienta de línea de comandos de gsutil instalada y autenticada, cree un depósito de almacenamiento regional llamado mysql-backups-storage en su proyecto actual.

gsutil mb -c regional -l europe-west1 gs://severalnines-storage/
Creating gs://mysql-backups-storage/

Amazon S3

Si no está utilizando RDS para alojar sus bases de datos, es muy probable que esté realizando sus propias copias de seguridad. La plataforma AWS de Amazon, S3 (Amazon Simple Storage Service) es un servicio de almacenamiento de datos que se puede utilizar para almacenar copias de seguridad de bases de datos u otros archivos críticos para la empresa. Ya sea que se trate de una instancia de Amazon EC2 o de su entorno local, puede utilizar el servicio para proteger sus datos.

Si bien las copias de seguridad se pueden cargar a través de la interfaz web, la interfaz de línea de comandos s3 dedicada se puede usar para hacerlo desde la línea de comandos y mediante scripts de automatización de copias de seguridad. Si las copias de seguridad se van a conservar durante mucho tiempo y el tiempo de recuperación no es una preocupación, las copias de seguridad se pueden transferir al servicio Amazon Glacier, lo que proporciona un almacenamiento a largo plazo mucho más económico. Los archivos (objetos de Amazon) se almacenan lógicamente en un enorme contenedor plano llamado cubo. S3 presenta una interfaz REST para sus componentes internos. Puede usar esta API para realizar operaciones CRUD en depósitos y objetos, así como para cambiar permisos y configuraciones en ambos.

El método de distribución principal para la CLI de AWS en Linux, Windows y macOS es pip, un administrador de paquetes para Python. Las instrucciones se pueden encontrar aquí.

aws s3 cp severalnines.sql s3://severalnine-sbucket/mysql_backups

De forma predeterminada, S3 proporciona una durabilidad de objetos de once 9s. Significa que si almacena 1.000.000.000 (mil millones) de objetos en él, puede esperar perder 1 objeto cada 10 años en promedio. La forma en que S3 logra esa impresionante cantidad de 9 es replicando el objeto automáticamente en múltiples zonas de disponibilidad, de lo que hablaremos en otra publicación. Amazon tiene centros de datos regionales en todo el mundo.

Almacenamiento de Microsoft Azure

La plataforma de nube pública de Microsoft, Azure, tiene opciones de almacenamiento con su interfaz de línea de control. La información se puede encontrar aquí. La CLI de Azure multiplataforma y de código abierto proporciona un conjunto de comandos para trabajar con la plataforma Azure. Brinda gran parte de la funcionalidad que se ve en Azure Portal, incluido el acceso a datos enriquecidos.

La instalación de Azure CLI es bastante simple, puede encontrar instrucciones aquí. A continuación puede encontrar cómo transferir su copia de seguridad al almacenamiento de Microsoft.

az storage blob upload --container-name severalnines --file severalnines.sql --name severalnines_backup

Almacenamiento híbrido para copias de seguridad de MySQL y MariaDB

Con la creciente industria de almacenamiento en la nube pública y privada, tenemos una nueva categoría llamada almacenamiento híbrido. Esta tecnología permite que los archivos se almacenen localmente y los cambios se sincronicen automáticamente de forma remota en la nube. Este enfoque proviene de la necesidad de tener copias de seguridad recientes almacenadas localmente para una restauración rápida (RTO más bajo), así como objetivos de continuidad comercial.
El aspecto importante del uso eficiente de los recursos es tener retenciones de copias de seguridad separadas. Los datos que se almacenan localmente, en unidades de disco redundantes, se conservarán durante un período más corto, mientras que el almacenamiento de copia de seguridad en la nube se mantendrá durante más tiempo. Muchas veces, el requisito de una retención de respaldo más prolongada proviene de las obligaciones legales de diferentes industrias (como las telecomunicaciones que tienen que almacenar metadatos de conexión). Los proveedores de la nube como Google Cloud Services, Microsoft Azure y Amazon S3 ofrecen almacenamiento prácticamente ilimitado, lo que reduce las necesidades de espacio local. Le permite conservar sus archivos de copia de seguridad durante más tiempo, durante el tiempo que desee, sin tener que preocuparse por el espacio en el disco local.

Gestión de copias de seguridad de ClusterControl:almacenamiento híbrido

Al programar una copia de seguridad con ClusterControl, cada uno de los métodos de copia de seguridad se puede configurar con un conjunto de opciones sobre cómo desea que se ejecute la copia de seguridad. Los más importantes para el almacenamiento en la nube híbrida serían:

  • Limitación de la red
  • Cifrado con la gestión de claves integrada
  • Compresión
  • Período de retención para las copias de seguridad locales
  • Periodo de retención para las copias de seguridad en la nube
Retención de copia de seguridad dual de ClusterControl Funciones avanzadas de copia de seguridad de ClusterControl para la nube, compresión paralela, límite de ancho de banda de red, cifrado, etc.

Conclusión

La nube ha cambiado la industria de las copias de seguridad de datos. Debido a su precio asequible, las empresas más pequeñas tienen una solución externa que respalda todos sus datos.

Su empresa puede aprovechar la escalabilidad de la nube y los precios de pago por uso para las crecientes necesidades de almacenamiento. Puede diseñar una estrategia de copia de seguridad para proporcionar copias locales en el centro de datos para una restauración inmediata y una puerta de enlace transparente a los servicios de almacenamiento en la nube de AWS, Google y Azure.

Las funciones avanzadas de cifrado y compresión TLS y AES de 256 bits admiten copias de seguridad seguras que ocupan mucho menos espacio en la nube.