Soluciona problemas de errores de migración
Es posible que el proceso de trabajo de migración genere errores durante el tiempo de ejecución.
- Algunos errores, como una contraseña incorrecta en la base de datos de origen, se pueden recuperar, lo que significa que se pueden corregir y que el trabajo de migración se reanuda automáticamente.
- Algunos son irrecuperables, como los errores en la replicación de datos, lo que significa que el trabajo de migración debe reiniciarse desde el principio.
Cuando se produce un error, el estado del trabajo de migración cambia a Failed
y el estado secundario refleja el último estado antes de la falla.
Para solucionar un error, navega al trabajo de migración que falló para verlo y sigue los pasos que se indican en el mensaje de error.
Para ver más detalles sobre el error, navega a Cloud Monitoring con el vínculo del trabajo de migración. Los registros se filtran según la tarea de migración específica.
En la siguiente tabla, encontrarás algunos ejemplos de problemas y cómo resolverlos:
Síntoma | Causas posibles | Solución |
---|---|---|
No se pudo establecer una conexión con la instancia de la base de datos de origen. | Se produjo un problema de conectividad entre la instancia de base de datos de origen y la de destino. | Sigue los pasos que se indican en Cómo depurar la conectividad. |
Falla en la ejecución del trabajo de migración debido a versiones incompatibles de las bases de datos de origen y destino. | Las versiones de la base de datos de origen y destino no son una combinación compatible. Específicamente, la versión de la base de datos de origen proporcionada no es compatible con la versión de la base de datos de destino. | Asegúrate de que la versión de la base de datos de destino sea la misma o una versión principal superior a la versión de la base de datos de origen. Luego, crea un nuevo trabajo de migración. |
Los lenguajes de definición de datos (DDL) o de manipulación de datos (DML) están bloqueados en la fuente. | Se bloquean los DDL que requieren el bloqueo ACCESS EXCLUSIVE y se ejecutan durante la fase de volcado completo. |
Durante el proceso de sincronización inicial (volcado completo), se deben evitar los DDL o los programas que requieran bloqueos Por ejemplo, si una tabla aún está en el proceso de sincronización inicial y se ejecuta un comando |
Mensaje de error: No pglogical extension installed on databases (X)
|
Una o más bases de datos de origen no tienen instalado pglogical . |
Sigue estos lineamientos para instalar pglogical en las bases de datos de la instancia de origen. |
Mensaje de error: Replication user 'x' doesn't have sufficient privileges.
|
El usuario que usa Database Migration Service no tiene los privilegios necesarios para realizar la operación designada. | Sigue estos lineamientos para asegurarte de que este usuario tenga los privilegios necesarios. |
Mensaje de error: Unable to connect to source database server.
|
Database Migration Service no puede establecer una conexión con el servidor de la base de datos de origen. | Asegúrate de que las instancias de base de datos de origen y destino puedan comunicarse entre sí y de que hayas completado todos los requisitos previos necesarios que aparecieron cuando definiste la configuración del trabajo de migración. |
Mensaje de error: The source database 'wal_level' configuration must be equal to 'logical'.
|
El wal_level de la base de datos de origen se establece en un valor distinto de logical . |
Establece wal_level en “logical ”. |
Mensaje de error: The source database 'max_replication_slots' configuration is not sufficient.
|
El parámetro max_replication_slots no se configuró correctamente. |
Sigue estos lineamientos para configurar este parámetro correctamente. |
Mensaje de error: The source database 'max_wal_senders' configuration is not sufficient.
|
El parámetro max_wal_senders no se configuró correctamente. |
Sigue estos lineamientos para configurar este parámetro correctamente. |
Mensaje de error: The source database 'max_worker_processes' configuration is not sufficient.
|
El parámetro max_worker_processes no se configuró correctamente. |
Sigue estos lineamientos para configurar este parámetro correctamente. |
Mensaje de error: O
Mensaje de error: |
No se puede limpiar la configuración necesaria para la replicación durante la promoción de un trabajo de migración. | Para cada base de datos, ejecuta los comandos como un usuario con el privilegio Para obtener más información sobre qué comandos ejecutar, consulta Cómo limpiar los espacios de replicación. |
Mensaje de error: |
Es posible que el certificado de la AC de origen proporcionado a Database Migration Service solo contenga el certificado raíz. Sin embargo, el certificado de origen requiere el certificado raíz y cualquier certificado intermedio. Por ejemplo, en el caso de Amazon Relational Database Service, usar el certificado rds-ca-2019-root.pem puede generar este problema. |
Crea un certificado de AC de origen combinado que contenga el certificado raíz y todos los certificados intermedios necesarios. Para el caso de uso del Servicio de Base de datos Relacionales de Amazon, en lugar del certificado rds-ca-2019-root.pem, usa el certificado rds-combined-ca-bundle.pem. |
Mensaje de error: |
El valor establecido para el parámetro max_locks_per_transaction no es suficiente. |
Establece el valor de este parámetro en, al menos, {max_number_of_tables_per_database }/(max_connections + max_prepared_transactions ). |
Mensaje de error: |
El paquete pglogical no está instalado correctamente en la instancia de origen. | Para obtener más información sobre cómo instalar este paquete correctamente, consulta Instala el paquete pglogical en la instancia de origen. |
Mensaje de error: |
La fuente que se configuró está en modo de recuperación. | Configura una fuente que no esté en modo de recuperación. |
El volcado completo es lento. | Es posible que el destino de AlloyDB sea lento para importar datos grandes de la base de datos de origen. |
|
Mensaje de error: subscriber {subscriber_name} initialization failed during nonrecoverable step (d), please try the setup again |
El trabajo de migración falló durante la fase de volcado completo y no se puede recuperar. La instancia de la base de datos de origen se reinició o está en modo de recuperación, o bien las conexiones de replicación finalizaron debido a que se estableció un valor insuficiente para el parámetro Para encontrar la causa raíz del problema, haz lo siguiente:
|
|
Mensaje de error: ERROR: unknown column name {column_name} |
Se agregó una columna a una tabla replicada en el nodo principal, pero no en el nodo de réplica. |
Solo los cambios en el lenguaje de manipulación de datos (DML) se actualizan automáticamente durante las migraciones continuas. La administración de los cambios en el lenguaje de definición de datos (DDL) para que las bases de datos de origen y de destino sigan siendo compatibles es responsabilidad del usuario y se puede lograr de dos maneras:
Consulta Migración continua para ver los ejemplos de uso de |
Mensaje de error: ERROR: cannot truncate a table referenced in a foreign key constraint |
El usuario intentó truncar una tabla que tiene una restricción de clave externa. |
Primero, quita la restricción de clave externa y, luego, trunca la tabla. |
Mensaje de error: ERROR: connection to other side has died |
La conexión de replicación finalizó debido a que se estableció un valor insuficiente para |
Considera aumentar el valor del parámetro |
Limpia las ranuras de replicación
Verás uno de los siguientes mensajes:
Cleanup may have failed on source due to error: generic::unknown: failed to connect to on-premises database.
Error promoting EM replica: finished drop replication with errors.
Causas posibles
Cuando se promociona una instancia de AlloyDB, si no se puede acceder a la instancia de origen desde la instancia de AlloyDB (por ejemplo, la instancia de origen no se está ejecutando o se quitó la instancia de AlloyDB de la lista de entidades permitidas de instancias de origen), no se puede limpiar la configuración necesaria para la replicación durante la promoción de un trabajo de migración. Debes limpiar los espacios de replicación de forma manual.
Solución
Para cada base de datos, ejecuta los siguientes comandos como un usuario con el privilegio superuser
:
Obtén los nombres de las ranuras de replicación del mensaje de error y, luego, ejecuta el siguiente comando para descartar las ranuras, una por una:
select pg_drop_replication_slot({slot_name});
-
Si los nombres de los intervalos de replicación no están disponibles en el mensaje de error, ejecuta el siguiente comando para consultar los intervalos de replicación existentes:
select pg_drop_replication_slot(slot_name) from pg_replication_slots where slot_name like '%alloydb%' and active = 'f';
-
Si no hay réplicas de AlloyDB que usen la instancia de origen, ejecuta el siguiente comando para limpiar la configuración de
pglogical
:select pglogical.drop_node(node_name) from pglogical.node where node_name like
'alloydb';
-
Si ya no necesitas la extensión
pglogical
, ejecuta el siguiente comando para desinstalarla:DROP EXTENSION IF EXISTS pglogical;
Borra los clústeres de AlloyDB huérfanos en el modo de inicio
En casos excepcionales, es posible que tu trabajo de migración se haya borrado, pero que el clúster de AlloyDB asociado no lo haya hecho y siga en el modo de inicio. Es posible borrar el clúster con el comando gcloud de AlloyDB para borrar un clúster, combinado con la opción --force
.
Ten en cuenta que borrar un clúster de inicio mientras lo usa un trabajo de migración genera un comportamiento no definido.
Administrar usuarios y roles
Cómo migrar usuarios existentes
Actualmente, Database Migration Service no admite la migración de usuarios existentes de una instancia de origen a una instancia de destino de AlloyDB. Para administrar esta migración, crea los usuarios en AlloyDB de forma manual.
Acerca del usuario alloydbexternalsync
Durante la migración, el usuario alloydbexternalsync
es propietario de todos los objetos en el elemento principal de AlloyDB. Después de migrar los datos, puedes modificar la propiedad de los objetos para otros usuarios. Para ello, completa los siguientes pasos:
- Ejecuta el comando
GRANT alloydbexternalsync to {USER}
. - En cada base de datos, ejecuta el comando
reassign owned by alloydbexternalsync to {USER};
. - Para quitar al usuario
alloydbexternalsync
, ejecuta el comandodrop role alloydbexternalsync
.