Crea un trabajo de migración para una instancia de destino existente

Cuando migras a una instancia de destino existente, en las migraciones estándar, Database Migration Service desciende de nivel la instancia de destino para configurarla como una réplica externa. Descender de nivel una instancia no coloca Cloud SQL para PostgreSQL en modo de solo lectura, pero ejecutar ciertas operaciones durante el proceso de migración puede generar errores de migración. A medida que migras a una instancia de destino existente, ten en cuenta las siguientes consideraciones operativas:

  • Descenso de nivel de la instancia: En las migraciones estándar, Database Migration Service desciende de nivel la instancia de destino para configurarla como una réplica de la base de datos de origen. Las migraciones de inicio rápido no requieren ni realizan el descenso de nivel de la instancia de destino.
  • Evita las operaciones de escritura en los datos que se migran: No realices operaciones de escritura (como INSERT, UPDATE, DELETE o cambios en el esquema DDL) en la instancia de destino en las tablas o bases de datos incluidas en la migración. Estas operaciones pueden generar conflictos de replicación con los datos que provienen de la fuente.
  • Administra usuarios de la base de datos: Puedes crear y administrar usuarios de la base de datos en cualquier momento con comandos estándar de psql o a través de Cloud SQL en la consola de Google Cloud . Para obtener más información, consulta Administra usuarios en la documentación de Cloud SQL.
  • Copias de seguridad y réplicas de lectura: Las copias de seguridad automáticas y la recuperación de un momento determinado (PITR) se suspenden durante la replicación continua, y no puedes crear réplicas de lectura de Cloud SQL desde la instancia de destino hasta que se ascienda el trabajo de migración.

Para obtener más información, consulta Limitaciones conocidas para las instancias existentes.

Database Migration Service usa trabajos de migración para migrar datos de tu instancia de base de datos de origen a la instancia de base de datos de destino. La creación de un trabajo de migración para una instancia de destino existente incluye lo siguiente:

  • Define la configuración del trabajo de migración
  • Define la configuración de origen y selecciona las bases de datos que se migrarán
  • Selecciona la instancia de base de datos de destino existente
  • Descender de nivel la instancia existente para configurarla como una réplica de la base de datos de origen (solo migraciones estándar)
  • Configurar la conectividad entre las instancias de base de datos de origen y de destino
  • Probar el trabajo de migración para asegurarte de que la información de conexión que proporcionaste para el trabajo sea válida

Antes de comenzar

Antes de crear un trabajo de migración a una instancia de base de datos de destino existente, asegúrate de lo siguiente:

  1. Verifica que este tipo de migración pueda admitir tu situación. Por ejemplo, cuando deseas migrar a una base de datos creada fuera de Database Migration Service, la instancia de destino de Cloud SQL debe estar vacía o contener solo datos de configuración del sistema. Para obtener más detalles, consulta Limitaciones conocidas.
  2. Crea la instancia de base de datos de destino. Consulta Crea una instancia en la documentación de Cloud SQL.

  3. Prepara tu instancia de base de datos de origen. Consulta las siguientes páginas:
    1. Configura la base de datos de origen
    2. Crea el perfil de conexión de origen
    3. Configura la conectividad

Para crear un trabajo de migración a una instancia de destino existente, haz lo siguiente:

Console

Define la configuración del trabajo de migración

  1. En la consola de Google Cloud , ve a la página Trabajos de migración.

    Ir a Trabajos de migración

  2. Haz clic en Crear trabajos de migración.

    Se abrirá la página del asistente de configuración del trabajo de migración. Este asistente contiene varios paneles que te guían por cada paso de la configuración.

    Puedes pausar la creación de un trabajo de migración en cualquier momento haciendo clic en GUARDAR Y SALIR. Todos los datos que ingreses hasta ese punto se guardarán en un trabajo de migración de borrador. Puedes terminar el borrador del trabajo de migración más tarde.

  3. En la página Comenzar, ingresa la siguiente información:
    1. Nombre del trabajo de migración

      Este es un nombre legible por humanos para tu trabajo de migración. Este valor se muestra en la consola de Google Cloud .

    2. ID del trabajo de migración

      Este es un identificador legible por máquinas para tu trabajo de migración. Usa este valor para trabajar con trabajos de migración con los comandos de Google Cloud CLI o la API de Database Migration Service.

    3. En la lista Motor de base de datos de origen, selecciona PostgreSQL.

      El campo Motor de base de datos de destino se completa automáticamente y no se puede cambiar.

    4. Selecciona la región en la que guardas el trabajo de migración.

      Database Migration Service es un producto completamente regional, lo que significa que todas las entidades relacionadas con tu migración (perfiles de conexión de origen y destino, trabajos de migración y bases de datos de destino) deben guardarse en una sola región. Selecciona la región según la ubicación de los servicios que necesitan tus datos, como instancias de Compute Engine o apps de App Engine, entre otros. Después de elegir la región de destino, no se puede cambiar esta selección.

    5. Especifica el tipo de trabajo de migración: Único (solo instantánea) o Continuo (instantánea y cambios en curso).
  4. Haz clic en Guardar y continuar.

