- 
                            
                            
Introducción a la copia de seguridad incremental
 - 
                            
                            
Introducción a Binlog
 - 
                            
                            
¿Cómo realizar una copia de seguridad incremental de MySQL?
 - 
                            
                            
¿Cómo recuperarse de una copia de seguridad incremental de MySQL?
 - 
                            
                            
Una forma más sencilla de crear copias de seguridad incrementales de MySQL
 - 
                            
                            
Preguntas frecuentes sobre copias de seguridad incrementales de MySQL
 - 
                            
                            
Conclusión
 
Situaciones inesperadas como bloqueos del sistema operativo, fallos de energía, colapsos del sistema de archivos y fallos de hardware pueden hacer que la base de datos que estamos utilizando funcione incorrectamente, provocando inconsistencias en los datos. Para garantizar la seguridad de la base de datos, es necesario realizar copias de seguridad regularmente. Las copias de seguridad de bases de datos se pueden clasificar en copias completas, copias de registros, copias incrementales y copias de archivos. Para una base de datos grande, realizar copias completas con frecuencia puede tomar demasiado tiempo, y además estas copias suelen respaldar múltiples veces datos que no han cambiado, lo que ocasiona un desperdicio de recursos. La estrategia de copia de seguridad de bases de datos más utilizada actualmente consiste en realizar copias incrementales con mayor frecuencia basadas en una copia completa previa. Por ejemplo, podemos realizar una copia completa una vez por semana durante los periodos de bajo uso y luego realizar una copia incremental diariamente, capturando así las operaciones que pudieron haber modificado la base de datos durante ese periodo.
Introducción a la copia de seguridad incremental
La copia de seguridad incremental consiste en respaldar únicamente los archivos que se han agregado o modificado desde la última copia de seguridad completa o desde la copia de seguridad incremental anterior. Esto significa que la primera copia de seguridad incremental cubre los archivos agregados o modificados después de la copia de seguridad completa; la segunda copia de seguridad incremental cubre los archivos agregados o modificados después de la primera copia de seguridad incremental, y así sucesivamente. La ventaja más significativa de este método de copia de seguridad es que no hay datos duplicados, lo que resulta en un tamaño de copia más pequeño y un tiempo de respaldo más corto. Sin embargo, restaurar datos desde copias de seguridad incrementales es más complicado. Es necesario contar con la última copia de seguridad completa y todas las copias incrementales (la pérdida o daño de cualquiera de ellas puede hacer que la restauración falle), y deben restaurarse en orden cronológico, desde la copia completa hasta cada copia incremental, lo cual aumenta considerablemente el tiempo de recuperación.
Por ejemplo, si tenemos una base de datos con 20 GB de datos y se agregan 10 MB adicionales diariamente, realizar una copia de seguridad completa cada día supondría una carga elevada para el servidor. En cambio, podemos respaldar únicamente los datos recién agregados para reducir la carga del servidor.
Introducción a Binlog
MySQL no proporciona un método directo de copia de seguridad incremental, pero puede lograr copias de seguridad incrementales indirectamente mediante los registros binarios de MySQL.
El binlog está habilitado mediante la opción log-bin en el archivo de configuración. El servidor MySQL creará dos nuevos archivos, "XXX-bin.001" y "xxx-bin.index", en el directorio raíz de datos. Si no se especifica un nombre de archivo en la opción de configuración, MySQL usará el nombre del host para nombrar estos dos archivos. El archivo ".index" contiene una lista de todos los archivos de registro. MySQL registra todas las modificaciones al contenido y estructura de la base de datos en los archivos "XXX-bin.n", pero no registra las sentencias "SELECT" ni las sentencias "UPDATE" que realmente no actualicen datos.
Cuando la base de datos MySQL se detiene o reinicia, el servidor registra en el siguiente archivo de registro. MySQL genera un nuevo archivo binlog al reiniciar, con un número de archivo incremental. Además, si un archivo de registro excede el límite establecido por la variable del sistema "max_binlog_size", también se crea un nuevo archivo de registro.
La copia de seguridad incremental se basa en el mecanismo binlog de MySQL. Cada paso de las operaciones de inserción, actualización, eliminación y consulta en la base de datos se registra en el binlog. Al realizar primero una copia de seguridad completa y vaciar el binlog al mismo tiempo, todas las operaciones posteriores se registrarán en nuevos archivos binlog. Para la copia de seguridad incremental, solo necesitamos respaldar los archivos binlog recién generados, logrando así una copia perfecta de la base de datos en crecimiento continuo.
La importancia de los registros binarios para las copias de seguridad es la siguiente:
Los registros binarios almacenan todas las operaciones que actualizan o pueden actualizar datos.
Los registros binarios comienzan a grabar después de que el servidor MySQL se inicia y crean un nuevo archivo de registro cuando se alcanza el tamaño de archivo establecido o cuando se ejecuta el comando "flush logs".
Al ejecutar periódicamente el comando "flush logs", crear una nueva secuencia de archivos binarios y almacenar estos archivos de forma segura, se completa una copia de seguridad incremental durante un período.
¿Cómo realizar una copia de seguridad incremental de MySQL?
La copia de seguridad incremental de MySQL se puede lograr utilizando los registros de MySQL. Los registros de MySQL incluyen tres tipos: registros binarios, registros de transacciones y registros de errores. Entre ellos, los registros binarios son los principales registros de MySQL, que contienen todas las operaciones de modificación de datos en formato binario almacenadas en disco. Al hacer una copia de seguridad de los registros binarios, se puede implementar la copia de seguridad incremental de MySQL.
Pasos para la copia de seguridad incremental de MySQL:
1. Habilitar el registro binario de MySQL:
Establezca los siguientes parámetros en el archivo de configuración de MySQL ("my.cnf"):
[mysql] log-bin=mysql-bin server-id=1
El parámetro "log-bin" especifica el prefijo del archivo de registro binario, y el parámetro "server-id" identifica de forma única la instancia de MySQL.
2. Crear un usuario de respaldo:
CREATE USER 'backup'@'localhost' IDENTIFIED BY 'your_password'; GRANT REPLICATION CLIENT, REPLICATION SLAVE, PROCESS, SUPER, RELOAD ON *.* TO 'backup'@'localhost';
Aquí, "backup" es el nombre de usuario. El usuario debe tener los siguientes permisos: "REPLICATION CLIENT", "REPLICATION SLAVE", "PROCESS", "SUPER" y "RELOAD".
3. Realice una copia de seguridad completa:
Utilice el comando "mysqldump" para respaldar toda la base de datos MySQL en un archivo:
mysqldump -u root -P 3306 -h 127.0.0.1 -p123456 ks_flask > ks_flask.sql
Aquí, "localhost" es el host de MySQL, "root" es el nombre de usuario y "ks_flask" es el nombre de la base de datos.
4. Registre la posición actual del registro binario:
Después de realizar la primera copia de seguridad completa, registre el nombre del archivo de registro binario actual y la posición para futuras copias de seguridad incrementales.
SHOW MASTER STATUS;
Este comando devuelve el archivo de registro binario actual y la posición.
5. Realizar copia de seguridad incremental:
Utilice el comando "mysqlbinlog" con los parámetros "--start-datetime", "--stop-datetime" y "--start-position" para especificar el rango de tiempo y la posición de la copia de seguridad anterior.
mysqlbinlog --start-datetime='2023-10-23 00:00:00' --stop-datetime='2023-10-23 23:59:59' --start-position=[previous position] mysql-bin.000001 > incr_backup_2023-10-23.sql
Aquí, "[previous position]" es la posición del registro binario registrada desde la última copia de seguridad.
6. Registre la nueva posición del registro binario:
Después de ejecutar la copia de seguridad incremental, use "SHOW MASTER STATUS" para registrar el nuevo archivo de registro binario y la posición para la próxima copia de seguridad incremental.
SHOW MASTER STATUS;
7. Realice copias de seguridad incrementales regularmente:
Realice copias de seguridad incrementales diariamente según los requisitos, asegurándose de incluir los cambios del día anterior. Se pueden utilizar scripts de automatización para registrar y actualizar periódicamente las posiciones del registro binario.
8. Restaurar datos de copia de seguridad:
Combinar y restaurar copias de seguridad completas e incrementales en MySQL:
mysql -hlocalhost -uroot -p your_database < ks_flask.sql mysql -hlocalhost -uroot -p your_database < incr_backup_2023-10-23.sql
Si hay varias copias de seguridad incrementales, restáurelas en orden cronológico.
¿Cómo recuperarse de una copia de seguridad incremental de MySQL?
Existen tres métodos comunes para la recuperación incremental: recuperación general, recuperación basada en posición y recuperación por punto en el tiempo.
1. Recuperación general
Restaura todo el contenido de los registros binarios respaldados.
mysqlbinlog [--no-defaults] incremental backup file | mysql -u username -p password
2. Recuperación basada en la posición
Cuando un administrador de bases de datos realiza operaciones, pueden ocurrir simultáneamente operaciones erróneas y correctas. La recuperación basada en posición permite una recuperación más precisa.
Recuperación a una posición específica
mysqlbinlog --stop-position='operation ID' binary log | mysql -u username -p password
Recuperación a partir de una posición específica
mysqlbinlog --start-position='operation ID' binary log | mysql -u username -p password
3. Recuperación en un momento específico
Omite un punto temporal específico erróneo para recuperar datos. Hay tres métodos:
1) Recuperación desde el inicio del registro hasta un punto de tiempo específico
mysqlbinlog [--no-defaults] --stop-datetime='YYYY-MM-DD HH:MM:SS' binary log | mysql -u username -p password
2) Recuperación desde un punto temporal específico hasta el final del registro
mysqlbinlog [--no-defaults] --start-datetime='YYYY-MM-DD HH:MM:SS' binary log | mysql -u username -p password
3) Recuperación de un punto temporal a otro punto temporal
mysqlbinlog [--no-defaults] --start-datetime='YYYY-MM-DD HH:MM:SS' --stop-datetime='YYYY-MM-DD HH:MM:SS' binary log | mysql -u username -p password
Una forma más sencilla de crear copias de seguridad incrementales de MySQL
Como puedes ver, todo el proceso de realizar copias de seguridad y recuperación incrementales de MySQL utilizando registros binarios es complejo y consume mucho tiempo. Dado que son operaciones mediante línea de comandos, no tendrás oportunidad de deshacer si cometes un error durante el proceso de copia de seguridad y restauración.
Afortunadamente, el potente software de copia de seguridad MySQL Vinchin Backup & Recovery ofrece una interfaz fácil de usar para facilitar las cosas.
Vinchin Backup & Recovery ofrece una solución más automatizada, eficiente y segura, simplificando los procesos de copia de seguridad de MySQL con gestión centralizada, recuperación rápida, copias de seguridad incrementales y estrategias de almacenamiento flexibles para garantizar la disponibilidad de datos a largo plazo. Y también proporciona estrategias de copia de seguridad flexibles para Oracle DB, SQL Server, SQL Server, PostgreSQL, Postgres Pro y MariaDB, permitiendo copia de seguridad automática, copia de seguridad diferencial y copia de seguridad del registro de transacciones.
Para crear trabajos de copia de seguridad incremental de la base de datos MySQL, vaya a la página Physical Backup > Database Backup > Backup (tenga en cuenta que la primera copia de seguridad debe ser completa):
1. Seleccione las bases de datos que deben respaldarse.

