Configurar Cloud SQL y el servidor externo para la replicación

En esta página, se describe cómo configurar tu servidor externo para la replicación a Cloud SQL, crear una instancia de representación de origen en Cloud SQL y replicar los datos en Cloud SQL. Debes seguir todos los pasos de esta página antes de continuar con los pasos de replicación.

Una alternativa a los pasos descritos en esta página es el Database Migration Service, que ofrece replicación continua o migración única de base de datos de un servidor externo a Cloud SQL.

Antes de comenzar

Terminología

  • Servidor externo. Es el servidor MySQL externo a Cloud SQL desde el que deseas replicar los datos. También se conoce como la base de datos de origen o el servidor de la base de datos externa. Puede ser otra instancia de Cloud SQL o cualquier otro servidor de bases de datos, como uno local, Amazon Relational Database Service (RDS), etcétera.

  • Instancia de representación de origen. Una simulación de una instancia de Cloud SQL que representa al servidor externo para la réplica de Cloud SQL. Es visible en la consola de Google Cloud y aparece como una instancia normal de Cloud SQL, pero no contiene datos, no requiere configuración ni mantenimiento, ni afecta la facturación.

  • Réplica de Cloud SQL. La instancia de Cloud SQL que se replica desde el servidor externo. También se conoce como la réplica de lectura principal externa.

  • Cuenta de usuario de replicación. Es la cuenta de usuario de MySQL en el servidor externo con permisos suficientes para permitir la replicación entre el servidor externo y la réplica de Cloud SQL.

  • Importación administrada. Es el proceso de importación de datos directamente desde el servidor externo a la réplica de Cloud SQL. En esta situación, Cloud SQL se conecta al servidor externo mediante la cuenta de usuario de replicación y ejecuta el volcado de datos directamente en el servidor externo para importar datos a la réplica de Cloud SQL.

Configura un proyecto de Google Cloud

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud SQL Admin API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Cloud SQL Admin API.

    Enable the API

  8. Asegúrate de tener las funciones de administrador de Cloud SQL, administrador de almacenamiento y visualizador de Compute en tu cuenta de usuario.

    Ir a la página IAM

Instala el SDK de Google Cloud

Si quieres configurar la replicación, instala el SDK de Google Cloud para tu servidor externo. Es posible que desees instalar el SDK en tu servidor externo, a menos que ya esté instalado en otro lugar.

Configura el servidor externo para la replicación

Lista de tareas del servidor externo

  • Asegúrate de tener MySQL 5.5, 5.6, 5.7 o 8.0 instalado en el servidor externo. Se admiten MySQL Community Edition, Cloud SQL para MySQL, Amazon Aurora y MySQL en Amazon RDS.

    • Debes usar una versión principal de MySQL en tu réplica de Cloud SQL que sea igual o superior a la versión de MySQL que se ejecuta en tu servidor externo.
    • Si MySQL 5.5 está instalado en el servidor externo, GTID no es compatible.
  • Asegúrate de que los registros binarios estén habilitados y de que suceda lo siguiente:

  • Observa si tu servidor externo tiene habilitado GTID. Esto afecta los pasos que debes seguir para configurar la replicación.

  • Observa si tu servidor externo tiene permisos globales de bloqueo de lectura. Esto afecta los pasos que debes seguir para configurar la replicación.

  • Si la réplica de Cloud SQL está habilitada con una dirección IP privada porque la dirección IP privada saliente no es estática, configura el firewall del servidor externo a fin de permitir el rango de IP internas asignado para la privada acceso a servicios de la red de VPC que usa la réplica de Cloud SQL como su red privada.

    El firewall del servidor de la base de datos de origen debe configurarse para permitir todo el rango de IP interna asignado a la conexión privada a servicios de la red de VPC a la que se dirige el destino de Cloud SQL. Instancia como el campo privateNetwork de su configuración de ipConfiguration.

    Para encontrar el rango de IP interna, haz lo siguiente:

    1. En la consola de Google Cloud, ve a la página Redes de VPC.

      Ir a la página Redes de VPC

    2. Selecciona la red de VPC que deseas usar.

    3. Haz clic en la pestaña Conexión privada al servicio.

  • Si el servidor externo contiene cláusulas DEFINER (vistas, eventos, activadores o procedimientos almacenados), según el orden en el que se ejecuten estas declaraciones, la replicación podría fallar. Obtén más información sobre el uso de DEFINER y las posibles soluciones alternativas en Cloud SQL.

  • InnoDB es el único motor de almacenamiento compatible con Cloud SQL. La migración con MyISAM puede causar incoherencia de datos y requiere una validación de datos. Para obtener más información, consulta la página sobre cómo convertir tablas de MyISAM en InnoDB en la documentación de MySQL.

Configura la retención de registros binarios

Debes configurar el servidor externo para que retenga registros binarios por al menos 24 horas.

Comunidad de MySQL

Si el servidor externo usa MySQL Community Edition, puedes usar estos comandos de MySQL para actualizar la configuración de retención de registros binarios.

Cloud SQL para MySQL

Si el servidor externo usa Cloud SQL para MySQL, de forma predeterminada, los registros binarios se conservan durante siete días. Para cambiar esta configuración, haz lo siguiente:

Amazon RDS y Aurora

Si el servidor de la base de datos de origen es una instancia de Amazon RDS, puedes usar este comando para actualizar la configuración de retención de registros binarios:

call mysql.rds_set_configuration('binlog retention ', HOURS);
Propiedad Descripción
HORAS La cantidad total de horas de registros binarios que se conservarán en la instancia de Amazon RDS.

Para obtener más información, consulta mysql.rds_set_configuration.

Crea una cuenta de usuario de replicación

Debe haber una cuenta de usuario MySQL dedicada a administrar la replicación en la réplica de Cloud SQL en tu servidor externo. Esta cuenta de usuario solo debe usarse para administrar la replicación. Según el enfoque de migración que uses, es posible que debas otorgar permisos al usuario más adelante.

Para agregar una cuenta de usuario de replicación, abre una terminal en el servidor externo e ingresa estos comandos de MySQL:

MySQL

      CREATE USER 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD';
      GRANT SELECT, SHOW VIEW ON *.* TO 'USERNAME'@'HOST';
      FLUSH PRIVILEGES;

Ejemplo

CREATE USER 'replicationUser'@'%' IDENTIFIED BY '8*&fwwd';
GRANT SELECT, SHOW VIEW ON *.* TO 'replicationUser'@'%';
FLUSH PRIVILEGES;
Propiedad Descripción
USERNAME La cuenta de usuario de replicación en el servidor externo.
PASSWORD Es la contraseña de la cuenta de usuario de replicación.
HOST Configúralo como % para aceptar todas las conexiones desde cualquier host. En un paso posterior, esto se cambia para aceptar solo las conexiones de la réplica de Cloud SQL.

Configura una instancia de representación de origen

La instancia de representación de origen hace referencia al servidor externo. Solo contiene los datos de solicitud del servidor externo. Crea los datos de la solicitud y úsalos en un comando de curl que cree la instancia de representación de origen en Cloud SQL.

Crea los datos de la solicitud

Los datos de la solicitud contienen información básica sobre tu servidor externo en formato JSON. Los datos de la solicitud se pueden configurar para una réplica de Cloud SQL en una red pública o privada y deben contener la siguiente información:

source.json

    {
      "name": "SOURCE_NAME",
      "region": "REGION",
      "databaseVersion": "DATABASE_VERSION",
      "onPremisesConfiguration": {
        "hostPort": "SOURCE_HOST",
        "username": "USERNAME",
        "password": "PASSWORD",
        "caCertificate": "SOURCE_CERT",
        "clientCertificate": "CLIENT_CERT",
        "clientKey": "CLIENT_KEY"
      }
    }

Ejemplo de importación administrada

// example of source.json for external server that
// - initiates replication from a Cloud SQL managed import
// - doesn't use SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "hostPort": "192.0.2.0:3306",
    "username": "replicationUser",
    "password": "486#@%*@"
  }
}

Ejemplo de archivo de volcado

// example of source.json for external server that
// - initiates replication from a file
// - uses SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "hostPort": "192.0.2.0:"3306",
    "username": "replicationUser",
    "password": "486#@%*@",
    "dumpFilePath": "gs://replica-bucket/source-database.sql.gz",
    "caCertificate": "content of your certificate",
    "clientCertificate": "content of your certificate",
    "clientKey": "content of your client key"
  }
}

Ejemplo de importación personalizada

// example of source.json for external server that
// - initiates replication from a Cloud SQL custom import
// - doesn't use SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "hostPort": "192.0.2.0:3306",
    "username": "replicationUser",
    "password": "486#@%*@"
  }
}
Propiedad Descripción
SOURCE_NAME Es el nombre de la instancia de representación de origen que se creará.
REGION Es la región en la que quieres que resida la instancia de representación de origen.
DATABASE_VERSION Es la versión de la base de datos que se ejecuta en el servidor externo. Las opciones son MYSQL_5_6, MYSQL_5_7 o MYSQL_8_0. .
SOURCE HOST Es la dirección IPv4 y el puerto del servidor externo, o la dirección de DNS para el servidor externo. Si usas una dirección de DNS, puede contener hasta 60 caracteres. Si el servidor externo se aloja en Cloud SQL, el puerto es 3306.
USERNAME La cuenta de usuario de replicación en el servidor externo.
PASSWORD Es la contraseña de la cuenta de usuario de replicación.
BUCKET Es el nombre del bucket que contiene el archivo de volcado. Solo debes incluirlo si configuras la replicación con un archivo de volcado que existe en un bucket de Cloud Storage.
DUMP_FILE Es un archivo en el bucket que contiene los datos del servidor externo.
CLIENT_CA_CERT Es el certificado de CA en el servidor externo. Solo debes incluirlo si usas SSL/TLS en el servidor externo.
CLIENT_CERT Es el certificado de cliente en el servidor externo. Solo es obligatorio para la autenticación del servidor y del cliente. Solo debes incluirlo, si usas SSL/TLS en el servidor externo.
CLIENT_KEY El archivo de claves privadas para el certificado de cliente en el servidor externo. Solo es obligatorio para la autenticación del servidor y del cliente. Solo debes incluirlo, si usas SSL/TLS en el servidor externo.

Crea una instancia de representación de origen

Antes de comenzar con este paso, crea un archivo JSON que contenga los datos de tu solicitud de origen.

Luego, para crear la instancia de representación de origen en Cloud SQL, abre una terminal y ejecuta los siguientes comandos:

curl

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data @JSON_PATH \
         -X POST \
         https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances

Ejemplo

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data @./source.json \
     -X POST \
     https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances
Propiedad Descripción
PROJECT_ID Es el ID de tu proyecto en Google Cloud.
JSON_PATH Es la ruta al archivo JSON que contiene los datos de solicitud del servidor externo.

Actualiza una instancia de representación de origen

Si actualizas los datos de la solicitud del servidor externo, puedes actualizar la instancia de representación de origen existente para que use los valores modificados.

Modifica los datos de la solicitud

Actualiza los datos de la solicitud para incluir los campos que cambiaron. Esto incluye los campos hostPort, username, password, caCertificate, clientCertificate y clientKey. Después de actualizar los datos de la solicitud, úsalos en un comando de curl para actualizar la instancia en Cloud SQL.

En el siguiente ejemplo, se muestra cómo actualizar los campos username y password con un nombre de usuario y una contraseña diferentes:

source.json

    {
      "name": "SOURCE_NAME",
      "region": "REGION",
      "databaseVersion": "DATABASE_VERSION",
      "onPremisesConfiguration": {
        "username": "NEW_USERNAME",
        "password": "NEW_PASSWORD"
      }
    }

Ejemplo de importación administrada

// example of source.json for external server that
// - initiates replication from a Cloud SQL managed import
// - doesn't use SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "username": "newReplicationUser",
    "password": "525#@%*@"
  }
}

Ejemplo de archivo de volcado

// example of source.json for external server that
// - initiates replication from a file
// - uses SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "username": "newReplicationUser",
    "password": "486#@%*@"
  }
}

Ejemplo de importación personalizada

// example of source.json for external server that
// - initiates replication from a Cloud SQL custom import
// - doesn't use SSL/TSL

{
  "name": "cloudsql-source-instance",
  "region": "us-central1",
  "databaseVersion": "MYSQL_5_7",
  "onPremisesConfiguration": {
    "username": "newReplicationUser",
    "password": "486#@%*@"
  }
}
Propiedad Descripción
SOURCE_NAME Es el nombre de la instancia de representación de origen.
REGION Es la región en la que reside la instancia de representación de origen.
DATABASE_VERSION Es la versión de la base de datos que se ejecuta en el servidor externo. Las opciones son MYSQL_5_6, MYSQL_5_7 o MYSQL_8_0. .
NEW_USERNAME La cuenta de usuario de replicación nueva en el servidor externo.
NEW_PASSWORD La contraseña de la cuenta nueva.

Modifica una instancia de representación de origen

Antes de comenzar con este paso, crea un archivo JSON que contenga los datos de tu solicitud de réplica.

Luego, para crear la instancia de representación de origen en Cloud SQL, abre una terminal y ejecuta los siguientes comandos:

curl

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data @JSON_PATH \
         -X PATCH \
         https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/SOURCE_NAME

Ejemplo

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data @./source.json \
     -X PATCH \
     https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances/cloudsql-source-instance
Propiedad Descripción
PROJECT_ID Es el ID de tu proyecto en Google Cloud.
JSON_PATH Es la ruta al archivo JSON que contiene los datos de solicitud del servidor externo.
SOURCE_NAME Es el nombre de la instancia de representación de origen.

Configura una réplica de Cloud SQL

Con el tiempo, la réplica de Cloud SQL contiene los datos del servidor externo. En este paso, debes crear los datos de la solicitud y usarlos en un comando curl que cree la réplica de Cloud SQL en Cloud SQL.

Crea los datos de la solicitud

Los datos de la solicitud contienen información básica sobre tu servidor de la base de datos de origen y la réplica de Cloud SQL en formato JSON. Los datos de la solicitud se pueden configurar para una réplica de Cloud SQL en una red pública o privada y deben contener la siguiente información:

replica.json

    {
        "settings": {
            "tier": "TIER",
            "dataDiskSizeGb": "DISK_SIZE",
            "ipConfiguration": {
                "ipv4Enabled": "PUBLIC_IP_STATUS",
                "privateNetwork": "projects/PROJECT_ID/global/networks/NETWORK_NAME"
             },
             "availabilityType": "AVAILABILITY_TYPE"
        },
        "masterInstanceName": "SOURCE_REPRESENTATION_INSTANCE_NAME",
        "region": "SOURCE_REGION",
        "databaseVersion": "DATABASE_VERSION",
        "name": "REPLICA_NAME"
    }

Ejemplo

    {
        "settings": {
            "tier": "db-custom-4-15360",
            "dataDiskSizeGb": "100"
        },
        "masterInstanceName": "source-instance",
        "region": "us-central1",
        "databaseVersion": "MYSQL_5_7",
        "name": "replica-instance"
    }
Propiedad Descripción
TIER Es el tipo de máquina para alojar tu instancia de réplica. Si no sabes qué tipo de máquina usar, comienza con db-custom-2-7680. Puedes cambiar su tamaño y otros valores admitidos más adelante si es necesario.
DISK_SIZE Es el tamaño de almacenamiento de la réplica de Cloud SQL, en GB.
PUBLIC_IP_STATUS Determina si se asigna una dirección IP pública a la instancia. De forma predeterminada, el valor de esta propiedad es true. Para desactivar la asignación de una dirección IP pública para la réplica, configura el valor como false. Si tu proyecto tiene habilitada la política de la organización constraints/sql.restrictPublicIp, entonces, para crear la réplica de Cloud SQL, debes establecer el valor de la propiedad ipv4Enabled como false. Si deseas obtener más información para desactivar la asignación de direcciones IP públicas, consulta Inhabilita la IP pública.
PROJECT_ID Si la réplica de Cloud SQL está en una red privada, incluye la propiedad privateNetwork en el archivo replica.json. Para PROJECT_ID, especifica el ID de tu proyecto en Google Cloud.
NETWORK_NAME Es el nombre de la red privada que se usará con la réplica de Cloud SQL.
AVAILABILITY_TYPE Es el tipo de disponibilidad de la réplica de Cloud SQL. De forma predeterminada, el valor es ZONAL. Para hacer que la réplica tenga alta disponibilidad, establece el valor en REGIONAL. Para obtener información sobre los valores permitidos, consulta SqlAvailabilityType.
Después de crear una réplica con alta disponibilidad del servidor externo, no puedes cambiarla a una réplica sin alta disponibilidad. Esto también se aplica a la inversa. No puedes cambiar una réplica sin alta disponibilidad del servidor externo a una réplica con alta disponibilidad.
La conmutación por error manual puede provocar una migración irrecuperable si se intenta realizar cuando la instancia aún está cargando los datos iniciales, o un tiempo de inactividad temporal si la instancia ya se está replicando desde el origen. Comprueba el estado de replicación.
SOURCE_REPRESENTATION_INSTANCE_NAME Es el nombre de la instancia de representación de origen.
SOURCE_REGION Es la región asignada a la instancia de representación de origen.
DATABASE_VERSION Es la versión de la base de datos que se usará con la réplica de Cloud SQL. Las opciones para esta versión son MYSQL_5_6, MYSQL_5_7 o MYSQL_8_0. Haz coincidir la versión de la base de datos que se ejecuta en el servidor externo o establece el valor en no más de una versión más adelante.
REPLICA_NAME Es el nombre de la réplica de Cloud SQL que se creará.

Crea la réplica de Cloud SQL

Antes de comenzar con este paso, crea un archivo JSON que contenga los datos de tu solicitud de réplica. Luego, para crear una réplica de Cloud SQL, abre una terminal de Cloud Shell y ejecuta estos comandos:

curl

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data @JSON_PATH \
         -X POST \
         https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances

Ejemplo

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data @./replica.json \
         -X POST \
         https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances
Propiedad Descripción
PROJECT_ID Es el ID del proyecto en Google Cloud, que debe ser el mismo que el de la instancia de origen.
JSON_PATH Es la ruta al archivo JSON que contiene los datos de la solicitud de réplica de Cloud SQL.

Verifica la configuración

Para asegurarte de que las instancias se configuraron de forma correcta, ve a la página Instancias de Cloud SQL.

Deberías ver tu instancia de representación de origen y la réplica de Cloud SQL en una lista similar a la siguiente:

ID de instancia Tipo IP pública
(-) source-representation-instance Instancia principal externa de la base de datos 10.68.48.3:3306
replica-instance Réplica de lectura de la base de datos 34.66.48.59

También asegúrate de tener el permiso cloudsql.instances.migrate en la réplica de Cloud SQL. Este permiso se incluye en los roles de Cloud IAM cloudsql.admin o cloudsql.editor.

Agrega usuarios a la réplica de Cloud SQL

No puedes importar cuentas de usuario de base de datos desde el servidor externo, pero puedes crearlas en una réplica de Cloud SQL. Haz esto antes de replicar desde el servidor externo.

Obtén la dirección IP saliente de la réplica de Cloud SQL

Puedes usar la dirección IP saliente de la réplica de Cloud SQL para crear una conexión segura entre el servidor externo y la réplica de Cloud SQL. No se te cobrará por esta dirección IP.

Consola

Para obtener la dirección IP saliente de la réplica, haz lo siguiente:

  1. En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Junto a la dirección IP pública de la réplica de Cloud SQL, mantén el puntero sobre la información sobre la herramienta Más información y recupera la dirección IP saliente.

    Ten en cuenta que la dirección IP saliente no es la dirección IP que se muestra en la lista principal de la réplica en la consola de Google Cloud.

gcloud

Para obtener la dirección IP saliente de la réplica, ejecuta el siguiente comando:

gcloud sql instances describe REPLICA_NAME --format="default(ipAddresses)"
Propiedad Descripción
REPLICA_NAME Es el nombre de la réplica de Cloud SQL cuya dirección IP pública saliente deseas recuperar.

Permite conexiones entrantes en el servidor externo

La réplica de Cloud SQL debe conectarse al servidor externo para que la replicación sea exitosa. Debes configurar el firewall de la red para que tu servidor externo acepte conexiones de la dirección IP saliente de la réplica de Cloud SQL si se cumplen las siguientes condiciones:

  • El servidor externo está detrás de un firewall o alguna otra restricción de red.
  • Tu réplica de Cloud SQL usa una IP pública.

Para conectarte a la réplica de Cloud SQL, usa la dirección IP principal de la réplica. Esta dirección IP se muestra en la consola de Google Cloud.

Actualiza la instancia de representación de origen para permitir la replicación en la réplica de Cloud SQL

Después de configurar la instancia de representación de origen para la réplica de Cloud SQL, es posible que debas actualizar la instancia de representación de origen. Por ejemplo, estas situaciones hacen que debas actualizar tus opciones de configuración:

  • El host, el puerto o la IP del servidor externo cambia.
  • Deseas usar un usuario de replicación de MySQL diferente.
  • Cambia la contraseña del usuario de replicación de MySQL.
  • Los certificados SSL que usaste para conectarte de forma segura al servidor externo cambian.

Propaga la réplica de Cloud SQL

Existen tres opciones para realizar la carga inicial de datos del servidor externo a la réplica de Cloud SQL:

¿Cuál es la opción adecuada para ti?

Diagrama de flujo del usuario de Cloud SQL

Supervisar replicación

Cuando la réplica de Cloud SQL finaliza la carga de datos inicial, se conecta al servidor externo y aplica todas las actualizaciones que se realizaron después de la operación de exportación. Confirma el estado de replicación.

