Casi todos los dias se presenta algo nuevo en mis instalaciones de MySQL. No son cosas malas, simplemente son gajes del oficio. Sobre todo considerando que las bases de datos que manejo estan rondando 1.5TB y alrededor de 40 millones de queries/consultas en un dia (para mi master, en mis esclavos sube al doble y en las bases de datos de reportes son ~110 millones al dia).
Uno de los problemas con ese volumen de datos y de trafico es hacer backups porque no hay un momento del dia en que se pueda decir que estamos en mantenimiento, al menos no donde trabajo! Supongo que es conveniente poner un banner en un homepage diciendo "El servicio no estara disponible de 1am a 4am"... quizas algun dia.
Existen varias soluciones para respaldar en MySQL. La mas conocida por estar incluida con el server es mysqldump.
El problema es que con eso se generan archivos de texto con los datos de las tablas y si algun dia pasas de los 200GB en tu base de datos te daras cuenta que importar tu base de datos de nuevo es algo que te llevara minimo 24hrs (dependiendo de tus discos, indices y otras variables).
La solucion? innodbbackup? no porque bloquea tus tablas mientras se estan copiando.
Para mi lo mas sencillo y que realmente es practico es realizar copias directas de archivos en formato binario. Mi proceso es:
1. Detener la replicacion en un esclavo (mysql -e "slave stop")
2. Detener el proceso de la base de datos (service mysql stop en Fedora, CentOS, RedHat)
3. Una vez que mysqld se detenga copiar todo /var/lib/mysql (cp -Rvf /var/lib/mysql /lugar/a/donde/quiero/copiar/)
En varias ocasiones he tomado cursos con gente de MySQL AB (no se como se llamen desde que los compro Sun y que Oracle compro a este) y aunque no recomiendan operaciones directas sobre archivos yo no he tenido ningun problema.
La gran ventaja es que puedo tomar los archivos binarios, copiarlos a otro servidor e iniciar una replica de la base de datos inmediatamente, sin importar archivos de texto, conservando mis grants, etc.
Otro truco que no es popular pero que es muy util con tablas en MyISAM es copiar los archivos sin detener el servidor SIEMPRE Y CUANDO no se esten modificando las tablas.
Si tienes tablas que mas que nada son de lectura las puedes copiar sin detener tu server simplemente ejecutando:
# cp -Rvf /var/lib/mysql/nombre_de_tu_BD/nombre_de_la_tabla.* /lugar/a/donde/quiero/copiar/)
Suscribirse a:
Comentarios de la entrada (Atom)
No hay comentarios.:
Publicar un comentario