En esta página se enumeran los errores conocidos y los pasos recomendados para solucionar problemas relacionados con lo siguiente:
Errores de tareas de migración
El proceso de la tarea de migración puede generar errores durante el tiempo de ejecución.
- Algunos errores, como una contraseña incorrecta en la base de datos de origen, se pueden recuperar. La tarea de migración se reanudará automáticamente cuando se hayan corregido estos errores.
- Algunos errores son irrecuperables, como los errores en la replicación de datos. Debes reiniciar la tarea de migración después de corregir estos errores.
Cuando se produce un error, el estado del trabajo de migración cambia a Failed
y el subestado refleja el último estado antes del fallo.
Para solucionar un error, vaya al trabajo de migración fallido para ver el error y siga los pasos que se indican en el mensaje de error.
Para ver más detalles sobre el error, vaya a Cloud Monitoring mediante el enlace del trabajo de migración. Los registros se filtran para mostrar solo los de la tarea de migración específica.
En la siguiente tabla, puedes ver algunos ejemplos de problemas y cómo se pueden resolver:
Síntoma | Posibles motivos | Cosas que puedes probar |
---|---|---|
Mensaje de error: Database Migration Service can't set up a tunnel to be
connected to the bastion host .
|
El servicio de migración de bases de datos no ha podido acceder al host bastion o este no acepta conexiones. | Verifica la configuración del túnel directo SSH en el perfil de conexión de origen y en la configuración del servidor del túnel SSH y vuelve a intentarlo. |
Mensaje de error: Database Migration Service can't connect to the database
o
Database Migration Service private connectivity error, cannot connect to the database .
|
Database Migration Service no ha podido establecer la conectividad con la base de datos de Oracle de origen. |
Comprueba que puedes acceder a la base de datos de origen desde tu proyecto. Comprueba los ajustes relacionados con el método de configuración de la conectividad de la fuente. Si se incluye un código de error de Oracle específico, por ejemplo, |
Mensaje de error: Archiving mode is not ARCHIVELOG . |
La base de datos de origen no se está ejecutando en el modo ARCHIVELOG . |
Configure la base de datos de origen para que use el modo ARCHIVELOG .
Para obtener más información, consulta el artículo sobre cómo
configurar una base de datos de Oracle de origen.
|
Mensaje de error: Supplemental logging ("ALL COLUMN LOGGING") isn't turned
on for the tables listed below .
|
La base de datos de origen no tiene habilitados los datos de registro complementarios. | Habilita los datos de registros complementarios y define su modo como ALL .
Para obtener más información, consulta el artículo sobre cómo
configurar una base de datos de Oracle de origen.
|
Mensaje de error: No Archive Log Files were found in the source . |
Database Migration Service solo lee los registros de archivo cerrados y no se ha encontrado ningún registro en la base de datos de origen. |
Si la base de datos no tiene ninguna operación de escritura activa, es posible que tengas que realizar al menos una operación |
Mensaje de error: We're missing the necessary permissions to read
from the source .
|
La cuenta de usuario de migración de tu base de datos de origen no tiene los permisos necesarios. |
Database Migration Service se conecta a tu origen con la cuenta de usuario que configures en el perfil de conexión de origen. Esa cuenta necesita un conjunto específico de permisos (por ejemplo, Asegúrate de que la cuenta de usuario de migración tenga los privilegios necesarios. Para obtener más información, consulta el artículo sobre cómo configurar una base de datos de Oracle de origen. |
Mensaje de error: Unable to connect to the destination database . |
Se ha producido un problema al conectar con la base de datos de destino. | Comprueba que puedes acceder a la base de datos de destino desde tu proyecto. Comprueba los ajustes relacionados con el método de configuración de la conectividad de destino. |
Mensaje de error: The following tables don't exist in the destination database: {table_names} . |
Las tablas que estás intentando migrar no existen en la base de datos de destino. | Database Migration Service crea la tabla y las definiciones necesarias cuando conviertes el esquema de origen. |
Mensaje de error: password authentication failed for user {username} . |
El nombre de usuario o la contraseña de la base de datos de destino están mal configurados. | Asegúrate de que el perfil de conexión de PostgreSQL de destino esté configurado correctamente con el nombre de usuario y la contraseña adecuados. |
Mensaje de error: The following tables in the destination database
don't have primary keys: {table_names} .
|
Las tablas que se indican en el mensaje de error existen en la base de datos de destino, pero no tienen claves principales. |
Los espacios de trabajo de conversión de Database Migration Service añaden automáticamente claves principales a las tablas que no las tienen cuando conviertes el esquema. Si usas espacios de trabajo de conversiones antiguos, debes crear las claves principales manualmente en el destino. Para obtener más información, consulta Espacios de trabajo de conversión antiguos. |
Advertencia: The following tables have foreign keys: {table_names} . |
Las tablas que se indican en el mensaje de error existen en la base de datos de destino, pero tienen claves externas. |
Database Migration Service no replica los datos de forma transaccional, por lo que es posible que las tablas se migren en un orden incorrecto. Si hay claves externas y se migra una tabla secundaria que usa una clave externa antes que su tabla superior, es posible que se produzcan errores de replicación. Para evitar estos problemas de integridad de los datos, omite las claves externas usando la opción |
Mensaje de error: Unable to resume replication as log position is lost . |
Este error puede producirse cuando el proceso de replicación se pausa durante mucho tiempo, lo que provoca la pérdida de la posición del registro. | Una tarea de migración no debe pausarse durante un periodo superior (o cercano) al de retención de registros. Si se pierde la posición del registro, debes volver a crear la tarea de migración. |
Mensaje de error: ORA-00942: table or view does not exist . |
Este error puede producirse como resultado del almacenamiento en caché en el servidor de Oracle. | Vuelve a crear el usuario de la base de datos para solucionar el problema de almacenamiento en caché. |
La tarea de migración permanece en la fase de volcado completo y no pasa a la fase de captura de datos de cambios (CDC). | Database Migration Service sigue realizando un volcado completo de algunas de las tablas, o no se puede completar el volcado completo de una o varias tablas debido a errores. |
|
Problemas de conectividad
En esta sección se enumeran y describen los pasos para solucionar posibles problemas de conectividad de red.
No se puede conectar a la base de datos de destino: EOF
Al ejecutar una prueba de conectividad, se devuelve el mensaje de error [DATABASE] unable to connect to the destination database: EOF
.
Causa posible: el adjunto de servicio no está configurado correctamente.
Prueba lo siguiente: asegúrate de que enable_proxy_protocol
tenga el valor
false
en el
archivo de configuración de Terraform del adjunto de servicio.
El protocolo proxy solo se admite en servidores HTTP, como NGINX y Apache.
Cuando se usa gcloud
para crear la configuración de Private Service Connect, el protocolo proxy está inhabilitado de forma predeterminada.
Tiempo de espera de conexión agotado o conexión rechazada
La prueba de conectividad falla o se agota el tiempo de espera. Lo más probable es que se deba a una configuración incorrecta del enrutamiento en la configuración de Private Service Connect. Este problema puede deberse a varios motivos.
Causa posible: falta una regla de cortafuegos que permita que el intervalo CIDR de NAT de Private Service Connect acceda a la subred de Private Service Connect en la que se encuentra la bastion, concretamente a la interfaz nic0
de la VM bastion.
Qué puedes probar: asegúrate de que tu política de organización no restrinja las reglas de cortafuegos internas, como la regla de cortafuegos psc_sp_in_fw
definida en el ejemplo de secuencia de comandos de Terraform para
configurar la conectividad de IP privada de destino en instancias de Cloud SQL que no tienen habilitado PSC.
Causa posible: el proxy no funciona. No hay ningún receptor en el puerto proporcionado, por lo que la conexión se queda colgada.
Prueba lo siguiente: puedes intentar establecer una conexión SSH con la VM bastion y buscar el proxy con el siguiente comando:
netstat -tunalp | grep PORT
Analiza las respuestas al comando:
Si obtienes una respuesta vacía, significa que el proxy no funciona. Prueba a ejecutar los siguientes comandos:
sudo su; cd /
y comprueba si el servidor Dante está instalado ejecutandosudo dpkg -s dante-server
:Si el proxy está instalado, verás el siguiente mensaje:
Status: install ok installed
Si el proxy no está instalado, es probable que falte un router. Añade un router y comprueba si puedes descargar el proxy ejecutando
apt-get install dante-server
.
Si el proxy se está ejecutando y está escuchando en el puerto proporcionado, prueba a abrir una conexión con él haciendo lo siguiente:
Instala el cliente de PostgreSQL:
sudo apt-get install postgresql-client
.Conéctate a la base de datos PostgreSQL:
psql -h 127.0.0.1 -p PORT -U DBUSERNAME -W
(se te pedirá que introduzcas la contraseña).Haz los cambios siguientes:
PORT
: número de puerto de la base de datos.DBUSERNAME
: nombre de usuario usado para conectarse a la base de datos PostgreSQL.
Instala el cliente de telnet:
sudo apt-get install telnet
Conéctate al cliente Telnet:
telnet 127.0.0.1 PORT
Sustituye
PORT
por el número de puerto de la base de datos.
En función de los resultados de los comandos:
Si los comandos no abren una conexión, consulta los registros del proxy para identificar la causa principal. La causa principal puede variar en función de la configuración de la instancia de Cloud SQL.
Si la conexión se abre mediante telnet, pero se bloquea en el cliente, es probable que el problema sea el enrutamiento de la dirección IP de la bastion. En tu máquina virtual, escribe
ip route
en el terminal. Comprueba si puedes encontrar una regla de enrutamiento que dirija las conexiones a la dirección IP privada de la instancia de Cloud SQL mediante lanic
secundaria (nic1
, la dirección IPDB_SUBNETWORK_GATEWAY
).
Causa posible: el adjunto de servicio no acepta la conexión de endpoint procedente del servicio de migración de bases de datos. El archivo adjunto de servicio contiene una lista de proyectos aceptados, y el proyecto de Database Migration Service no está incluido en la lista.
Qué puedes probar: para solucionar el problema, prueba una de las siguientes opciones:
En la Google Cloud consola, ve a Private Service Connect.
En la pestaña Servicios publicados, acepta la conexión de Database Migration Service para tu adjunto de servicio (si está pendiente).
Añade el proyecto solicitante a los proyectos incluidos en la lista de permitidos del adjunto de servicio (si se rechaza).
Para obtener más información sobre cómo añadir un proyecto a la lista de permitidos en Terraform, consulta la documentación de Terraform.
Para obtener más información sobre cómo añadir un proyecto a la lista de permitidos en
gcloud
, consulta la documentación de referencia de Google Cloud CLI.
Si esto no soluciona el problema, vuelve a crear el perfil de conexión.
Elimina el perfil de conexión asociado a la conectividad de Private Service Connect y vuelve a crearlo.
Solucionar errores de SCAN de Oracle
En esta sección se describen los posibles problemas que puedes tener al migrar desde fuentes de Oracle Real Application Clusters (RAC) mediante la función Single Client Access Name (SCAN).
No se puede establecer la conectividad con una base de datos SCAN de Oracle
La prueba de conectividad falla o se agota el tiempo de espera.
Posible causa: es posible que estés intentando establecer una conexión directamente con tu base de datos de origen de Oracle SCAN. Database Migration Service no admite la conectividad directa a bases de datos mediante la función SCAN en entornos de Oracle RAC.
Qué puedes probar: para solucionar el problema, prueba una de las siguientes opciones:
Conéctate directamente a uno de los nodos.
Usa el Connection Manager de Oracle.
Crea una configuración de conectividad privada con una solución de proxy inverso, como HAProxy.