Inicio Todo lo relacionado a Internet, Programación y Tecnología

Mejor forma de hacer Backups de MariaDB y MySQL en Linux

Las bases de datos relacionales son un requisito indispensable para el funcionamiento de muchos sistemas, como en el caso de gestores de contenido, tiendas en línea, etc; y hacer una copia de seguridad de su contenido al igual que su administración es una tarea un poco especial. En sistemas como Debian y Ubuntu por defecto viene una herramienta llamada mysqldump que nos ayudará en esta tarea. Se va a detallar cual es la mejor forma de hacerlo, porque no existe una sola forma correcta a pesar de usarse una sola herramienta comúnmente.

mysql shell

1. Forma estándar de hacer copias de seguridad de las DDBB

Lo normal es usar el siguiente comando para hacer una copia de una sola base de datos:

mysqldump -uUsuario -p base_de_datos > dump-archivo.sql"

Importando las bases de datos:

mysql -uUsuario -p base_de_datos < dump-archivo.sql

No es una manera del todo mala, si no que hacerlo así puede tener errores con la codificación de caracteres de los datos.

2. La mejor forma de hacer copias de seguridad de las DDBB

Primero para hacer una copia de forma segura en cuanto a codificación de caracteres y eficiente en cuanto a uso de CPU y bloqueos:

mysqldump -uUsuario -p --single-transaction --quick --skip-lock-tables base_de_datos -r archivo-dump-utf8.sql

Los parámetros que se usaron fueron:

--single-transaction, con esta opción se vuelca la base de datos de una forma consistente, útil únicamente con bases InnoDB.

--quick, con esta opción se exporta fila por fila en lugar de exportar todo el conjunto de datos de una sola vez. Bastante útil a la hora de volcar grandes bases de datos. Uno de los beneficios es el menor uso de recursos al ejecutar el comando.

--skip-lock-tables, si usamos esta opción no bloqueamos ninguna tabla al momento de volcar la base, y así evitamos interrupciones en entornos de producción.

-r, si usamos este parámetro la salida se vuelca directamente a un archivo preservando la codificación de los datos.

2.1 Importando base de datos de forma segura

En este último caso hay dos formas de importar archivos de volcado.

La opción recomendada con el shell de MySQL en una Terminal, debemos estar en el mismo directorio que el archivo:

mysql -uUsuario -p --default-character-set=utf8mb4 base_de_datos
SET names 'utf8'
SOURCE archivo-dump-utf8.sql

Una opción alternativa de una línea en la Terminal:

mysql --default-character-set=utf8 -uUsuario base_de_datos < archivo-dump-utf8.sql

Conclusiones

Las copias de seguridad son muy importantes cuando se trata de base de datos, ya que no estamos exentos de errores de discos, robo de datos, pérdida de datos, errores de software que provocan corrupción de datos, etc; y la prevención es una buena cura. En lo personal muchas veces he tenido problemas en producción y al no tener una costumbre de hacer backups o por ahorrarme unos cuantos dólares en estos servicios me tomaba horas volver a recuperar la funcionalidad de sitios web, incluso llegue a usar archive.org para recuperar algunos datos. Otra cosa también importante es la forma de hacer las cosas, cuando se trata de datos las codificaciones son un dolor de cabeza, pero una vez con un mínimo de conocimiento o al menos recordando ciertos artículos en Internet estos problemas son menos frecuentes.

Fuentes:

  1. https://mariadb.com/kb/en/mysqldump/
  2. https://linux.die.net/man/1/mysqldump
  3. https://makandracards.com/makandra/595-dumping-and-importing-from-to-mysql-in-an-utf-8-safe-way
Etiquetas
Categorías

Comentarios

© 2020 ImperioWeb.net Todos los derechos reservados.