Red de conocimiento de abogados - Derecho de sociedades - Cómo configurar exitosamente una configuración hot standby de doble máquina para la base de datos MySQL

Cómo configurar exitosamente una configuración hot standby de doble máquina para la base de datos MySQL

1. La base de datos MySQL no tiene un mecanismo de copia de seguridad incremental. Cuando la cantidad de datos es demasiado grande, la copia de seguridad es un gran problema. Afortunadamente, la base de datos MySQL proporciona un mecanismo de respaldo maestro-esclavo, que en realidad escribe todos los datos de la base de datos maestra en la base de datos de respaldo al mismo tiempo. Implementar copia de seguridad en caliente de la base de datos MySQL.

2. Si desea implementar una copia de seguridad en caliente en dos máquinas, primero debe comprender los requisitos para las versiones de los servidores de bases de datos maestro y esclavo. Para lograr el modo de espera activo, la versión de MySQL debe ser superior a 3.2. Otro principio básico es que la versión de la base de datos esclava puede ser superior a la versión de la base de datos del servidor maestro, pero no puede ser inferior a la versión de la base de datos del servidor maestro.

3. Configure el servidor de base de datos principal:

a. Primero verifique si la versión del servidor principal admite el modo de espera activo. Luego verifique si la configuración del bloque de configuración mysqld en my.cnf (tipo Unix) o my.ini (Windows) tiene log-bin (registro de cambios de la base de datos), porque el mecanismo de replicación de mysql es un mecanismo de replicación basado en registros. , el servidor principal debe Requiere soporte para registros de cambios. Luego configure la base de datos en la que se debe escribir el registro o la base de datos donde no se debe escribir el registro. De esta manera sólo los cambios en la base de datos que le interesan se escriben en el registro de la base de datos.

server-id=1 //El ID de la base de datos debe ser 1 de forma predeterminada y no es necesario cambiarlo.

log-bin=log_name //El nombre de la base de datos archivo de registro Aquí puede especificar el registro en otra ubicación. Si el directorio no está configurado, un nombre de registro del nombre de host predeterminado

binlog-do-db=db_name //Base de datos para registrar registros

binlog-ignore-db=db_name //Sin registro de base de datos

Si hay varias bases de datos, use "," para separarlas

Luego configure la cuenta de usuario para sincronizando la base de datos

mysqlgt; GRANT REPLICATION SLAVE ON *.*

-gt; TO 'repl'@'.mydomain.com' IDENTIFICADO POR 'slavepass';

Versiones anteriores a 4.0.2, porque no se admite REPLICACIÓN. Utilice la siguiente declaración para lograr esta función

mysqlgt; GRANT FILE ON *.*

-gt; '@'.mydomain.com' IDENTIFICADO POR 'slavepass';

Reinicie la base de datos después de configurar el archivo de configuración del servidor principal

b. Bloquee la base de datos existente y haga una copia de seguridad. datos actuales

Bloquear la base de datos

mysqlgt; FLUSH TABLAS CON READ LOCK;

Hay dos formas de hacer una copia de seguridad de la base de datos. Una es ingresar directamente a la base de datos. directorio de datos de mysql y empaquete la carpeta que necesita para hacer una copia de seguridad de la base de datos. El segundo es usar el método mysqldump para hacer una copia de seguridad de la base de datos, pero agregue el parámetro "--master-data". subir la base de datos

c. Verificar el estado del servidor maestro

mysqlgt ; show master status\G;

--------- ------ ---------- ---------- --- ------------------

| Archivo | Posición | Binlog_Do_DB |

------ --------- ---------- ----- --------- ----------------- -

| mysql-bin.003 | prueba | /p>

--------------- ----- ----- -------------- ----- -------------

Registre el valor de los elementos de archivo y posición, se utilizará más adelante.

d. Luego active el bloqueo de la base de datos

mysqlgt; UNLOCK TABLES;

4. a. Configure el primer archivo de configuración de la base de datos

server-id=n //Establezca la identificación de la base de datos. El servidor maestro predeterminado es 1, que se puede configurar de manera casual, pero no se puede repetir si hay varios esclavos. servidores.

master-host=db-master.mycompany.com //La dirección IP o nombre de dominio del servidor maestro

master-port=3306 //El número de puerto del maestro base de datos

master-user=pertinax //Usuario para sincronizar la base de datos

master-password=freitag //Contraseña para sincronizar la base de datos

master-connect-retry= 60 //Si desde El servidor encontró que el servidor principal estaba desconectado y la diferencia horaria entre la reconexión

report-host=db-slave.mycompany.com //Reportar el servidor incorrecto

b. Haga una copia de seguridad del servidor de base de datos principal esclavo. Importe la base de datos resultante al servidor esclavo.

c. Luego inicie el servidor de base de datos esclavo si no se agrega el parámetro "--skip-slave-start". al comenzar, ingresará mysql

mysqlgt; Slave Stop; // Detendrá el servicio esclavo

d. Establece varios parámetros del servidor maestro

mysqlgt; MASTER TO

- gt; MASTER_HOST='master_host_name', //Dirección IP del servidor principal

-gt; MASTER_USER='replication_user_name', //Usuario para sincronizar la base de datos

-gt; MASTER_PASSWORD=' replication_password', //La contraseña para la base de datos de sincronización

-gt; MASTER_LOG_FILE='recorded_log_file_name', //El nombre del archivo del registro binario del servidor principal (los parámetros deben recordarse previamente)

- gt; MASTER_LOG_POS=recorded_log_position; //La posición inicial del archivo de registro (los parámetros deben recordarse previamente)

e. el hilo para sincronizar la base de datos

mysqlgt; inicio esclavo;

Verifique el estado de sincronización de la base de datos.

Comprueba el estado de los servidores maestro y esclavo

mysqlgt; SHOW PROCESSLIST\G //Puedes comprobar el proceso mysql para ver si hay algún proceso escuchando

Si el registro es demasiado Los pasos para borrar el registro son los siguientes

1. Bloquear la base de datos maestra

mysqlgt; FLUSH TABLAS CON READ LOCK;

2. Detener el esclavo de la base de datos esclava

p>

mysqlgt; esclavo detener;

3. archivo de registro

mostrar estado maestro;

-- ------------- ---------- ----- -------- ------------- -----

| Posición | Binlog_do_db |

- -------------- ------- ------------- ---------- --------

| louis-bin.001 | --------- --------------- ------------------

4 . Desbloquear la base de datos principal

mysqlgt; desbloquear tablas;

5. Actualizar la información de la base de datos maestra en la base de datos esclava

CAMBIAR MAESTRO A<. /p>

-gt; MASTER_HOST='master_host_name', //Dirección IP del servidor principal

-gt; MASTER_USER='replication_user_name', //Usuario para sincronizar la base de datos

<; p>-gt; MASTER_PASSWORD='replication_password', //Contraseña para sincronizar la base de datos

-gt ; MASTER_LOG_FILE='recorded_log_file_name', //El nombre del archivo del registro binario del servidor principal (los parámetros necesarios recordado antes)

-gt; MASTER_LOG_POS=recorded_log_position; // La posición inicial del archivo de registro (los parámetros que deben recordarse anteriormente)

6. la base de datos

mysqlgt; inicio esclavo;