Especifica la información sobre el perfil de conexión de origen

En la página Define una fuente, realiza los siguientes pasos:

  1. En el menú desplegable Perfil de conexión de origen, selecciona el perfil de conexión para tu base de datos de origen.
  2. En la sección Personalizar la configuración del volcado de datos, haz clic en Mostrar la configuración del volcado de datos.

    La velocidad del paralelismo de volcado de datos se relaciona con la cantidad de carga que se genera en la base de datos de origen:

    • Óptimo (recomendado): Rendimiento equilibrado con una carga óptima en la base de datos de origen.
    • Máximo: Proporciona las velocidades de volcado más altas, pero puede aumentar la carga en la base de datos de origen.
    • Mínimo: Toma la menor cantidad de recursos de procesamiento en la base de datos de origen, pero puede tener una capacidad de procesamiento de volcado más lenta.

    Si eliges la configuración de paralelismo de volcado de datos ajustada, asegúrate de aumentar los parámetros max_replication_slots, max_wal_senders y max_worker_processes en tu base de datos de origen.

  3. Haz clic en Guardar y continuar.

Selecciona la instancia de Cloud SQL de destino

  1. En el menú Tipo de instancia de destino, selecciona Instancia existente.
  2. En la sección Selecciona la instancia de destino, elige la instancia de destino.
  3. Revisa la información en la sección Detalles de la instancia y haz clic en Seleccionar y continuar.

    Para migrar a una base de datos de destino existente en migraciones estándar, Database Migration Service desciende de nivel la instancia de destino y la configura como una réplica. Para indicar que el descenso de nivel se puede realizar de forma segura, ingresa el identificador de la instancia de destino en la ventana de confirmación.

  4. Haz clic en Confirmar y continuar.

Configurar la conectividad entre las instancias de base de datos de origen y de destino

En el menú desplegable Método de conectividad, selecciona un método de conectividad de red. Este método define cómo se conectará la instancia de Cloud SQL de destino a la base de datos de origen. Los métodos de conectividad de red actuales incluyen lista de IPs permitidas, túnel SSH inverso, interfaces de Private Service Connect y el intercambio de tráfico entre VPC.

Si quieres usar…Luego, haz lo siguiente:
El método de conectividad de red de lista de IPs permitidas Debes especificar la dirección IP de salida de tu instancia de destino. Si la instancia de Cloud SQL que creaste es una instancia de alta disponibilidad, incluye las direcciones IP salientes para la instancia principal y la secundaria.
El método de conectividad de red de túnel SSH inverso Debes seleccionar la instancia de VM de Compute Engine que alojará el túnel.

Después de especificar la instancia, Google proporcionará una secuencia de comandos que realiza los pasos para configurar el túnel entre las bases de datos de origen y de destino. Deberás ejecutar la secuencia de comandos en Google Cloud CLI.

Ejecuta los comandos desde una máquina que tenga conectividad con la base de datos de origen y con Google Cloud.

El método de conectividad de interfaces de Private Service Connect Database Migration Service establece automáticamente las conexiones necesarias. Este método de conectividad solo está disponible si tienes una instancia de destino habilitada para Private Service Connect con un adjunto de red. Para obtener más información sobre las interfaces de Private Service Connect, consulta Conexiones salientes de Private Service Connect en la documentación de Cloud SQL.
El método de conectividad de red de intercambio de tráfico de VPC, Debes seleccionar la red de VPC en la que reside la base de datos de origen. La instancia de Cloud SQL se actualizará para conectarse a esta red.

