Configurar mysql maestro-esclavo y cómo sincronizar la base de datos

La sincronización de la base de datos maestro-esclavo puede referirse a lo siguiente:

1. Descripción general

MySQL proporciona la función de replicación (replicación) de la base de datos desde la versión 3.23.15 en adelante. utilice esta función Puede realizar las funciones de sincronización de dos bases de datos, modo maestro-esclavo y modo de copia de seguridad mutua. Este documento explica principalmente cómo utilizar la replicación mysql para configurar el modo de espera activo de dos máquinas en un sistema Linux.

2. Entorno

Sistema operativo: Linux 2.6.23.1-42.fc8# SMP (XEN no está instalado)

Versión de MySQL: 5.0.45- 4 .fc8

Entorno del equipo: dos PC (o máquinas virtuales)

3. Configuración

Las configuraciones para la función de replicación de sincronización de bases de datos están todas en MySQL. archivo de configuración Reflejado, archivo de configuración de MySQL (generalmente my.cnf): en este entorno es /etc/my.cnf.

3.1 Entorno de configuración:

Configuración de IP:

IP de un host: 10.10.0.119

Máscara: 255.255.0.0

p>

IP del host B: 10.10.8.112

Máscara: 255.255.0.0

Después de completar la configuración de IP, debe asegurarse de que los firewalls de los dos De hecho, los hosts se han apagado. Puede utilizar el estado de iptables del servicio de comando para verificar el estado del firewall. Si el estado del firewall aún se está ejecutando. Utilice el servicio iptables stop para desactivar el firewall. Si desea desactivar el firewall, puede usar el comando de configuración para desactivarlo o personalizarlo.

Al final, es mejor si los dos hosts pueden hacer ping entre sí.

3.2 Configurar A como maestro y B como modo esclavo (esclavo)

3.2.1 Configurar A como maestro

, agregar una cuenta para sincronización de usuarios:

CONCEDER ARCHIVO EN *.* A 'backup'@'10.10.8.112' IDENTIFICADO POR '1234';

CONCEDER ESCLAVO DE REPLICACIÓN EN *.* A 'backup'@'10.112. ' IDENTIFICADO POR '1234';

Otorgar 10.10.8.112 significa que la máquina Esclava tiene permisos de Archivo. No es suficiente con darle permisos de Archivo a la máquina Esclava. También debe otorgarle permisos de ESCLAVA DE REPLICACIÓN.

Agregar una base de datos como base de datos de sincronización:

crear prueba de base de datos;

Crear una estructura de tabla:

crear tabla mytest. (nombre de usuario varchar(20),contraseña varchar(20));

, modifique el archivo de configuración:

Modifique el archivo /etc/my.cnf de A, en my. elemento de configuración cnf Agregue la siguiente configuración:

server-id = 1 #Identificación del servidor

log-bin

binlog-do-db=test #Especifique el base de datos que requiere registros

Reinicie el servicio de la base de datos:

reinicio del servicio mysqld

Verifique el ID del servidor:

muestra la variable como ' server_id';

p>

Ejemplo:

mysql> muestra variables como 'server_id';

+--------- ------+--- ----+

| Nombre_variable |

+--------------- +-------+

| ID_servidor 1 |

+---------------+----- --+

1 fila en conjunto (0,00 segundos)

Utilice el comando show master status/G para ver el estado del registro.

Normalmente:

mysql> mostrar estado maestro/G

******************** ** ******** 1. fila ****************************

Archivo: mysqld -bin .000002

Posición: 198

Binlog_Do_DB: prueba, prueba

Binlog_Ignore_DB:

1 fila en conjunto (0,08 segundos)

3.2.2 Configurar B como esclavo

, agregar una base de datos como base de datos de sincronización:

crear prueba de base de datos;

, crear una estructura de tabla:

crear tabla mytest (nombre de usuario varchar(20),contraseña varchar(20));

, modificar el archivo de configuración:

