Problema de conexión MySQL entre dos máquinas
Las dos formas principales de hacer una copia de seguridad de una base de datos son usar el programa mysqldump o copiar los archivos de la base de datos directamente (como usar c p, tar o c p i o). Cada método tiene sus propias ventajas y desventajas:
Mysqldump funciona con el servidor MySQL. El método de copia directa es independiente del servidor, por lo que se deben tomar medidas para garantizar que ningún cliente modifique estas tablas durante la copia. Este problema es el mismo que utilizar la copia de seguridad del sistema de archivos para hacer una copia de seguridad de la base de datos: si la tabla de la base de datos se actualiza durante la copia de seguridad del sistema de archivos, el archivo de la tabla respaldada estará en un estado inconsistente y no tendrá sentido restaurar la tabla más adelante. . La diferencia entre una copia de seguridad del sistema de archivos y una copia directa de archivos es que con esta última usted tiene control sobre el progreso de la copia de seguridad, por lo que puede tomar medidas para asegurarse de que el servidor mantenga las tablas estáticas.
Mysqldump es más lento que la tecnología de copia directa.
Los archivos de texto generados por Mysqldump se pueden trasplantar a otras máquinas, incluso a máquinas con diferentes estructuras de hardware. La copia directa de archivos no se puede transferir a otras máquinas a menos que la tabla que se va a copiar utilice el formato de almacenamiento MyISAM. Las tablas ISAM sólo se pueden copiar entre máquinas con la misma estructura de hardware. Por ejemplo, no es posible copiar archivos de la máquina Solaris de PARC a la máquina Solaris de Intel (o viceversa). El formato de almacenamiento de tablas MyISAM introducido en MySQL3.23 puede resolver este problema porque es independiente de la máquina. Por lo tanto, la copia directa del archivo se puede trasplantar a una máquina con una estructura de hardware diferente si se cumplen las dos condiciones siguientes: es decir, la otra máquina también debe ejecutar MySQL versión 3.23 o superior y el archivo debe estar representado como MyISAM. tabla en lugar de una tabla ISAM.
No importa qué método de copia de seguridad elija, se deben seguir ciertos principios para garantizar los mejores resultados cuando sea necesario restaurar el contenido de la base de datos:
Realice copias de seguridad con regularidad. Haz un horario y respétalo.
Le indica al servidor que ejecute un registro de actualización. Los registros de actualización pueden resultar útiles cuando necesita recuperar una base de datos bloqueada. Después de utilizar un archivo de copia de seguridad para restaurar la base de datos a su estado en el momento de la copia de seguridad, puede volver a ejecutar los cambios realizados desde la copia de seguridad ejecutando una consulta en el registro de actualización. Esta operación restaura las tablas de la base de datos a su estado en el momento del fallo. En el lenguaje de copia de seguridad del sistema de archivos, un archivo de copia de seguridad de la base de datos representa un volcado completo y un registro de actualización representa un volcado incremental.
Utilice un patrón de nomenclatura coherente y fácil de entender para los archivos de copia de seguridad. Nombres como back up 1 y backup2 no tienen ningún significado especial. Tienes que perder el tiempo mirando el contenido del archivo cuando lo necesitas para realizar la recuperación. Puede que le resulte beneficioso utilizar el nombre de la base de datos y tomarse el tiempo para crear el nombre del archivo de copia de seguridad. Por ejemplo:
Volcado de MySQL samp_db/usr/archives/MySQL/samp_db. 1999-10-02
MySQL dump menagerie/usr/archives/MySQL/menagerie 1999-10-02
Es posible que deba comprimir el archivo de respaldo después de generarlo. Después de todo, los archivos de respaldo son grandes, por lo que es posible que también desee finalizarlos para evitar que llenen el disco, de manera similar a finalizar los archivos de registro. Puede utilizar la misma técnica para finalizar los archivos de copia de seguridad:
Utilice la copia de seguridad del sistema de archivos para realizar una copia de seguridad de sus archivos de copia de seguridad.
Si sufre un bloqueo total, no sólo se dañará el directorio de datos sino también la unidad de disco que contiene la copia de seguridad de la base de datos, lo que puede causar verdaderos problemas. También debe hacer una copia de seguridad de sus registros de actualización.
Coloque los archivos de respaldo en un sistema de archivos diferente al de la base de datos. Esto reducirá la probabilidad de que el sistema de archivos que contiene el diccionario de datos se llene con archivos de respaldo generados.
La técnica de crear una copia de seguridad también es útil para copiar la base de datos a otro servidor. Normalmente, la base de datos se transfiere a un servidor que se ejecuta en otro host, pero también se pueden transferir datos a otro servidor que se ejecuta en el mismo host. Si está ejecutando un servidor para una nueva versión de MySQL y desea probarlo en un servidor de producción con algunos datos reales, puede hacerlo. Otra posibilidad es que tenga una máquina nueva y desee mover todas sus bases de datos a esta nueva máquina.
Utilice mysqldump para realizar una copia de seguridad y copiar la base de datos
Cuando se utiliza el programa mysqldump para generar un archivo de copia de seguridad de la base de datos, la configuración predeterminada es que el contenido del archivo consta de declaraciones C R E AT E TABLE , que crea tablas de volcado e inserta una declaración que contiene datos de fila en una tabla. En otras palabras, la salida creada por mysqldump se puede utilizar como entrada para mysql en el futuro para reconstruir la base de datos.
Puede volcar toda la base de datos en un archivo de texto separado con el siguiente comando:
El resto del archivo consta de más instrucciones INSERT y CREATE TABLE. Si desea una copia de seguridad comprimida, puede reemplazarla con un comando similar a:
MySQL dump samp _ db | gzip/usr/archives/MySQL/samp _ db 1999.10.02 p. >
Si tiene una base de datos muy grande, los archivos de salida también serán muy grandes y difíciles de administrar. Si lo desea, puede volcar el contenido de tablas individuales nombrándolas con el nombre de la base de datos del comando mysqldump. Esta operación divide el archivo de volcado en archivos más pequeños y manejables. El siguiente ejemplo mostrará cómo volcar algunas tablas de samp_db en un solo archivo:
mysqldump samp_db evento de calificación del estudiante ausencia libro de calificaciones.sql
mysqldump samp_db miembro presidente hist-league.sql
Si está generando archivos de respaldo y planea usarlos para actualizar periódicamente el contenido de otra base de datos, es posible que desee utilizar la opción -add-drop-table. Esta opción le dice a mysqldump que escriba una declaración DROP TABLE IF EXISTS en el archivo de respaldo. Luego, cuando tome el archivo de respaldo y lo cargue en la segunda base de datos, no habrá ningún mensaje de error si la tabla ya existe. Si está ejecutando una segunda base de datos, puede utilizar esta técnica para cargar periódicamente una copia de los datos de la primera base de datos.
Si está volcando la base de datos para convertirla a otro servidor, no necesita crear un archivo de respaldo. Desea asegurarse de que la base de datos exista en otro host y luego usar una tubería para permitir que mysql lea la salida de mysqldump directamente para volcar la base de datos.
Por ejemplo, si desea copiar la base de datos samp_db de PIT_V I per.snake.net a boa.snake.net, haga lo siguiente:
MySQL admin-h boa.snake.net crea samp_db p >
base de datos de muestra mysqldump | MySQL -h base de datos de muestra boa.snake.net
Más tarde, si desea actualizar la base de datos nuevamente en boa.snake.net, puede omitir el comando mysqladmin, pero agregue -add-drop-table a mysqldump para evitar errores de "la tabla ya existe":
mysqldump - base de datos de muestra add-drop-table | base de datos de muestra MySQL-h boa-snake.net
Otras opciones para mysqldump incluyen:
Una combinación de -flush-log y -lock-tables puede ayudar a verificar la base de datos. -lock-table bloquea todas las tablas volcadas, mientras que -flush-log cierra y vuelve a abrir el archivo de registro de actualización. Si se genera un registro de actualización posterior, el nuevo registro de actualización solo contendrá consultas que modificaron la base de datos desde el punto de copia de seguridad. En este punto, verifique el punto de control del registro de actualización para ese momento de la copia de seguridad (pero si tiene clientes que necesitan realizar operaciones de actualización, bloquear todas las tablas durante la copia de seguridad no es bueno para el acceso del cliente).
Si utiliza -flush-logs para verificar los puntos de control del registro de actualización en el momento de la copia de seguridad, es mejor volcar toda la base de datos. Si descarga un solo archivo, será difícil sincronizar los puntos de control del registro de actualización con el archivo de respaldo. Durante las operaciones de recuperación, el contenido del registro de actualización generalmente se extrae en función de la base de datos por día. No existe ninguna opción para extraer registros de actualización para tablas individuales, por lo que deberá extraerlos usted mismo.
De forma predeterminada, mysqldump lee todo el contenido de la tabla en la memoria antes de escribir. En realidad, esto no es necesario. De hecho, si tienes una mesa muy grande, este es casi un método fallido. Puede indicarle a mysqldump que escriba cada fila (siempre que se recupere) con la opción -quick. Para optimizar aún más el proceso de volcado, se puede utilizar -OPT en lugar de -QUICK. La opción de opción abre opciones adicionales que acelerarán el volcado y la lectura de datos.
Debido a las ventajas de la copia de seguridad rápida, usar -opt para realizar copias de seguridad es el método más común. Sin embargo, tenga en cuenta que la opción -opt tiene un costo: -opt optimiza su proceso de copia de seguridad, no el acceso de otros clientes a la base de datos. La opción de opción evita que alguien actualice las tablas bloqueadas volcadas. Encontrará fácilmente que, en general,
los esfuerzos de acceso a las bases de datos están regulados. Intente ejecutar la copia de seguridad durante el momento del día en que su base de datos esté más ocupada. No llevará mucho tiempo.
La opción algo opuesta a -opt es -d e l a y ed. Esta opción hace que mysqldump escriba una instrucción INSERT D E L AYED en lugar de una instrucción INSERT. Si está cargando un archivo de datos en otra base de datos y desea minimizar el impacto de esa operación en otras consultas (que pueden ocurrir en la base de datos), entonces -d e l a y e d le ayudará a lograr este objetivo.
- La opción de compresión ayuda a copiar la base de datos a otra máquina porque reduce la cantidad de bytes en la transferencia de red.
Aquí hay un ejemplo, tenga en cuenta que para que el programa se comunique con el servidor en el host remoto (en lugar de comunicarse con el host local), se proporciona la opción -compress:
MySQL dump -opt samp_db | MySQL -compress-h boa.snake.net samp _ db
Mysqldump tiene muchas opciones; consulte el Apéndice E para obtener más detalles.
Uso del método de replicación y copia de seguridad de bases de datos con copia directa
Otro método para realizar copias de seguridad de una base de datos o una tabla sin usar mysqldump es copiar los archivos de la tabla directamente. Por lo general, esto se puede lograr utilizando herramientas como c.p, tar o cpio. Los ejemplos de esta sección utilizan c.
Cuando utilice el método de copia de seguridad de copia directa, debe asegurarse de que no se utilicen estas tablas. Si el servidor modifica la tabla mientras se replica, la replicación no será efectiva.
La mejor manera de garantizar la integridad de la replicación es apagar el servidor, copiar los archivos y luego reiniciarlo. Si no desea apagar el servidor, debe consultar el Capítulo 13 para obtener instrucciones sobre cómo bloquear el servidor al realizar un punto de verificación de la tabla. Si el servidor está en ejecución, se aplican las mismas restricciones para copiar archivos y debe usar el mismo protocolo de bloqueo para mantener el servidor estacionario.
Suponiendo que el servidor está inactivo o que la tabla a copiar está bloqueada, el siguiente ejemplo mostrará cómo hacer una copia de seguridad de toda la base de datos samp_db en el directorio de copia de seguridad (DATADIR representa el directorio de datos del servidor): p>
Directorio de datos de cd
cp -r samp_db /usr/archive/mysql La tabla única se puede copiar de la siguiente manera:
Directorio de datos de cd/base de datos de muestra
miembro del CD. * /usr/archive/mysql/samp_db
partitura del cd. * /usr/archive/mysql/samp_db
...
Cuando se complete la copia de seguridad, puede reiniciar el servidor (si se ha apagado) o liberar los bloqueos impuestos. en la mesa (si mantiene el servidor en funcionamiento).
Si desea copiar una base de datos de una máquina a otra utilizando archivos de copia directa, simplemente copie los archivos a la base de datos correspondiente en otro servidor host. Asegúrese de que estos archivos sean para MyISAM o que ambas máquinas tengan la misma estructura de hardware. De lo contrario, las tablas parecerán tener contenidos extraños en el segundo host. También debe asegurarse de que el servidor del segundo host no acceda a las tablas mientras se están instalando.
Replicar una base de datos
El término "replicación" significa un poco como "copiar una base de datos a otro servidor" o actualizar una base de datos secundaria en tiempo real cuando el contenido de la base de datos primaria cambio de base de datos. Si simplemente desea copiar la base de datos a otro servidor, puede usar el comando discutido anteriormente. A partir de la versión 3.23 de MySQL, comenzó a aparecer soporte para una replicación efectiva basada en actualizaciones. Pero su funcionalidad aún no está madura, por lo que no tengo nada que discutir al respecto. Si está interesado, puede prestar atención a la nueva versión actual para ver qué nuevas funciones de desarrollo están disponibles.