Después de seleccionar y configurar la conectividad de red, haz clic en Configurar y continuar.

Configura las bases de datos de migración

Puedes migrar todas las bases de datos de tu instancia de origen o elegir solo bases de datos específicas. La instancia de destino no puede contener ninguna base de datos que comparta el nombre con las bases de datos que elijas para la migración. Si Database Migration Service encuentra una colisión de nombres de bases de datos, la base de datos que genera el conflicto se descarta en el destino antes de la migración.

  1. En la lista Bases de datos para migrar, selecciona una de las siguientes opciones:
    • Todas las bases de datos: Selecciona todas las bases de datos que existen en la fuente.
    • Bases de datos específicas: Te permite seleccionar bases de datos específicas de todas las bases de datos que existen en la fuente.
  2. Si quieres migrar bases de datos específicas, puedes filtrar la lista que aparece y seleccionar las bases de datos que quieres que Database Migration Service migre a tu destino.

    Si la lista no aparece y se muestra un error de descubrimiento de la base de datos, haz clic en Volver a cargar. Si falla el descubrimiento de bases de datos, el trabajo migra todas las bases de datos. Puedes continuar con la creación de un trabajo de migración y corregir los errores de conectividad más adelante.

  3. Haz clic en Guardar y continuar.

Prueba, crea y ejecuta el trabajo de migración

En este paso final, revisa el resumen de la configuración del trabajo de migración, el origen, el destino y el método de conectividad y, luego, prueba la validez de la configuración del trabajo de migración. Si se produce algún problema, puedes modificar la configuración del trabajo de migración. No todos los parámetros de configuración se pueden editar.

  1. En la página Prueba y crea el trabajo de migración, haz clic en Probar trabajo.

    Si la prueba falla, puedes abordar el problema en la parte adecuada del flujo y volver a realizar la prueba. Para obtener información sobre cómo solucionar problemas de una prueba de trabajo de migración con errores, consulta Diagnostica problemas de PostgreSQL.

  2. Cuando finalice la prueba del trabajo de migración, haz clic en Crear y comenzar trabajo para crear el trabajo de migración y comenzarlo de inmediato, o haz clic en Crear trabajo para crear el trabajo de migración sin iniciarlo de inmediato.

    Si el trabajo no se inicia en el momento en que se crea, se puede iniciar desde la página Trabajos de migración haciendo clic en INICIAR. Independientemente de cuándo comience el trabajo de migración, se le cobrará a tu organización por la existencia de la instancia de destino.

    La migración está en curso. Cuando inicias el trabajo de migración, Database Migration Service comienza el volcado completo y la replicación iniciales. Para obtener más información, consulta Limitaciones conocidas.

  3. Continúa con Revisa el trabajo de migración.

Google Cloud CLI

