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) p>
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 | p>
+---------------+-------+
| 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) p>
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