Es importante verificar el estado de replicación antes de ascender la réplica a una instancia independiente. Si el proceso de replicación no se completa correctamente, una réplica ascendida no tiene todos los cambios de tu servidor externo.

Si el retraso de replicación no se muestra igual o cercano a 0, toma medidas para solucionarlo. Te recomendamos verificar estas métricas: /postgresql/external_sync/initial_sync_complete, postgresql/external_sync/max_replica_byte_lag y database/replication/state. Consulta la lista de métricas de Cloud SQL.

Una vez que la réplica de Cloud SQL alcance el servidor externo y no exista demora de replicación en la réplica de Cloud SQL, conéctate a la base de datos. Ejecuta los comandos de base de datos adecuados para asegurarte de que el contenido sea el esperado en comparación con el servidor externo. Conserva tu servidor externo hasta que se realicen las validaciones necesarias.

Configura una réplica en cascada

Después de la migración, puedes crear réplicas de lectura en cascada en tu réplica de Cloud SQL antes de ascender la réplica de Cloud SQL.

Puedes crear réplicas en cascada para tu instancia de Cloud SQL solo si usas la replicación GTID.

Para crear una réplica en cascada, ejecuta los siguientes comandos:

Consola

  1. En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Para MySQL 5.7 o posterior, habilita la replicación.
  3. Haz clic en la pestaña Réplicas de la réplica que funcionará como superior de la réplica que deseas crear.
  4. Haz clic en Crear réplica.
  5. En la página Crea réplicas de lectura, actualiza el ID de la instancia y cualquier otra opción de configuración, incluidos el nombre, la región y la zona.
  6. Haga clic en Crear.

    Cloud SQL crea una réplica. Volverás a la página de la instancia de la réplica superior.

  7. Sigue los pasos 4 a 6 para cada réplica en cascada nueva que desees crear.

gcloud

  1. Si usas la versión 5.7 de MySQL o una posterior, habilita los registros binarios para la instancia principal de la réplica nueva:
    gcloud sql instances patch --enable-bin-log
          --project=cascade-replica PARENT_REPLICA_NAME
    Reemplaza PARENT_REPLICA_NAME por el nombre de la réplica superior.
  2. Para crear la réplica nueva, especifica tu réplica de Cloud SQL como la instancia principal mediante la marca --master-instance-name:

    gcloud sql instances create REPLICA_NAME \
          --master-instance-name=PARENT_REPLICA_NAME \
    Reemplaza lo siguiente:
    • REPLICA_NAME: el ID único de la réplica que estás creando
    • PARENT_REPLICA_NAME por el nombre de la réplica de Cloud SQL
  3. Después de crear la réplica, puedes ver que los cambios realizados en la instancia principal se replican en todas las réplicas de la cadena de réplicas en cascada.

curl

  1. Si usas la versión 5.7 de MySQL o una superior, habilita el registro binario:

    Para habilitar el registro de objeto binario, guarda el siguiente JSON en un archivo llamado request.JSON y, luego, invoca el comando curl para habilitar el registro de objeto binario.
    {
      "settings":
      {
        "backupConfiguration":
        {
          "enabled": false,
          "binaryLogEnabled": true
        }
      }
    }

  2. Para crear una réplica en la réplica superior, edita la siguiente muestra de código JSON y guárdala en un archivo llamado request.json:

    {
      "masterInstanceName": "EXTERNAL_SERVER_REPLICA_NAME",
      "project": "PROJECT_ID",
      "name": "REPLICA_NAME",
      "region": "REPLICA_REGION",
      "settings":
        {
          "tier": "MACHINE_TYPE",
        }
    }
  3. Ejecuta el siguiente comando:
    curl -X POST
    -H "Authorization: Bearer "$(gcloud auth print-access-token)
    -H "Content-Type: application/json; charset=utf-8"
    -d @request.json
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances"

Asciende la réplica

Para ascender la réplica, sigue estos pasos:

  1. Asciende la réplica a una instancia principal. Ten en cuenta que los registros binarios y GTID están activados y las copias de seguridad programadas están habilitadas en la réplica que se asciende.
  2. Agrega réplicas de lectura a tu instancia.
  3. Opcional: Configura tu instancia para que tenga alta disponibilidad (HA). Para evitar el tiempo de inactividad adicional, puedes habilitar la alta disponibilidad mientras configuras una réplica si estableces AVAILABILITY_TYPE como REGIONAL.

¿Qué sigue?