Cuando migras a una instancia existente con Google Cloud CLI, debes crear de forma manual el perfil de conexión para la instancia de destino. Esto no es necesario cuando usas la consola de Google Cloud , ya que Database Migration Service se encarga de crear y quitar el perfil de conexión de destino por ti.

  1. Crea el perfil de conexión de destino.
    Crea el perfil de conexión de destino para tu instancia de destino existente ejecutando el comando gcloud database-migration connection-profiles create (haz clic en el vínculo para expandir):

    gcloud database-migration connection-profiles create postgresql

    En este ejemplo, se usa la marca opcional --no-async para que todas las operaciones se realicen de forma síncrona. Esto significa que algunos comandos pueden tardar un poco en completarse. Puedes omitir la marca --no-async para ejecutar comandos de forma asíncrona. Si lo haces, debes usar el comando gcloud database-migration operations describe para verificar si la operación se realizó correctamente.

    Antes de usar cualquiera de los datos de comando a continuación, haz los siguientes reemplazos:

    • DEST_CONN_ID por el identificador del perfil de conexión de destino.
    • REGION por la región en la que deseas guardar el perfil de conexión. Esta región debe ser la misma que la de tu instancia de destino.
    • DEST_INSTANCE por el ID de la instancia de destino de Cloud SQL creada previamente.
    • DEST_USER por el nombre de usuario del usuario de migración en tu base de datos de destino.
    • DEST_PASSWORD por la contraseña del usuario de migración en la base de datos de destino.

    Ejecuta el siguiente comando:

    Linux, macOS o Cloud Shell

    gcloud database-migration connection-profiles create postgresql DEST_CONN_ID \
      --region=REGION \
      --cloudsql-instance=DEST_INSTANCE \
      --username=DEST_USER \
      --password=DEST_PASSWORD \
      --role=DESTINATION \
      --no-async

    Windows (PowerShell)

    gcloud database-migration connection-profiles create postgresql DEST_CONN_ID `
      --region=REGION `
      --cloudsql-instance=DEST_INSTANCE `
      --username=DEST_USER `
      --password=DEST_PASSWORD `
      --role=DESTINATION `
      --no-async

    Windows (cmd.exe)

    gcloud database-migration connection-profiles create postgresql DEST_CONN_ID ^
      --region=REGION ^
      --cloudsql-instance=DEST_INSTANCE ^
      --username=DEST_USER ^
      --password=DEST_PASSWORD ^
      --role=DESTINATION ^
      --no-async

    Deberías recibir una respuesta similar a la que figura a continuación:

    Waiting for connection profile [CONNECTION_PROFILE_ID]
    to be created with [OPERATION_ID]
    
    Waiting for operation [OPERATION_ID] to complete...done.
    
    Created connection profile CONNECTION_PROFILE_ID [OPERATION_ID]
    
  2. Crea el trabajo de migración.
    En los siguientes ejemplos, se representa una situación de migración en la que usas la conectividad de IP privada entre las bases de datos de origen y de destino. Si usas un tipo de conectividad diferente (por ejemplo, intercambio de tráfico entre VPC o un túnel SSH inverso), asegúrate de agregar las marcas requeridas, como --peer-vpc, o --vm, --vm-ip, --vm-port, --vpc. Para obtener más información, consulta Configura la conectividad y Ejemplos de Google Cloud CLI.
    Ejecuta el siguiente comando (haz clic en el vínculo para expandir):

    gcloud database-migration migration-jobs create

    En este ejemplo, se usa la marca opcional --no-async para que todas las operaciones se realicen de forma síncrona. Esto significa que algunos comandos pueden tardar un poco en completarse. Puedes omitir la marca --no-async para ejecutar comandos de forma asíncrona. Si lo haces, debes usar el comando gcloud database-migration operations describe para verificar si la operación se realizó correctamente.

    Antes de usar cualquiera de los datos de comando a continuación, haz los siguientes reemplazos:

    • MIGRATION_JOB_ID por un identificador legible por máquinas para tu trabajo de migración. Usa este valor para trabajar con trabajos de migración con los comandos de Google Cloud CLI o la API de Database Migration Service.
    • REGION por el identificador de la región en la que deseas guardar el trabajo de migración.
    • MIGRATION_JOB_NAME por un nombre legible por humanos para tu trabajo de migración. Este valor se muestra en Database Migration Service en la consola de Google Cloud .
    • SOURCE_CONNECTION_PROFILE_ID por un identificador legible por máquinas del perfil de conexión de origen. Para obtener más información, consulta Crea un perfil de conexión de origen.
    • DESTINATION_CONNECTION_PROFILE_ID por un identificador legible por máquina del perfil de conexión de destino.
    • Opcional: Database Migration Service migra todas las bases de datos de tu fuente de forma predeterminada. Si solo quieres migrar bases de datos específicas, usa la marca --databases-filter y especifica sus identificadores como una lista separada por comas.

      Por ejemplo: --databases-filter=my-business-database,my-other-database.

      Más adelante, puedes editar los trabajos de migración que creaste con la marca --databases-filter con el comando gcloud database-migration migration-jobs update.

    Ejecuta el siguiente comando:

    Linux, macOS o Cloud Shell

    gcloud database-migration migration-jobs \
    create MIGRATION_JOB_ID \
      --no-async \
      --region=REGION \
      --display-name=MIGRATION_JOB_NAME \
      --source=SOURCE_CONNECTION_PROFILE_ID \
      --destination=DESTINATION_CONNECTION_PROFILE_ID \
      --type=CONTINUOUS

    Windows (PowerShell)

    gcloud database-migration migration-jobs `
    create MIGRATION_JOB_ID `
      --no-async `
      --region=REGION `
      --display-name=MIGRATION_JOB_NAME `
      --source=SOURCE_CONNECTION_PROFILE_ID `
      --destination=DESTINATION_CONNECTION_PROFILE_ID `
      --type=CONTINUOUS

    Windows (cmd.exe)

    gcloud database-migration migration-jobs ^
    create MIGRATION_JOB_ID ^
      --no-async ^
      --region=REGION ^
      --display-name=MIGRATION_JOB_NAME ^
      --source=SOURCE_CONNECTION_PROFILE_ID ^
      --destination=DESTINATION_CONNECTION_PROFILE_ID ^
      --type=CONTINUOUS

    Deberías recibir una respuesta similar a la que figura a continuación:

    Waiting for migration job [MIGRATION_JOB_ID]
    to be created with [OPERATION_ID]
    
    Waiting for operation [OPERATION_ID] to complete...done.
    
    Created migration job MIGRATION_JOB_ID [OPERATION_ID]
    
  3. Descender de nivel la base de datos de destino.
    En el caso de las migraciones estándar, Database Migration Service requiere que desciendas de nivel la instancia de base de datos de destino existente para configurarla como una réplica externa antes de iniciar el trabajo de migración. Ejecuta el comando gcloud database-migration migration-jobs demote-destination (haz clic en el vínculo para expandirlo):

    gcloud database-migration migration-jobs demote-destination

    Antes de usar cualquiera de los datos de comando a continuación, haz los siguientes reemplazos:

    • MIGRATION_JOB_ID por el identificador de tu trabajo de migración.

      Si no conoces el identificador, puedes usar el comando gcloud database-migration migration-jobs list para enumerar todos los trabajos de migración en una región determinada y ver sus identificadores.

    • REGION por el identificador de la región en la que se guarda tu perfil de conexión.

    Ejecuta el siguiente comando:

    Linux, macOS o Cloud Shell

    gcloud database-migration migration-jobs \
    demote-destination MIGRATION_JOB_ID \
      --region=REGION

    Windows (PowerShell)

    gcloud database-migration migration-jobs `
    demote-destination MIGRATION_JOB_ID `
      --region=REGION

    Windows (cmd.exe)

    gcloud database-migration migration-jobs ^
    demote-destination MIGRATION_JOB_ID ^
      --region=REGION

    Resultado

    La acción se realiza de forma asíncrona. Por lo tanto, este comando devuelve una entidad Operation que representa una operación de larga duración:

    done: false
    metadata:
      '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata
      apiVersion: v1
      createTime: '2024-02-20T12:20:24.493106418Z'
      requestedCancellation: false
      target: MIGRATION_JOB_ID
      verb: demote-destination
    name: OPERATION_ID
    

    Para ver si la operación se realizó correctamente, puedes consultar el objeto de operación que se muestra o verificar el estado del trabajo de migración:

  4. Opcional: Verifica el trabajo de migración.
    En este punto, tu trabajo de migración está configurado y conectado a tu instancia de base de datos de destino. Puedes administrarlo con las operaciones verify, start, stop, restart y resume. Te recomendamos que primero verifiques tu trabajo de migración ejecutando el comando gcloud database-migration migration-jobs verify (haz clic en el vínculo para expandir):

    gcloud database-migration migration-jobs verify

    Antes de usar cualquiera de los datos de comando a continuación, haz los siguientes reemplazos:

    • MIGRATION_JOB_ID por el identificador de tu trabajo de migración.

      Si no conoces el identificador, puedes usar el comando gcloud database-migration migration-jobs list para enumerar todos los trabajos de migración en una región determinada y ver sus identificadores.

    • REGION por el identificador de la región en la que se guarda tu perfil de conexión.

    Ejecuta el siguiente comando:

    Linux, macOS o Cloud Shell

    gcloud database-migration migration-jobs \
    verify MIGRATION_JOB_ID \
      --region=REGION

    Windows (PowerShell)

    gcloud database-migration migration-jobs `
    verify MIGRATION_JOB_ID `
      --region=REGION

    Windows (cmd.exe)

    gcloud database-migration migration-jobs ^
    verify MIGRATION_JOB_ID ^
      --region=REGION

    Resultado

    La acción se realiza de forma asíncrona. Por lo tanto, este comando devuelve una entidad Operation que representa una operación de larga duración:

    done: false
    metadata:
      '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata
      apiVersion: v1
      createTime: '2024-02-20T12:20:24.493106418Z'
      requestedCancellation: false
      target: MIGRATION_JOB_ID
      verb: verify
    name: OPERATION_ID
    

    Para ver si la operación se realizó correctamente, puedes consultar el objeto de operación que se muestra o verificar el estado del trabajo de migración:

  5. Inicia el trabajo de migración.
    Inicia el trabajo de migración ejecutando el comando gcloud database-migration migration-jobs start (haz clic en el vínculo para expandir):

    gcloud database-migration migration-jobs start

    Antes de usar cualquiera de los datos de comando a continuación, haz los siguientes reemplazos:

    • MIGRATION_JOB_ID por el identificador de tu trabajo de migración.

      Si no conoces el identificador, puedes usar el comando gcloud database-migration migration-jobs list para enumerar todos los trabajos de migración en una región determinada y ver sus identificadores.

    • REGION por el identificador de la región en la que se guarda tu perfil de conexión.

    Ejecuta el siguiente comando:

    Linux, macOS o Cloud Shell

    gcloud database-migration migration-jobs \
    start MIGRATION_JOB_ID \
      --region=REGION

    Windows (PowerShell)

    gcloud database-migration migration-jobs `
    start MIGRATION_JOB_ID `
      --region=REGION

    Windows (cmd.exe)

    gcloud database-migration migration-jobs ^
    start MIGRATION_JOB_ID ^
      --region=REGION

    Resultado

    La acción se realiza de forma asíncrona. Por lo tanto, este comando devuelve una entidad Operation que representa una operación de larga duración:

    done: false
    metadata:
      '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata
      apiVersion: v1
      createTime: '2024-02-20T12:20:24.493106418Z'
      requestedCancellation: false
      target: MIGRATION_JOB_ID
      verb: start
    name: OPERATION_ID
    

    Para ver si la operación se realizó correctamente, puedes consultar el objeto de operación que se muestra o verificar el estado del trabajo de migración:

  6. Ascender el trabajo de migración
    Una vez que la migración llegue a la fase de captura de datos modificados (CDC), puedes ascender la instancia de la base de datos de destino de una réplica a una instancia independiente. Ejecuta el comando gcloud database-migration migration-jobs promote (haz clic en el vínculo para expandirlo):

    gcloud database-migration migration-jobs promote

    Antes de usar cualquiera de los datos de comando a continuación, haz los siguientes reemplazos:

    • MIGRATION_JOB_ID por el identificador de tu trabajo de migración.

      Si no conoces el identificador, puedes usar el comando gcloud database-migration migration-jobs list para enumerar todos los trabajos de migración en una región determinada y ver sus identificadores.

    • REGION por el identificador de la región en la que se guarda tu perfil de conexión.

    Ejecuta el siguiente comando:

    Linux, macOS o Cloud Shell

    gcloud database-migration migration-jobs \
    promote MIGRATION_JOB_ID \
      --region=REGION

    Windows (PowerShell)

    gcloud database-migration migration-jobs `
    promote MIGRATION_JOB_ID `
      --region=REGION

    Windows (cmd.exe)

    gcloud database-migration migration-jobs ^
    promote MIGRATION_JOB_ID ^
      --region=REGION

    Resultado

    La acción se realiza de forma asíncrona. Por lo tanto, este comando devuelve una entidad Operation que representa una operación de larga duración:

    done: false
    metadata:
      '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata
      apiVersion: v1
      createTime: '2024-02-20T12:20:24.493106418Z'
      requestedCancellation: false
      target: MIGRATION_JOB_ID
      verb: start
    name: OPERATION_ID
    

    Para ver si la operación se realizó correctamente, puedes consultar el objeto de operación que se muestra o verificar el estado del trabajo de migración: