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 PostgreSQL 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 PostgreSQL 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
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud SQL Admin API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud SQL Admin API.
-
Asegúrate de tener las funciones de administrador de Cloud SQL, administrador de almacenamiento y visualizador de Compute en tu cuenta de usuario.
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
Cloud SQL admite migraciones continuas de bases de datos de origen a bases de datos de destino de Cloud SQL.
Entre las bases de datos de origen admitidas para PostgreSQL, se incluyen las siguientes:
- Autoadministrada (local o en cualquier VM en la nube que controlas por completo) PostgreSQL 9.4, 9.5, 9.6, 10, 11, 12, 13, 14, 15, and 16
- Amazon RDS 9.6.10+, 10.5+, 11.1+, 12, 13, 14, 15, and 16
- Amazon Aurora 10.11+, 11.6+, 12.4+, 13.3+, 14, 15, and 16
- Cloud SQL 9.6, 10, 11, 12, 13, 14, 15, and 16
Para configurar tu fuente, debes configurar la instancia de origen y las bases de datos de origen subyacentes.
Lista de tareas del servidor externo
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 para permitir el rango de IP interno asignado a la función privada Acceso a los servicios de la red de VPC que la réplica de Cloud SQL usa como 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 de servicio privada 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:
En la consola de Google Cloud, ve a la página Redes de VPC.
Selecciona la red de VPC que deseas usar.
Haz clic en la pestaña Conexión privada al servicio.
Configura tu instancia de origen
Para configurar tu instancia de origen, sigue estos pasos:
- Si tu instancia de origen no incluye la base de datos
postgres
, créala. - Instala el paquete pglogical en la instancia de origen
Configura los siguientes parámetros, según sea necesario.
Si la instancia de PostgreSQL de origen es Amazon RDS, incluye estos parámetros en un grupo de parámetros nuevo y adjunta el grupo de parámetros a la instancia.
Si el origen es Cloud SQL, configura las marcas
cloudsql.logical_decoding
ycloudsql.enable_pglogical
enon
.Para habilitar las marcas en Cloud SQL, consulta Configura marcas de bases de datos.
Configura
shared_preload_libraries
para que incluyapglogical
con el siguiente comando:ALTER SYSTEM SET shared_preload_libraries = 'pglogical';
Configura
wal_level
comological
con el siguiente comando:ALTER SYSTEM SET wal_level = 'logical';
Si la instancia de PostgreSQL de origen es Amazon RDS, para habilitar los registros WAL a nivel de
logical
, configura el parámetrords.logical_replication
como1
.Configura
wal_sender_timeout
como0
con el siguiente comando:ALTER SYSTEM SET wal_sender_timeout = 0;
El valor
0
inhabilita el mecanismo de tiempo de espera que se usa para finalizar las conexiones de replicación inactivas.Establece la max_replication_slots en la cantidad máxima de ranuras de replicación que puede admitir la instancia de origen. Usa el siguiente comando después de reemplazar # por el número:
ALTER SYSTEM SET max_replication_slots = #;
Cloud SQL requiere una ranura para cada base de datos que se migra. Especifica al menos la cantidad de suscripciones que se espera conectar, con algunas reservas para la sincronización de tablas.
Por ejemplo, si la instancia de origen tiene 5 bases de datos y se crean 2 trabajos de migración para la fuente, la cantidad de ranuras de replicación debe ser al menos de 5 * 2 = 10, además de la cantidad de ranuras de replicación que ya usas.
Configura max_wal_senders en, al menos, lo mismo que
max_replication_slots
, además de la cantidad de remitentes que ya se usaron en tu instancia. Usa el siguiente comando y reemplaza # por la cantidad total de procesos de remitente WAL que se ejecutan de manera simultánea:ALTER SYSTEM SET max_wal_senders = #;
Por ejemplo, si el parámetro
max_replication_slots
se establece en10
y ya usas 2 remitentes, la cantidad de procesos de remitente WAL que se ejecutan al mismo tiempo sería 10 + 2 = 12.Configura max_worker_processes como mínimo en la cantidad de bases de datos de la instancia de origen, además de la cantidad de procesos de trabajadores que ya se usan en tu instancia. Usa el siguiente comando después de reemplazar # por el número total:
ALTER SYSTEM SET max_worker_processes = #;
- Si la réplica de Cloud SQL usará una IP privada, configura el firewall del servidor externo a fin de permitir el rango de IP interna asignada para el acceso privado a servicios de la red de VPC de la réplica.
- Para aplicar los cambios de configuración, reinicia la instancia de origen.
Los parámetros que configuras en este paso se aplican a un servidor de base de datos de PostgreSQL que se ejecuta. También puedes hacer que estos cambios sean persistentes si los incluyes en el archivo postgresql.conf
.
Habilita la supervisión del retraso de replicaciones para las versiones de PostgreSQL anteriores a la 9.6
Si migras desde una versión de PostgreSQL anterior a la 9.6, la métrica de retraso de replicación no está disponible de forma predeterminada. Puedes usar una de las tres alternativas para hacer un seguimiento de esta métrica y garantizar un tiempo de inactividad mínimo cuando asciendas la base de datos:
Opción 1: Habilita el servidor externo de Cloud SQL para realizar un seguimiento del retraso de replicación mediante el acceso a una consulta específica. Realiza lo siguiente con un usuario con el privilegio
SUPERUSER
:Define la siguiente función para permitir que el servidor externo consulte la demora de replicación.
CREATE OR REPLACE FUNCTION pg_stat_replication_user() RETURNS TABLE ( pid integer , usesysid oid , username name , application_name text , client_addr inet , client_hostname text , client_port integer , backend_start timestamp with time zone , backend_xmin xid , state text , sent_location pg_lsn , write_location pg_lsn , flush_location pg_lsn , replay_location pg_lsn , sync_priority integer , sync_state text ) LANGUAGE SQL SECURITY DEFINER AS $$ SELECT * FROM pg_catalog.pg_stat_replication; $$;
Otorga el permiso
EXECUTE
al usuario mediante la ejecución de los siguientes comandos:REVOKE EXECUTE ON FUNCTION pg_stat_replication_user() FROM public;
GRANT EXECUTE ON FUNCTION pg_stat_replication_user() to {replication_user};
Opción 2: Otorga el privilegio
SUPERUSER
directamente al usuario que se usó para conectarse a la instancia de origen. Esto permite que el servidor externo lea la demora de replicación directamente.Opción 3: realiza un seguimiento del retraso de replicación de forma independiente mediante la siguiente consulta:
SELECT current_timestamp, application_name, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.sent_location) AS sent_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.write_location) AS write_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.flush_location) AS flush_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.replay_location) AS replay_location_lag FROM pg_stat_replication WHERE application_name like 'cloudsql%';
En esta opción, Cloud SQL no refleja la métrica de retraso de replicación en los grafos o las respuestas de la API.
Configura tus bases de datos de origen
El servidor externo de Cloud SQL migra todas las bases de datos en tu instancia de origen, excepto las siguientes:
- Para fuentes locales: bases de datos de plantillas
template0
ytemplate1
- Para fuentes de Amazon RDS:
template0
,template1
yrdsadmin
- Para fuentes de Cloud SQL: bases de datos de plantillas
template0
ytemplate1
Haz lo siguiente en cada base de datos de la instancia de origen que no esté incluida en la lista anterior:
Para instalar la extensión
pglogical
, ejecuta el siguiente comando en cada base de datos de la instancia de origen:CREATE EXTENSION IF NOT EXISTS pglogical
En el caso de las tablas que no tienen claves primarias, Cloud SQL admite la migración de la instantánea inicial y las declaraciones
INSERT
durante la fase de captura de datos modificados (CDC). Migra las declaracionesUPDATE
yDELETE
de forma manual.Conéctate a la instancia y ejecuta los siguientes comandos a fin de establecer privilegios para el usuario en cada una de las bases de datos migradas, así como la base de datos de
postgres
predeterminada.El usuario que usas para conectarte a la instancia de origen se configura como el usuario en la página Perfiles de conexión. Puedes crear un usuario nuevo o reutilizar uno existente.
Ejecuta el siguiente comando en todos los esquemas de cada base de datos que se migrará, excepto el esquema de información y los esquemas que comiencen con
pg_
:GRANT USAGE on SCHEMA schema to username; GRANT SELECT on ALL SEQUENCES in SCHEMA schema to username; GRANT SELECT on ALL TABLES in SCHEMA schema to username;
En cada base de datos que se migrará, ejecuta el siguiente comando:
GRANT USAGE on SCHEMA pglogical to PUBLIC;
Para obtener información de replicación de las bases de datos de origen, ejecuta el siguiente comando en todas las bases de datos:
GRANT SELECT on ALL TABLES in SCHEMA pglogical to username;
Si tu fuente es Amazon RDS, ejecuta el siguiente comando:
GRANT rds_replication to username;
De lo contrario, ejecuta el siguiente comando:
ALTER USER username with REPLICATION;
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": "POSTGRES_9_6",
"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: POSTGRES_9_6 , POSTGRES_10 ,
POSTGRES_11 , POSTGRES_12 , POSTGRES_13 , POSTGRES_14 , POSTGRES_15 , or POSTGRES_16 . |
SOURCE HOST | Es la dirección IPv4 y el puerto del servidor externo, o la dirección de DNS para el servidor externo.
Si el servidor externo se aloja en Cloud SQL, el puerto es 5432 . |
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": "POSTGRES_9_6",
"onPremisesConfiguration": {
"username": "newReplicationUser",
"password": "525#@%*@"
}
}
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: POSTGRES_9_6 , POSTGRES_10 ,
POSTGRES_11 , POSTGRES_12 , POSTGRES_13 , POSTGRES_14 , POSTGRES_15 , or POSTGRES_16 . |
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": "POSTGRES_14", "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: POSTGRES_9_6 , POSTGRES_10 ,
POSTGRES_11 , POSTGRES_12 , POSTGRES_13 , POSTGRES_14 , POSTGRES_15 , or POSTGRES_16 .
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:5432 |
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.
Console
Para obtener la dirección IP saliente de la réplica, haz lo siguiente:
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
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 PostgreSQL diferente.
- Cambia la contraseña del usuario de replicación de PostgreSQL.
- Los certificados SSL que usaste para conectarte de forma segura al servidor externo cambian.
Propaga la réplica de Cloud SQL
Para la carga inicial de datos del servidor externo a la réplica de Cloud SQL, usa una importación administrada. Usa un servicio que extrae datos del servidor externo y los importa directamente a la instancia de Cloud SQL. Si deseas obtener más información, consulta Usa una importación administrada para configurar la replicación desde bases de datos externas.
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.
Para crear una réplica en cascada, ejecuta los siguientes comandos:
Console
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Haz clic en la pestaña Réplicas de la réplica que funcionará como superior de la réplica que deseas crear.
- Haz clic en Crear réplica.
- 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.
- Haz clic en Crear.
Cloud SQL crea una réplica. Volverás a la página de la instancia de la réplica superior.
- Sigue los pasos 4 a 6 para cada réplica en cascada nueva que desees crear.
gcloud
- Para crear la réplica nueva, especifica tu réplica de Cloud SQL como la instancia principal mediante la marca
--master-instance-name
: - 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
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.
gcloud sql instances create REPLICA_NAME \ --master-instance-name=PARENT_REPLICA_NAME \
curl
- 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", } }
- 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:
- Asciende la réplica a una instancia principal.
- Agrega réplicas de lectura a tu instancia.
- 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
comoREGIONAL
.
Limitaciones
Si instalas extensiones en tus bases de datos de origen externas que Cloud SQL no admite, cuando migres las bases de datos a una instancia de destino, Cloud SQL no migrará estas extensiones. Para garantizar una migración sin problemas, verifica que ningún objeto o aplicación haga referencia a las extensiones. Antes de continuar con la migración, te recomendamos que quites las extensiones junto con las referencias de las bases de datos de origen.
Para obtener más información sobre las extensiones que admite Cloud SQL, consulta Configura extensiones de PostgreSQL.
Si instalas la extensión
pg_cron
en tus bases de datos de origen externas, cuando migres las bases de datos a una instancia de destino, Cloud SQL no migrará la extensión ni la configuración decron
asociada con ella. Después de migrar las bases de datos y ascender la réplica, Google recomienda que vuelvas a habilitar la extensiónpg_cron
en cada base de datos migrada.
¿Qué sigue?
- Obtén más información sobre cómo usar una importación administrada para configurar la replicación desde bases de datos externas.