Replicación maestro-esclavo de MySQL (8) -configuración de replicación semisincrónica
La replicación asincrónica de MySQL puede proporcionar el mejor rendimiento. La base de datos maestra envía el registro binlog a la base de datos esclava. Esta acción finalizó y no verifica si la base de datos esclava lo ha recibido. También significa que cuando falla el servidor principal o el servidor esclavo, es posible que el servidor esclavo no reciba el registro binlog enviado por el servidor maestro, lo que hará que los datos del servidor maestro y el servidor esclavo sean inconsistentes, e incluso provocará que los datos durante la recuperación. La pérdida.
El modo de replicación semisincrónica se introdujo desde MySQL 5.5. Este modo puede garantizar que el servidor esclavo reciba el archivo de registro binlog enviado por el servidor maestro y lo escriba en su propio registro de retransmisión, y luego envíe una retroalimentación al servidor maestro, indicándole al servidor maestro que la recepción está completa, y luego el hilo del servicio principal Regrese a la sesión actual para informar que la operación se completó.
El proceso de configuración de la replicación semisincrónica es el siguiente:
1. Entorno operativo
Sistema operativo: CentOS Linux versión 7.8.2003 (Core)
Versión de MySQL: MySQL5.7
IP del servidor primario: 192.168.1.11
IP del servidor esclavo: 192.168.1.12
En segundo lugar, la configuración del servidor principal
1. Instale el complemento semisincrónico
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
Query OK, 0 rows affected (0.04 sec)
2. Modifique el archivo de configuración
log-bin = mysql-master-binlog
log-slave-updates = 1
binlog_format = row
server-id = 1
server_id_bits = 33
rpl_semi_sync_master_enabled = 1 # 表示在master上开启半同步复制模式
rpl_semi_sync_master_timeout = 1000 # 表示主库在某次事务中的等待时间为10000毫秒
3. Ver información de configuración semisincrónica
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%semi%';
+----------------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+----------------------+---------------+
| rpl_semi_sync_master | ACTIVE |
+----------------------+---------------+
1 row in set (0.00 sec)
4. Crea una cuenta de copia
mysql> grant replication slave on *.* to 'repl'@'192.168.1.%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
En tercer lugar, la configuración del servidor esclavo.
1. Instale el complemento semisincrónico
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
Query OK, 0 rows affected (0.03 sec)
2. Modifique el archivo de configuración
log-bin = mysql-master-binlog
log-slave-updates = 1
binlog_format = row
server-id = 2
server_id_bits = 32
rpl_semi_sync_slave_enabled = 1
3. Ver información de configuración semisincrónica
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%semi%';
+---------------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+---------------------+---------------+
| rpl_semi_sync_slave | ACTIVE |
+---------------------+---------------+
1 row in set (0.03 sec)
4. Establecer opciones de copia
change master to
master_host='192.168.1.11',
master_user='repl',
master_password='123456',
MASTER_PORT=3306,
MASTER_AUTO_POSITION = 1;
5. Inicie el esclavo y verifique el estado de la biblioteca esclava
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.11
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-master-binlog.000002
Read_Master_Log_Pos: 154
Relay_Log_File: mysql-relay-log.000003
Relay_Log_Pos: 387
Relay_Master_Log_File: mysql-master-binlog.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes