Obtuve un servidor de base de datos MySQL de producción Ubuntu 10.04 donde el tamaño total de la base de datos es de 260 GB, mientras que el tamaño de la partición raíz es de 300 GB donde se almacena la base de datos, esencialmente significa alrededor del 96% de / está lleno y no queda espacio para almacenar volcado / copia de seguridad etc. Ningún otro disco está conectado al servidor a partir de ahora.
Mi tarea es migrar esta base de datos a otro servidor que se encuentre en un centro de datos diferente. La pregunta es cómo hacerlo de manera eficiente con un tiempo de inactividad mínimo.
Estoy pensando en línea de:
- Solicite adjuntar una unidad adicional al servidor y realice un volcado en esa unidad. [EDITAR: no es posible ahora.]
- Transfiera el volcado al nuevo servidor, restaurelo y haga que el nuevo servidor sea esclavo del existente para mantener los datos sincronizados
- Cuando se necesite la migración, interrumpa la replicación, actualice la configuración esclava para aceptar solicitudes de lectura / escritura y haga que el servidor antiguo sea de solo lectura para que no entretenga ninguna solicitud de escritura y diga a los desarrolladores de aplicaciones que actualicen su configuración con una nueva dirección IP para db.
¿Cuáles son sus sugerencias para mejorar este o cualquier otro enfoque alternativo para esta tarea?
Un volcado y restauración de una base de datos de ese tamaño llevaría horas. Lo haría, dependiendo de las versiones de mysql siempre que el número de versión aumente y no haya saltos en el número de revisión principal. Debería poder tomar los archivos de la base de datos sin formato en / var / lib / mysql y ponerlos en el nuevo servidor, establecer los permisos y encender el servidor con el modificador --skip-grant-tables. Agregue las subvenciones necesarias para los usuarios que reflejen la nueva dirección IP y luego reinicie normalmente.
Me ocuparía del tamaño de su base de datos, ya que es demasiado grande para ser eficiente.
fuente
Puede seguir estos pasos para migrar esta enorme base de datos InnoDB.
Esta tarea llevará varias horas. Para minimizar el efecto de la secuencia de comandos hotcopy en el servidor en vivo, establezca una prioridad baja usando renice
$ renice -n 5 -p <SCRIPT-PID>
Puede experimentar lentitud durante este proceso, pero definitivamente no hay tiempo de inactividad. Percona XtraBackup creará una copia en caliente que es más rápida y consume menos recursos en comparación con mysqldump. Esto es ideal para una gran base de datos InnoDB.
Dependiendo de los patrones de uso y las estadísticas, puede ejecutar este proceso cuando haya un tráfico mínimo en el servidor. ¿Quizás hacer esto durante el fin de semana es una buena idea? Lo anterior es solo un resumen del proceso. Es posible que deba revisar la documentación de Percona XtraBackup y SSHFS.
fuente
Podrías volcar la base de datos directamente al servidor remoto ...
... SQL debería comprimir bien, por lo que debería hacer esto mucho más rápido con una de estas opciones, aunque también dependerá de la cantidad de RAM que tenga en la caja ...
fuente