Replicação mestre-escravo MySQL (8) -configuração de replicação semissíncrona
A replicação assíncrona do MySQL pode fornecer o melhor desempenho. O banco de dados mestre envia o log binlog para o banco de dados escravo. Esta ação é encerrada e não verifica se o banco de dados escravo o recebeu. Isso também significa que quando o servidor principal ou o servidor escravo falha, é possível que o servidor escravo não receba o log binlog enviado pelo servidor mestre, o que fará com que os dados do servidor mestre e do servidor escravo sejam inconsistentes e até mesmo causará os dados durante a recuperação. A perda.
O modo de replicação semissíncrono foi introduzido desde o MySQL 5.5. Este modo pode garantir que o servidor escravo receba o arquivo de log binlog enviado pelo servidor mestre e o grave em seu próprio relay log e, em seguida, envie um feedback para o servidor mestre, informando ao servidor mestre que a recepção está completa e, em seguida, o thread de serviço principal Retorne à sessão atual para informar que a operação foi concluída.
O processo de configuração da replicação semissíncrona é o seguinte:
1. Ambiente operacional
Sistema operacional: CentOS Linux versão 7.8.2003 (Core)
Versão MySQL: MySQL5.7
IP do servidor primário: 192.168.1.11
IP do servidor escravo: 192.168.1.12
Em segundo lugar, a configuração do servidor principal
1. Instale o plugin semissíncrono
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
Query OK, 0 rows affected (0.04 sec)
2. Modifique o arquivo de configuração
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. Visualize informações de configuração semissíncrona
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. Crie uma conta de cópia
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)
Terceiro, a configuração do servidor escravo
1. Instale o plugin semissíncrono
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
Query OK, 0 rows affected (0.03 sec)
2. Modifique o arquivo de configuração
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. Visualize informações de configuração semissíncrona
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. Defina as opções de cópia
change master to
master_host='192.168.1.11',
master_user='repl',
master_password='123456',
MASTER_PORT=3306,
MASTER_AUTO_POSITION = 1;
5. Inicie o escravo e verifique o status da biblioteca escrava
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