Índice de archivo de registro bin diferente en nodos maria db galera

Índice de archivo de registro bin diferente en nodos maria db galera

Configuración:

Galera Cluster con 3 nodos ejecutándose en Docker Containers. Delante de cada nodo hay un proxy de escala máxima. De forma remota es un esclavo de replicación que se ejecuta con replicación bin-log donde el clúster actúa como maestro (detrás del proxy de escala máxima). Cada nodo del clúster tiene bin-log habilitado y log_slave_updates=ON. GTID no está configurado en el esclavo.

Problema

De alguna manera DB2 (ver más abajo) tiene otro número de archivo bin-log. .000016en lugar de .000015como los otros dos servidores. Curiosamente, tienen la misma posición, por lo que supongo que tienen el mismo contenido, ya que tienen el mismo tiempo de creación y exactamente el mismo tamaño de archivo (aunque md5sum muestra diferentes sumas de verificación).

En algún momento, el esclavo perdió la sincronización con los siguientes registros:

2022-06-08  0:27:20 9 [Note] Slave I/O thread: Failed reading log event, reconnecting to retry, log 'data-master-bin.000015' at position 3374796
2022-06-08  0:28:20 9 [ERROR] Slave I/O: error reconnecting to master '[email protected]:some_port' - retry-time: 60  maximum-retries: 86400  message: Can't connect to MySQL server on 'url.to.server' (110 "Connection timed out"), Internal MariaDB error code: 2003
2022-06-08  0:29:20 9 [Note] Slave: connected to master '[email protected]:some_port',replication resumed in log 'data-master-bin.000015' at position 3374796
2022-06-08  0:29:20 9 [ERROR] Error reading packet from server: binlog truncated in the middle of event; consider out of disk space on master; the first event 'data-master-bin.000015' at 3374796, the last event read from 'data-master-bin.000015' at 3374796, the last byte read from 'data-master-bin.000015' at 3374815. (server_errno=1236)
2022-06-08  0:29:20 9 [ERROR] Slave I/O: Got fatal error 1236 from master when reading data from binary log: 'binlog truncated in the middle of event; consider out of disk space on master; the first event 'data-master-bin.000015' at 3374796, the last event read from 'data-master-bin.000015' at 3374796, the last byte read from 'data-master-bin.000015' at 3374815.', Internal MariaDB error code: 1236
2022-06-08  0:29:20 9 [Note] Slave I/O thread exiting, read up to log 'data-master-bin.000015', position 3374796

Realmente no puedo decir si no hubo conexión en algún momento. Supongo que el proxy maxscale generalmente redirige todas las solicitudes entrantes al primer servidor, ya que no hay mucha carga en la base de datos. Sin embargo, en este momento específico la solicitud fue redirigida a db-02, lo que provocó el error ya que data-master-bin.000015 es diferente de los otros dos servidores. Pude ejecutar START SLAVEel esclavo y la replicación ahora está funcionando nuevamente, pero me temo que se romperá tan pronto como maxscale vuelva a redirigir a db-02.

Entonces mis preguntas son:

  • ¿Qué desencadena un aumento del índice del archivo bin-log?
  • ¿Cómo puedo volver a sincronizar los archivos bin-log en los 3 nodos del clúster?

Configuraciones:

db-server .cnf en cada nodo:

[mysqld]
log_bin
server_id=1
log_slave_updates=ON
log-basename=data-master
#Configure GTID
wsrep_gtid_mode=ON
wsrep_gtid_domain_id=1

proxy .cnf en cada servidor

[Read-Only-Service]
type=service
router=readconnroute
servers=db-01, db-02, db-03
user=maxscale
password=******
router_options=synced

[Replication-Listener]
type=listener
service=Read-Only-Service
protocol=MariaDBClient
port=/*some-port*/
ssl=required
ssl_cert=/path/to/server-cert.pem
ssl_key=/path/to/server-key.pem
ssl_ca_cert=/path/to/ca-cert.pem

DB1

MariaDB [(none)]> SHOW MASTER STATUS;
+------------------------+----------+--------------+------------------+
| File                   | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------------+----------+--------------+------------------+
| data-master-bin.000015 |  3534812 |              |                  |
+------------------------+----------+--------------+------------------+
1 row in set (0.000 sec)

ls -alc --fu /var/lib/mysql    
...
       413 2021-12-02 10:06:08.187023308 +0000 data-master-bin.000009
       387 2021-12-02 10:09:23.020291420 +0000 data-master-bin.000010
   8883991 2022-03-02 16:53:11.689571461 +0000 data-master-bin.000011
   1260112 2022-03-10 13:10:08.730056029 +0000 data-master-bin.000012
       466 2022-03-10 13:10:29.106313267 +0000 data-master-bin.000013
   5967037 2022-04-27 16:41:46.021414396 +0000 data-master-bin.000014
   3672324 2022-06-13 22:03:54.919102767 +0000 data-master-bin.000015
       175 2022-04-27 16:42:46.150317967 +0000 data-master-bin.index
...

DB2

MariaDB [(none)]> show master status;
+------------------------+----------+--------------+------------------+
| File                   | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------------+----------+--------------+------------------+
| data-master-bin.000016 |  3534812 |              |                  |
+------------------------+----------+--------------+------------------+
1 row in set (0.000 sec)

ls -alc --fu /var/lib/mysql    
...
       413 2022-03-10 13:10:34.036661850 +0000 data-master-bin.000014
   5966988 2022-04-27 16:44:37.871084681 +0000 data-master-bin.000015
   3672324 2022-06-13 22:03:54.935182267 +0000 data-master-bin.000016
        75 2022-04-27 16:45:21.228903025 +0000 data-master-bin.index
...

DB3

MariaDB [(none)]> SHOW Master status;
+------------------------+----------+--------------+------------------+
| File                   | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------------+----------+--------------+------------------+
| data-master-bin.000015 |  3534812 |              |                  |
+------------------------+----------+--------------+------------------+
1 row in set (0.000 sec)

ls -alc --fu /var/lib/mysql
...
       413 2022-03-10 13:10:12.637403075 +0000 data-master-bin.000013
   5966988 2022-04-27 16:46:33.269169792 +0000 data-master-bin.000014
   3672324 2022-06-13 22:03:54.929455002 +0000 data-master-bin.000015
        75 2022-04-28 00:37:55.597345308 +0000 data-master-bin.index
...

Estoy usando María DB 10.4

Respuesta1

Mitigé el problema configurando el servidor solo en db-01. Con esto, el registro del contenedor es el mismo. Estoy seguro de que debería haber una mejor manera de manejar este problema.

[Read-Only-Service]
type=service
router=readconnroute
servers=db-01
user=maxscale
password=******
router_options=synced

[Replication-Listener]
type=listener
service=Read-Only-Service
protocol=MariaDBClient
port=/*some-port*/
ssl=required
ssl_cert=/path/to/server-cert.pem
ssl_key=/path/to/server-key.pem
ssl_ca_cert=/path/to/ca-cert.pem

información relacionada