¡La replicación maestro-esclavo de Mysql (replicación MySQL) será práctica de un vistazo!

Prefacio

La replicación maestro-esclavo de MySQL puede replicar datos desde un servidor de base de datos MySQL (servidor maestro) a uno o más servidores de base de datos MySQL (servidores esclavos).

Las ventajas de la replicación de MySQL incluyen:

  • Solución de escalamiento horizontal: distribuya la carga entre varias copias para mejorar el rendimiento. En este entorno, todas las escrituras y actualizaciones deben realizarse en el servidor de origen de la replicación (servidor primario). Sin embargo, la lectura puede ocurrir en una o más réplicas (servidores esclavos). Este modelo puede mejorar el rendimiento de escritura (porque la fuente está dedicada a las actualizaciones), mientras que puede aumentar significativamente las velocidades de lectura en más y más réplicas.
  • Seguridad de los datos: debido a que los datos se han copiado en la copia y la copia puede suspender el proceso de copia, los servicios de respaldo se pueden ejecutar en la copia sin destruir los datos de origen correspondientes.
  • Análisis: se pueden crear datos en tiempo real en la fuente y el análisis de la información se puede realizar en la copia sin afectar el rendimiento de la fuente.
  • Distribución remota de datos: puede usar la replicación para crear copias locales de datos para que las utilicen sitios remotos sin tener que acceder permanentemente a la fuente.

Combate real

A continuación, usaré dos máquinas virtuales para implementar la replicación maestro-esclavo de MySQL

主虚拟机:192.168.91.128

从虚拟机:192.168.91.130

Requisito previo: Ambas máquinas virtuales tienen MySQL instalado, mi versión de MySQL es 5.7.24 y se puede hacer ping a las redes de las dos máquinas virtuales.

Configuración del servidor principal

1. Modifique el archivo de configuración de MySQL en el servidor primario, abra el archivo de registro binario y configure el ID del servidor

Edite el archivo de configuración de MySQL. El archivo de configuración predeterminado de MySQL de Linux es my.cnf, que generalmente se encuentra en / etc /

vi  /etc/my.cnf 

Agregue contenido de la siguiente manera:

#在配置文件的[mysqld]部分添加以下两个配置
[mysqld]
#设置server-id,这个server-id主从服务器必须不一样
server-id=1
#开启二进制日志,mysql-bin为日志名称,你可以自定义名称
log-bin=mysql-bin

Nota: si no sabe dónde está el archivo my.cnf, puede usar el comando find / -name my.cnf para buscar

Además de las dos configuraciones necesarias anteriores, también podemos establecer sync_binlog, innodb_flush_log_trx_commit y otras configuraciones de acuerdo con nuestra situación real

Debe reiniciar el servidor después de modificar la configuración


2. Agregue una cuenta para la sincronización en el servidor principal.

El comando es el siguiente:

mysql> grant replication slave on *.* to 'slave'@'%' identified by 'slave';

Descripción del comando

replication slave:表示分配的权限,replication slave为复制的权限

*.*:表示可以操作哪些数据库,*.*表示所有数据库的所有表

slave@'%':slave表示这个账号的名称,'%'为在哪些网络可以使用,'%'为可以在所有网络上使用,除了使用'%',我们还可以指定某个ip,比如192.168.91.128

identified by后填的是密码

3. Verifique el último archivo de registro binario y el punto de posición del servidor maestro, regístrelo y utilícelo en el servidor esclavo

mando

mysql> show master status;

Ejemplos:


mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000008 |      438 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.03 sec)

La replicación maestro-esclavo solo replicará las modificaciones después de la configuración maestro-esclavo, por lo que si hay datos en la base de datos maestra antes, también necesitamos copiar los datos a la base de datos esclava. La forma más fácil es usar mysqldump para crear un volcado de todas las bases de datos a replicar.

Para el uso de mysqldump, puede consultar:
https://blog.csdn.net/qq_36551991/article/details/111409411 .


Configurar desde el servidor

1. Modifique el archivo de configuración de MySQL en el servidor esclavo y configure el ID del servidor El registro binario se puede abrir o no en el servidor esclavo.

mando:

vi  /etc/my.cnf 

contenido:

[mysqld]
#配置server-id,server-id必须与主服务器和其他从服务器的不一样,即需要唯一
server-id=2

Además del ID del servidor, que debe configurarse, la otra configuración depende de la situación real

2. Configurar la replicación maestro-esclavo

El comando es el siguiente

mysql> CHANGE MASTER TO
    -> MASTER_HOST='192.168.91.128',
    -> MASTER_USER='slave',
    -> MASTER_PASSWORD='slave',
    -> MASTER_LOG_FILE='mysql-bin.000008',
    -> MASTER_LOG_POS=438;

Descripción del comando:

MASTER_HOST : 设置要连接的主服务器的ip地址
MASTER_USER : 设置要连接的主服务器的用户名
MASTER_PASSWORD : 设置要连接的主服务器的密码
MASTER_LOG_FILE : 设置要连接的主服务器的bin日志的日志名称,即我们在主服务器show master status命令得到的file参数
MASTER_LOG_POS : 设置要连接的主服务器的bin日志的记录位置,即我们在主服务器show master status命令得到的Position 参数

3. Una vez completada la configuración, inicie la replicación maestro-esclavo:

mando:

start slave;

Ejemplo:

mysql> start slave;

4. Compruebe si la configuración es correcta

命令:show slave status\G

Ejemplos:

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.91.128
                  Master_User: slave
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000008
          Read_Master_Log_Pos: 438
               Relay_Log_File: local-relay-bin.000002
                Relay_Log_Pos: 320
        Relay_Master_Log_File: mysql-bin.000008
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

Depende principalmente de si los estados Slave_IO_Running y Slave_SQL_Running de la información devuelta son Sí, y si ambos son Sí, es normal (Slave_IO_Running y Slave_SQL_Running representan los dos subprocesos de replicación de MySQL)

Probar la replicación maestro-esclavo

Creamos una nueva tabla en MySQL del servidor maestro e insertamos datos para ver si el servidor esclavo se replicará

#在主数据库创建个新表,并插入一条数据
mysql> CREATE TABLE test_table( id INT NOT NULL AUTO_INCREMENT, name varchar(50), PRIMARY KEY(id));
Query OK, 0 rows affected (0.23 sec)
mysql> insert into test_table(name) values('h');
Query OK, 1 row affected (0.15 sec)

Ver el servidor esclavo en Navicat, si la nueva tabla y los datos correspondientes aparecen en el servidor esclavo, la replicación maestro-esclavo es exitosa

Supongo que te gusta

Origin blog.csdn.net/qq_36551991/article/details/111462625
Recomendado
Clasificación