Código fuente del sitio web de Pstudy
Es una solución madura, con un maestro y varios esclavos. El servidor maestro es responsable de la escritura y los servidores esclavos son de solo lectura.
Las funciones principales de la solución maestro-esclavo mysql son:
La separación de lectura y escritura permite que la base de datos admita una mayor concurrencia. Especialmente importante en los informes. Debido a que las declaraciones SQL de algunos informes son muy lentas, la tabla está bloqueada y el servicio de front-end se ve afectado. Si la recepción usa el maestro y el informe usa el esclavo, entonces el informe SQL no hará que la recepción se bloquee, lo que garantiza la velocidad de la recepción.
Aprovecha los diferentes motores de tablas. Actualmente, la velocidad de consulta de las tablas Myisam es ligeramente más rápida que la de innodb, mientras que la escritura simultánea de innodb es mejor que myIsam. Luego, podemos usar innodb como nodo maestro para manejar escrituras concurrentes elevadas y usar el nodo maestro como nodo esclavo para aceptar consultas. O cree un índice de texto completo en Myisamslav para resolver la debilidad de innodb sin índice de texto completo.
Espera en caliente, sincronización "casi en tiempo real" de datos esclavos y maestros.
Preparación. Primero instale dos MYSQL (servidor maestro: 192.168.84.137, servidor esclavo: 192.168.84.130).
Configurar el host. Busque el archivo my.cnf y modifíquelo:
server-id = 1
log _ bin =/var/log/MySQL/MySQL-bin log
<. p >expire_logs_days = 10max_bin log_size = 100m
Binlog_do_db=research#database de la que se va a realizar una copia de seguridad
# binlog _ do _ db = copia de seguridad #Base de datos en ser respaldado
# binlog _ ignore _ db = Prueba que no requiere respaldo #Database
Entre ellos, aunque es el host, el servidor- La identificación no es necesariamente 1 , suele ser 1.
Binlog_do_db es la base de datos que se va a copiar. Binlog_ignore_db es una base de datos que ignora la replicación. Si necesita agregar una base de datos, agregue la fila correspondiente. (Preferiblemente escrito en la configuración esclava)
Reinicie la base de datos maestra y ejecute la verificación:
mysql gt show master status #Compruebe si se inició como maestra.
- - - -
|Archivo|Ubicación| Binlog _ Hacer _ DB | Binlog _ Ignorar _ DB |
- - - -
| MySQL-bin .000001 | 1087 | Estudio, Copia de seguridad |p>
- - -
0 filas en 65438 colección (0,00 segundos)
mysql gt muestra variables similares a "log";
#Necesitas ver esta línea, que indica que se ha abierto binlog: log_bin |
Crear un usuario en el servidor maestro para el servidor esclavo.
mysql gt otorgó esclavo de replicación en archivos *. *Para "Copiar"@"192.168.84. 130" identificado por "123456";
De esta manera se configura el host.
Configurar el dispositivo esclavo
Server-ID = 2 #Cualquier número, tenga en cuenta que no se pueden repetir varios dispositivos esclavos.
No es necesario abrir # log _ bin =/var/log/MySQL/MySQL-bin .
Comenta.
master-host = 192.168.84 137# IP del maestro.
Usuario-maestro = replicación #El nombre de usuario creado en la operación anterior.
Master-password = 123456 #La contraseña establecida en la operación anterior.
Después de que la configuración surta efecto, configure la conexión con el servidor principal:
mysql gt cambie el maestro a
- MASTER _ HOST = ' 192.168. .84 .137 ',
->MASTER_USER='replicación',
->MASTER_PASSWORD='123456',
->MASTER_LOG_ FILE = 'MySQL -bin. 000001',
->MASTER_LOG_POS = 1087;
Entre ellos, MASTER_HOST es la IP del host, MASTER_USER y MASTER_PASSWORD son los que acabamos de configurar para los usuarios agregados. el host, MASTER_LOG_FILE y MASTER_LOG_POS corresponden a la información en el estado del host.
esclavo: MySQL gt; muestra el estado del esclavo/G
#Muchas, muchas columnas
============= = =================================================== = ======================================
En este momento, Puedes hacer un poco de trabajo de detective:
Hay tres direcciones que deben depurarse exitosamente.
1 Conecte la biblioteca esclava a la biblioteca principal para realizar pruebas: MySQL-h 192.168.84-U copy-P123456 La conexión aquí debe ser exitosa.
2 Muestra el estado principal; debe haber una visualización relevante.
3 Mostrar estado del esclavo
Debe ser
Slave_IO_Running: Sí
Slave_SQL_Running: Sí
Si Slave_IO_Running Si es No, puede considerar ejecutar la siguiente declaración y modificarla de acuerdo con la situación real.
Estación esclava;
Cambiar maestro a master_log_file = 'MySQL-bin 000001', master_log_pos =ubicación real;
Inicio del esclavo;
En este momento Slave_IO_Running debe restaurarse a Sí, ¡se ha realizado la sincronización!
Si Slave_IO_Running sigue siendo No, puedes considerar reiniciar mysql.
============================================ === ================================================= === =====
A continuación, copie los datos del host.
Este proceso es más complicado :) Presta atención a la máquina en cada paso.
esclavo: MySQL gt; Detener esclavo; # Detener el esclavo de replicación primero.
master: MySQL gt; actualiza la tabla con bloqueo de lectura; #Bloquea todas las tablas del servidor maestro y prohíbe la escritura.
master: MySQL gt; muestra el estado del host; #o la declaración anterior, verifique el archivo de registro MySQL-bin.000002, ubicación 1087.
- - - -
|Archivo|Ubicación| Binlog _ Hacer _ DB | Binlog _ Ignorar _ DB |
- - - -
|MySQL-bin 000001 | 1087 |Investigación|Prueba|
- - - -
0 filas en 65438 colección (0,00 segundos)
chluo @ master:~ $ MySQL dump-u root-pxl Study gt; Study.sql #Exportar datos de base de datos en la línea de comando, la siguiente es la operación bash :)
master: MySQL gt; table; # Desbloqueado una vez completada la exportación. El dueño puede seguir corriendo.
chluo@master:~ $ scp estudio .sql root @ 192.168 130:/# Enviar el SQL exportado al servidor esclavo.
chluo @ esclavo:/$ MySQL-u root-pxl estudio lt; Study.sql #Importar datos de base de datos en la línea de comando esclavo, aquí está la operación bash :)
esclavo : MySQL gt;Iniciar esclavo;
La replicación de datos solo significa que la estructura de la base de datos que se sincronizará en los servidores maestro y esclavo debe ser la misma.