Modificar B /etc/ my.cnf, agregue la siguiente configuración al elemento de configuración my.cnf:

server-id=2

master-host=10.10

.

master -user=backup #Sincronizar cuentas de usuario

master-password=1234

master-port=3306

master-connect-retry=60 # Reintento predeterminado Intervalo de prueba segundos

replicate-do-db=test #Dígale al esclavo que solo actualice la base de datos de respaldo

, reinicie el servicio de la base de datos:

reinicio del servicio mysqld

Ver server-id:

mostrar variables como 'server_id'

Ejemplo:

mysql> mostrar variables como 'id_servidor';

+---------------+-------+

| Nombre_variable |

+---------------+-------+

| servidor_id 2 |

+ ---- -----------+-------+

1 fila en conjunto (0,00 segundos)

, use show esclavo comando status/G Mire el estado del registro.

Normalmente:

mysql> muestra el estado del esclavo/G

******************** **** ******** 1. fila ****************************

Slave_IO_State : Esperando que el maestro envíe el evento

Master_Host: 10.10.0.119

Master_User: copia de seguridad

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysqld-bin.000001

Read_Master_Log_Pos: 98

Relay_Log_File: mysqld-relay-bin.000003

Relay_Log_Pos: 236

Relay_Master_Log_File: mysqld-bin.000001

Slave_IO_Running: Sí

Slave_SQL_Running: Sí

Replicate_Do_DB: prueba, prueba

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 98

Relay_Log_Space: 236

Hasta_Condición: Ninguna

Hasta_Log_File:

Hasta_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

1 fila en conjunto (0,01 segundos)

3.2.3 Verificar configuración

Puntos

No utilice insertar, eliminar y actualizar para agregar, eliminar y modificar la base de datos en el host A; verifique si la base de datos del host B es consistente con la del host A, si son consistentes, la configuración es exitosa;

3.3 Modo de copia de seguridad mutua de doble computadora

Si agrega configuraciones esclavas al host A y configuraciones maestras al host B, puede sincronizar B->A.

Agregue las siguientes configuraciones al elemento de configuración mysqld en el archivo de configuración del host A:

master-host=10.10.8.112

master-user=backup

p>

contraseña-master=1234

replicar-do-db=test

master-connect-retry=10

, configuración en B Agregue las siguientes configuraciones al elemento de configuración mysqld en el archivo:

log-bin

binlog-do-db=test

Nota: Cuando se produce un error, *. El hilo de sincronización del archivo de registro de errores sale. Después de corregir el error, deje que el mecanismo de sincronización funcione y ejecute el inicio esclavo.

Reinicie las máquinas A y B para lograr una copia de seguridad activa bidireccional.

4. Preguntas frecuentes y soluciones

Con respecto a los permisos de la máquina esclava, no solo debe otorgarle permisos de Archivo a la máquina esclava, sino también permisos de ESCLAVO DE REPLICACIÓN.

Después de modificar la máquina esclava/etc/my.cnf, antes de iniciar el servicio mysql de la máquina esclava, recuerde eliminar master.info

, en show master status o When show El estado del esclavo es anormal, mira lo que dice .err.

El trabajo de replicación de Mysql en Slave tiene dos subprocesos, un subproceso de E/S y un subproceso SQL. La función de E/S es recuperar su binlog del puerto 3306 del maestro (después de modificar cualquier contenido en el maestro, escribirá las modificaciones en su propio binlog y esperará a que el esclavo se actualice), y luego lo escribirá en el registro de retransmisión local, y el hilo SQL lee el registro de retransmisión local y luego lo convierte en una declaración que Mysql pueda entender, por lo que la sincronización se completa paso a paso. Lo que determina el hilo de E/S es /var/lib/. mysql/master.info, y lo que determina el hilo SQL es /var/lib/mysql/relay-log.info.

Para iniciar el esclavo, use el comando start esclavo para reiniciar, use restart; esclavo

p>copyright 2024 Red idiomática china All rights reserved