Buscando una estrategia o herramienta para lidiar con la recuperación de una única base de datos a un punto en el tiempo en un sistema replicado ocupado.
Tengo 12 bases de datos que se ejecutan en 2 servidores MySQL 5.0.77 en configuración replicada maestro-esclavo. Se realiza un volcado completo del esclavo de solo lectura diariamente, y hay volcados incrementales de SQL disponibles, con estas copias de seguridad fuera del sitio y se supervisa el estado de la replicación.
Editar: Las tablas son una mezcla de InnoDB y myISAM, por lo tanto, las soluciones específicas del motor no están disponibles.
Entonces, dado un fallo completo del servidor maestro, puedo romper la replicación y promover el servidor esclavo, también tengo la opción de reconstruir un nuevo servidor y configurarlo desde la copia de seguridad COMPLETA fuera de juego, y luego aplicar los diferenciales tomados por hora desde el esclavo.
Sin embargo, me preocupa cómo lidiar con una falla parcial o la falla de una sola base de datos. Puedo pensar en 2 escenarios que son bastante probables;
- la base de datos 7 (por ejemplo) se corrompe, continúa atendiendo algunas solicitudes hasta que alguien se da cuenta de que está dañada o alerta de los archivos de registro ...
- Algunas consultas, como la base de datos desplegable, la tabla desplegable, la consulta de tipo "actualizar donde ..." abrevia una sola base de datos o algún subconjunto en ella.
Por el momento, tengo un montón de volcados COMPLETOS como archivos FULL- $ DATE-all-database.sql.gz, y diferenciales que se pueden aplicar a los volcados FULL- DIFF- $ DATE-all-database.sql.gz
Para restaurar la base de datos 7 a algún punto en el tiempo se requeriría una revisión a través de los archivos FULL y DIFF, y la aplicación manual de ese sql.
¿Cómo debo proceder para poder recuperar uno de los volcados DIFF anteriores en la base de datos maestra?
¿Necesito hacer una copia de seguridad en archivos de bases de datos individuales, es decir
mysqldump --databases "database1" | gzip > database1.sql.gz
mysqldump --databases "database2" | gzip > database2.sql.gz
mysqldump --databases "database3" | gzip > database3.sql.gz
más bien que..
mysqldump --master-data --lock--all-databases --all-databases | gzip > all-databases.sql.gz
Si busco archivos mysqldump por separado, ¿qué sucede con el registro binario de datos maestros, y debería incluso configurar --master-data para los volcados de recuperación del servidor maestro?
service mysql restart --skip-networking
, 3) realiza el volcado paralelo, 4) ejecutaservice mysql restart
. Luego vuelva a cargar las tablas que necesita.iptables i.e. iptables -I INPUT -p tcp --dport 3306 -j DROP
eth0 y lo