sql >> Base de Datos >  >> RDS >> Mysql

Copia de seguridad automática o regular de datos mysql

CSV y SELECCIONAR EN OUTFILE

http://dev.mysql.com/doc/refman /5.7/es/select-into.html

SELECT... INTO OUTFILE escribe las filas seleccionadas en un archivo. Se pueden especificar terminadores de columna y línea para producir un formato de salida específico.

Aquí hay un ejemplo completo:

SELECT * FROM my_table INTO OUTFILE '/tmp/my_table.csv'
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  LINES TERMINATED BY '\n'
  FROM test_table;

El archivo se guarda en el servidor y la ruta elegida debe poder escribirse. Aunque esta consulta se puede ejecutar a través de PHP y una solicitud web, se ejecuta mejor a través de la consola mysql.

Los datos que se exportan de esta manera se pueden importar a otra base de datos usando CARGAR ARCHIVO DE DATOS

Si bien este método es superior para iterar a través de un conjunto de resultados y guardarlo en un archivo fila por fila, no es tan bueno como usar...

mysqldump

mysqldump es superior a SELECT INTO OUTFILE de muchas maneras, producir CSV es solo una de las muchas cosas que puede hacer este comando.

La utilidad de cliente mysqldump realiza copias de seguridad lógicas, produciendo un conjunto de instrucciones SQL que se pueden ejecutar para reproducir las definiciones de objetos de base de datos originales y los datos de la tabla. Vuelca una o más bases de datos MySQL para realizar copias de seguridad o transferirlas a otro servidor SQL. El comando mysqldump también puede generar resultados en formato CSV, otro texto delimitado o XML.

Idealmente, mysqldump debe invocarse desde su shell. Es posible usar exec en php para ejecutarlo, pero dado que producir el volcado puede llevar mucho tiempo dependiendo de la cantidad de datos, y los scripts de php generalmente se ejecutan solo durante 30 segundos, deberá ejecutarlo como un proceso en segundo plano.

mysqldump no está exento de problemas.

No pretende ser una solución rápida o escalable para realizar copias de seguridad de cantidades sustanciales de datos. Con datos de gran tamaño, incluso si el paso de la copia de seguridad lleva un tiempo razonable, la restauración de los datos puede ser muy lenta porque la reproducción de las sentencias SQL implica la E/S del disco para la inserción, la creación de índices, etc.

Un ejemplo clásico, vea esta pregunta: Bloqueo del servidor en la copia de seguridad de MySQL usando python donde un mysqldump parece comenzar antes de que el anterior haya terminado y el sitio web deja de responder por completo.

Replicación MySQL

La replicación permite que los datos de un servidor de base de datos MySQL (el maestro) se copien en uno o más servidores de base de datos MySQL (los esclavos). La replicación es asíncrona de manera predeterminada; los esclavos no necesitan estar conectados permanentemente para recibir actualizaciones del maestro. Según la configuración, puede replicar todas las bases de datos, las bases de datos seleccionadas o incluso las tablas seleccionadas dentro de una base de datos.

Por lo tanto, replicación opera de manera diferente a SELECT INTO OUTFILE o msyqldump Es ideal mantener los datos en la copia local casi actualizados (habría dicho perfectamente sincronizados, pero hay algo llamado retraso esclavo). Por otro lado, si usa una tarea programada para ejecutar mysqldump una vez cada 24 horas. ¿Imaginas lo que puede pasar si el servidor falla después de 23 horas?

Cada vez que ejecuta mysqldump, está produciendo una gran cantidad de datos, siga haciéndolo regularmente y encontrará que su disco duro se llena o que sus facturas de almacenamiento de archivos se están disparando. Con la replicación, solo los cambios se pasan al servidor (mediante el llamado binlog)

Copia de seguridad adicional

Una alternativa a la replicación es usar Percona XtraBackup .

Percona XtraBackup es una utilidad de copia de seguridad activa de código abierto para servidores basados ​​en MySQL que no bloquea su base de datos durante la copia de seguridad.

Aunque de Percona, es compatible con Mysql y Mariadb. Tiene la capacidad de realizar copias de seguridad incrementales, la cual es la mayor limitación de mysqldump.