2. Seleccione un nodo de respaldo en el que desee procesar y almacenar los datos de respaldo.

3. Configure estrategias de copia de seguridad según sus necesidades.

Aquí puede elegir la copia de seguridad incremental según lo programado.
4. Revise y confirme la configuración.

Haga clic en el botón de abajo para probar la prueba gratuita de 60 días de Vinchin y experimentar una solución eficiente y confiable de copia de seguridad y recuperación de datos.
Preguntas frecuentes sobre copias de seguridad incrementales de MySQL
1. ¿Qué ocurre si se elimina un archivo de registro binario antes de restaurar una copia de seguridad incremental?
Si faltan archivos de registro binario necesarios, la recuperación puede ser incompleta, lo que lleva a la pérdida de datos. Asegúrese siempre de que los registros binarios se conserven hasta que ya no sean necesarios.
2. ¿Durante cuánto tiempo debo conservar los registros binarios de MySQL para las copias de seguridad incrementales?
Depende de su política de respaldo. Por lo general, los registros deben conservarse hasta que se complete y verifique una nueva copia de seguridad completa.
Conclusión
Se recomienda actualizar los registros binarios de copias de seguridad incrementales diariamente. Esto garantiza que la frecuencia de copia de seguridad de la base de datos sea lo suficientemente alta como para minimizar el riesgo de pérdida de datos. Al actualizar las copias de seguridad incrementales cada día, se pueden gestionar de manera más eficaz los cambios en la base de datos, permitiendo restaurarla al estado más reciente cuando sea necesario.
Compartir en: