Solución de problemas de replicación de entrada

Solución de errores de replicación de entrada

Aísle errores de replicación de entrada mediante la recuperación de información relacionada con la replicación de entrada.

Con MySQL Shell

Utilice el shell MySQL o un programa de cliente MySQL para recuperar información relacionada con la replicación de entrada.

Para esta tarea, se necesita lo siguiente:
  • Sistema de base de datos de réplica en ejecución.
  • Shell MySQL o un programa de cliente MySQL conectado al sistema de base de datos de réplica.
Ejecute uno o más de los siguientes comandos en el sistema de base de datos de réplica para recuperar información relacionada con la replicación de entrada:
  • SHOW REPLICA STATUS \G

    Muestra información de estado sobre los parámetros esenciales de los threads de réplica. Consulte SHOW REPLICA STATUS.

  • SELECT * FROM performance_schema.replication_connection_status \G

    Muestra el estado actual del thread de E/S que maneja la conexión de la réplica al origen. Consulte replication_connection_status.

  • SELECT * FROM performance_schema.replication_applier_status_by_worker \G

    Muestra detalles de las transacciones gestionadas por threads de aplicador en una réplica. Consulte replication_applier_status_by_worker.

Códigos de error de receptor de replicación de entrada

En esta tabla, se muestran algunos de los códigos de error comunes del receptor de replicación de entrada.

Tabla 22-4 Códigos de error de receptor de replicación de entrada

Código de Error Descripción
MY-1045: ER_ACCESS_DENIED_ERROR; Access denied for user '%s'@'%s'
  • El nombre de usuario o la contraseña no son correctos. Compruebe las credenciales.
  • El usuario no dispone de permiso para acceder al origen. Compruebe el origen y asegúrese de que el usuario de replicación esté configurado correctamente.
MY-1227 (42000): Access denied; you need (at least one of) the SUPER or SET_USER_ID privilege(s) for this operation Puede realizar una de las siguientes acciones:
  • Especifique el mismo nombre de usuario en DEFINER y Nombre de aplicación. Necesita el privilegio SET_USER_ID solo cuando los nombres de usuario de DEFINER y Nombre de usuario de aplicación son diferentes. Consulte Creación de un canal de replicación.
  • Póngase en contacto con los Servicios de Soporte Oracle para otorgar el privilegio SET_USER_ID al nombre de usuario de aplicación.
MY-1236: ER_MASTER_FATAL_ERROR_READING_BINLOG Got fatal error %d from master when reading data from binary log: '%s' Consulte Resolución del error fatal 1236.
MY-2003: Network connection has been refused El nombre de host y el puerto son incorrectos o el origen no se está ejecutando. Compruebe el nombre de host y el puerto que ha definido y confirme que el origen se está ejecutando.
MY-3159: ER_SECURE_TRANSPORT_REQUIRED Connections using insecure transport are prohibited while --require_secure_transport=ON El origen necesita una conexión segura. Confirme que ha seleccionado una de las opciones de SSL al definir el canal.
Para obtener la lista completa de mensajes de error MySQL, consulte Referencia de mensajes de error del servidor.

Códigos de error de aplicador de replicación de entrada

En esta tabla, se muestran algunos de los códigos de error comunes del aplicador de replicación de entrada.

Tabla 22-5 Códigos de error de aplicador de replicación de entrada

Código de Error Descripción
  • MY-1146: ER_NO_SUCH_TABLE;
  • MY-1032: HA_ERR_KEY_NOT_FOUND
  • MY-1062: HA_ERR_FOUND_DUPP_KEY
  • MY-1064: ERROR IN SQL syntax
  • MY-1050: ER_TABLE_EXISTS_ERROR
  • MY-1051: ER_BAD_TABLE_ERROR
  • MY-1146: ER_NO_SUCH_TABLE
  • MY-1007: ER_DB_CREATE_EXISTS
  • MY-1054: ER_BAD_FIELD_ERROR

Estos errores se producen si los datos de la réplica ya no están sincronizados con el origen. Esto puede ocurrir si los datos de la réplica se han editado manualmente, por ejemplo.

Para corregir estos errores, debe volver a sincronizar el origen y la réplica y reanudar el canal de replicación.

MY-1205: ER_LOCK_WAIT_TIMEOUT Se ha excedido el timeout. Para corregir este error, reanude el canal de replicación. Consulte Reanudación de un canal
MY-1595/ MY-013121: RELAY LOG READ FAILURE El log de relé está dañado y no se puede leer. Para corregir este error, restablezca el canal de replicación. Consulte Restablecimiento de un canal.
Para obtener la lista completa de mensajes de error MySQL, consulte Referencia de mensajes de error del servidor.

Resolución del error fatal 1236

Aparece el error cuando el juego de GTID del volcado lógico no se aplica al sistema de base de datos o los logs binarios se han depurado del origen. Los logs binarios son un requisito obligatorio para la replicación.

Con MySQL Shell

Utilice el shell MySQL para resolver Fatal Error 1236 que aparece al ejecutar la replicación de entrada.

En esta tarea, se asume lo siguiente:
  • Aparece Fatal Error 1236 al ejecutar la replicación de entrada:
    Got fatal error 1236 from master when reading data from binary log: 'The slave is connecting
          using CHANGE MASTER TO MASTER_AUTO_POSITION = 1, but the master has purged binary logs
          containing GTIDs that the slave requires.

En el establecimiento de comunicación de la conexión inicial, la réplica (sistema de base de datos) envía un juego de GTID que contiene las transacciones que ya ha recibido, confirmado o ambos casos. El origen responde enviando todas las transacciones registradas en su log binario cuyo GTID no esté incluido en el juego de GTID enviado por la réplica. Este intercambio garantiza que el origen solo envíe las transacciones con un GTID que la réplica no haya registrado ni confirmado.

Realice lo siguiente para resolver el problema:

Resolución de problemas de sincronización de réplica y origen

Los problemas de sincronización se producen cuando la réplica está muy por detrás del origen y la replicación no se puede recuperar.

Nota

Antes de intentar recuperarse de este error, se recomienda que investigue por qué se ha producido el error y tome acciones correctivas.

Con MySQL Shell

Utilice el shell MySQL para resolver los problemas de sincronización de origen y réplica.

En esta tarea, se asume lo siguiente:
  • El origen y la réplica de la replicación de entrada ya no están sincronizados, la réplica ha caído mucho más allá del origen y la replicación no se puede recuperar.
Nota

Si los valores de gtid del origen se restablecen a un valor inferior al de la réplica, si se ha emitido un reset master erróneo en el origen, por ejemplo, la replicación de entrada no se puede recuperar. En ese caso, vuelva a crear la configuración del sistema de base de datos y la replicación de entrada.
Realice lo siguiente para volver a sincronizar la réplica con el origen:
  1. Pare el canal de replicación existente y detenga todas las transacciones del origen.
  2. Exporte los datos de origen a Object Storage. Consulte Exportación de una instancia MySQL.
  3. Elimine los objetos de base de datos más antiguos y las bases de datos preexistentes en la réplica.
  4. Importe el volcado de Object Storage al sistema de base de datos. Consulte Importación mediante el shell MySQL.
  5. Recupere el valor gtidExecuted de la réplica.
  6. Recupere el valor gtidExecuted del archivo @.json del volcado de origen.
  7. Compare el valor gtidExecuted de la réplica con el valor gtidExecuted del volcado de origen para obtener el delta gtidExecuted.
    Por ejemplo, si el gtidExecuted del volcado de origen es serverUUID: 1-2000 y el gtidExecuted de la réplica es serverUUID:1-1000, el valor delta es 1001-2000.
  8. Conéctese a la réplica desde la línea de comandos y aplique el delta a la réplica mediante el procedimiento almacenado CALL sys.SET_GTID_PURGED("+<ServerUUID>:<DeltaValue>).
    Por ejemplo, con el valor delta que se muestra en el ejemplo anterior:
    call sys.SET_GTID_PURGED("+<ServerUUID>:1001-2000")
  9. Una vez finalizado el proceso, reanude el canal de replicación.