Nesta página, descrevemos como configurar o servidor externo para replicação no Cloud SQL, criar uma instância de representação de origem no Cloud SQL e replicar os dados para o Cloud SQL. É preciso seguir todas as etapas desta página antes de seguir as etapas de replicação.
Uma alternativa às etapas descritas nesta página é o Serviço de migração de banco de dados, que oferece replicação contínua ou migração única de banco de dados de um servidor externo para o Cloud SQL.
Antes de começar
Terminologia
Servidor externo. O servidor PostgreSQL externo ao Cloud SQL de onde você quer replicar dados. Ele também é conhecido como o banco de dados de origem ou o servidor de banco de dados externo. Pode ser outra instância do Cloud SQL ou qualquer outro servidor de banco de dados, como no local, Amazon Relational Database Service (RDS) e assim por diante.
Instância de representação de origem. Uma simulação de uma instância do Cloud SQL que representa o servidor externo para a réplica do Cloud SQL. Ele fica visível no Console do Google Cloud e aparece como uma instância normal do Cloud SQL. No entanto, ele não contém dados, não precisa de configuração ou manutenção nem afeta o faturamento.
Réplica do Cloud SQL. A instância do Cloud SQL que é replicada do servidor externo. Também conhecida como réplica de leitura do mestre externo.
Replicação da conta de usuário. A conta de usuário do PostgreSQL no servidor externo com permissões suficientes para permitir a replicação entre o servidor externo e a réplica do Cloud SQL.
Importação gerenciada. O processo de importação de dados diretamente do servidor externo para a réplica do Cloud SQL. Nessa situação, o Cloud SQL se conecta ao servidor externo usando a conta de usuário de replicação e executa o despejo de dados diretamente no servidor externo para importar dados para a réplica do Cloud SQL.
Configure um projeto do 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.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Enable the Cloud SQL Admin API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Enable the Cloud SQL Admin API.
-
Verifique se você tem os papéis "Administrador" do Cloud SQL, "Administrador do Storage" e "Leitor do Compute" na conta de usuário.
Instalar o Google Cloud SDK
Para configurar a replicação, instale o SDK do Google Cloud para o servidor externo. É recomendável instalar o SDK no servidor externo, a menos que já esteja instalado em outro lugar.
Configurar o servidor externo para replicação
O Cloud SQL oferece suporte a migrações contínuas de bancos de dados de origem para bancos de dados de destino do Cloud SQL.
Os bancos de dados de origem compatíveis com o PostgreSQL incluem o seguinte:
- PostgreSQL 9.4, 9.5, 9.6, 10, 11, 12, 13, 14 e 15 autogerenciados (no local ou em qualquer VM de nuvem controlada totalmente por você)
- Amazon RDS 9.6.10+, 10.5+, 11.1+, 12, 13 e 14
- Amazon Aurora 10.11+, 11.6+, 12.4+ e 13.3+
- Cloud SQL 9.6, 10, 11, 12, 13, 14 e 15
Para configurar a origem, é preciso ajustar a instância de origem e os bancos de dados de origem básicos.
Lista de verificação do servidor externo
Se a réplica do Cloud SQL estiver ativada com um endereço IP privado porque o endereço IP particular de saída não é estático, configure o firewall do servidor externo para permitir o intervalo de IP interno alocado para o acesso de serviço particular da rede VPC que a réplica do Cloud SQL usa como rede privada.
O firewall do servidor de banco de dados de origem precisa ser configurado para permitir todo o intervalo de IPs interno alocado para a conexão de serviço particular da rede VPC que o destino do Cloud SQL usa como o campo privateNetwork de suas configurações de ipConfiguration.
Para encontrar o intervalo de IP interno:
No Console do Google Cloud, acesse a página Redes VPC.
Selecione a rede VPC que você quer usar.
Clique na guia Private Service Connect.
Configurar a instância de origem
Para configurar sua instância de origem, siga estas etapas:
- Se a instância de origem não incluir o banco de dados
postgres
, crie-o. - Instale o pacote pglogical na instância de origem.
Defina os seguintes parâmetros, conforme necessário.
Se a instância de origem do PostgreSQL for Amazon RDS, inclua esses parâmetros em um novo grupo de parâmetros e anexe o grupo à instância.
Se a origem for o Cloud SQL, defina as sinalizações
cloudsql.logical_decoding
ecloudsql.enable_pglogical
comoon
.Para ativar as sinalizações no Cloud SQL, consulte Como configurar sinalizações do banco de dados.
Defina
shared_preload_libraries
para incluirpglogical
usando o seguinte comando:ALTER SYSTEM SET shared_preload_libraries = 'pglogical';
Defina
wal_level
comological
usando o seguinte comando:ALTER SYSTEM SET wal_level = 'logical';
Se a instância de origem do PostgreSQL for Amazon RDS, defina o parâmetro
rds.logical_replication
como1
para ativar os registros WAL no nível delogical
.Defina
wal_sender_timeout
como0
usando o seguinte comando:ALTER SYSTEM SET wal_sender_timeout = 0;
O valor
0
desativa o mecanismo de tempo limite usado para encerrar conexões de replicação inativas.Defina max_replication_slots como o número máximo de slots de replicação compatíveis com a instância de origem. Use o comando a seguir, depois de substituir # pelo número:
ALTER SYSTEM SET max_replication_slots = #;
O Cloud SQL requer um slot para cada banco de dados migrado. Especifique pelo menos o número de assinaturas que precisam ser conectadas, com algumas reservas para sincronização de tabelas.
Por exemplo, se a instância de origem tiver cinco bancos de dados e dois jobs de migração forem criados para a origem, o número de slots de replicação precisará ser pelo menos 5 * 2 = 10, além do número de slots de replicação que você já usa.
Defina max_wal_senders como pelo menos
max_replication_slots
, além do número de remetentes já usados na sua instância. Use o seguinte comando, substituindo # pelo número total de processos de remetentes WAL em execução simultaneamente:ALTER SYSTEM SET max_wal_senders = #;
Por exemplo, se o parâmetro
max_replication_slots
estiver definido como10
e você já estiver usando dois remetentes, o número de processos de remetentes WAL em execução ao mesmo tempo será 10 + 2. = 12.Defina max_worker_processes como, pelo menos, o número de bancos de dados na instância de origem e o número de processos de worker já usados na instância. Use o comando a seguir, depois de substituir # pelo número total:
ALTER SYSTEM SET max_worker_processes = #;
- Se a réplica do Cloud SQL usar um IP privado, configure o firewall do servidor externo para permitir o intervalo de IP interno alocado para o acesso a serviços particulares da rede VPC da réplica.
- Para aplicar as alterações na configuração, reinicie a instância de origem.
Os parâmetros que você está definindo nesta etapa se aplicam
a um servidor de banco de dados do PostgreSQL em execução. Você também pode tornar essas
mudanças persistentes incluindo-as no arquivo postgresql.conf
.
Ativar o monitoramento de atraso de replicação para versões do PostgreSQL anteriores à 9.6
Se você estiver migrando de uma versão do PostgreSQL anterior à 9.6, a métrica de atraso da replicação não estará disponível por padrão. É possível usar uma das três alternativas para rastrear essa métrica e garantir um tempo de inatividade mínimo ao promover o banco de dados:
Opção 1: conceda ao servidor externo do Cloud SQL uma consulta específica para que ele possa rastrear o atraso de replicação. Usando um usuário com o privilégio
SUPERUSER
, execute o seguinte:Defina a função a seguir para permitir que o servidor externo consulte o atraso de replicação.
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; $$;
Conceda a permissão
EXECUTE
ao usuário executando os seguintes comandos:REVOKE EXECUTE ON FUNCTION pg_stat_replication_user() FROM public;
GRANT EXECUTE ON FUNCTION pg_stat_replication_user() to {replication_user};
Opção 2: conceda o privilégio
SUPERUSER
diretamente ao usuário usado para se conectar à instância de origem. Isso permite que o servidor externo leia o atraso de replicação diretamente.Opção 3: acompanhe o atraso da replicação de maneira independente usando a seguinte 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%';
Nesta opção, o Cloud SQL não reflete a métrica de atraso da replicação nos gráficos ou nas respostas da API.
Configurar os bancos de dados de origem
O servidor externo do Cloud SQL migra todos os bancos de dados na instância de origem diferentes do seguinte:
- Para origens locais: bancos de dados de modelos
template0
etemplate1
- Para origens de Amazon RDS:
template0
,template1
erdsadmin
- Para origens do Cloud SQL: bancos de dados de modelos
template0
etemplate1
Faça o seguinte em cada banco de dados na instância de origem que não esteja incluído na lista anterior:
Para instalar a extensão
pglogical
, execute o seguinte comando em cada banco de dados na instância de origem:CREATE EXTENSION IF NOT EXISTS pglogical
Para tabelas que não têm chaves primárias, o Cloud SQL oferece suporte à migração do snapshot inicial e das instruções
INSERT
durante a fase de captura de dados alterados (CDC). Migre as instruçõesUPDATE
eDELETE
manualmente.Conecte-se à instância e execute os comandos a seguir para definir privilégios para o usuário em cada um dos bancos de dados migrados e para o banco de dados padrão
postgres
.O usuário que você usa para se conectar à instância de origem é configurado como o usuário na página Perfis de conexão. É possível criar um novo usuário ou reutilizar um já existente.
Em todos os esquemas em cada banco de dados a ser migrado, exceto o esquema de informações e os esquemas que começam com
pg_
, execute o seguinte comando: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;
Em cada banco de dados a ser migrado, execute o seguinte comando:
GRANT USAGE on SCHEMA pglogical to PUBLIC;
Para receber informações de replicação de bancos de dados de origem, em todos os bancos de dados, execute o seguinte comando:
GRANT SELECT on ALL TABLES in SCHEMA pglogical to username;
Se sua origem for o Amazon RDS, execute o seguinte comando:
GRANT rds_replication to username;
Caso contrário, execute o seguinte comando:
ALTER USER username with REPLICATION;
Configurar uma instância de representação de origem
A instância de representação de origem faz referência ao servidor externo. Ele contém apenas os dados da solicitação do servidor externo. Crie os dados da solicitação
e use-os em um comando curl
que cria a instância de representação de origem
no Cloud SQL.
Criar os dados da solicitação
Os dados da solicitação contêm informações básicas sobre o servidor externo no formato JSON. Os dados da solicitação podem ser configurados para uma réplica do Cloud SQL em uma rede pública ou privada e precisam conter estas informações:
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" } }
exemplo de importação gerenciada
// 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#@%*@"
}
}
Propriedade | Descrição |
---|---|
SOURCE_NAME | O nome da instância de representação de origem a ser criada. |
REGION | A região onde você quer que a instância de representação de origem resida. |
DATABASE_VERSION | A versão do banco de dados em execução no seu
servidor externo. As opções são POSTGRES_9_6 , POSTGRES_10 , POSTGRES_11 , POSTGRES_12 , POSTGRES_13 , POSTGRES_14 ou POSTGRES_15 . |
SOURCE HOST | O endereço IPv4 e a porta do
servidor externo ou do
endereço DNS do servidor externo.
Se o servidor externo estiver hospedado no Cloud SQL, a porta será 5432 . |
USERNAME | A conta do usuário de replicação no servidor externo. |
PASSWORD | A senha da conta de usuário da replicação. |
BUCKET | O nome do bucket que contém o arquivo dump. Inclua somente se você estiver configurando a replicação com um arquivo dump que existe em um bucket do Cloud Storage. |
DUMP_FILE | Um arquivo no bucket que contém os dados do servidor externo. |
CLIENT_CA_CERT | O certificado de CA no servidor externo. Inclua somente se SSL/TLS for usado no servidor externo. |
CLIENT_CERT | O certificado do cliente no servidor externo. Necessário apenas para autenticação servidor-cliente. Inclua somente se SSL/TLS for usado no servidor externo. |
CLIENT_KEY | O arquivo de chave privada do certificado do cliente no servidor externo. Necessário apenas para autenticação servidor-cliente. Inclua somente se SSL/TLS for usado no servidor externo. |
Criar uma instância de representação de origem
Antes de iniciar esta etapa, crie um arquivo JSON que contenha seus dados de solicitação de origem.
Em seguida, para criar a instância de representação de origem no Cloud SQL, abra um terminal e execute os seguintes 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
aplicável
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
Propriedade | Descrição |
---|---|
PROJECT_ID | O ID do seu projeto no Google Cloud. |
JSON_PATH | O caminho para o arquivo JSON que contém os
dados da solicitação para o servidor externo. |
Atualizar uma instância de representação de origem
Se você atualizar os dados da solicitação usando o servidor externo, poderá atualizar a instância de representação de origem atual para usar os valores modificados.
Modificar os dados da solicitação
Atualize os dados da solicitação para incluir os campos que foram alterados. Isso inclui os campos hostPort
, username
, password
, caCertificate
, clientCertificate
e clientKey
. Depois de atualizar os dados da solicitação, use-os em um comando curl
para atualizar a instância no Cloud SQL.
O exemplo a seguir mostra a atualização dos campos username
e password
com um nome de usuário e uma senha diferentes:
source.json
{ "name": "SOURCE_NAME", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "onPremisesConfiguration": { "username": "NEW_USERNAME", "password": "NEW_PASSWORD" } }
exemplo de importação gerenciada
// 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#@%*@"
}
}
Propriedade | Descrição |
---|---|
SOURCE_NAME | O nome da instância de representação de origem. |
REGION | A região em que a instância de representação de origem reside. |
DATABASE_VERSION | A versão do banco de dados em execução no seu
servidor externo. As opções são POSTGRES_9_6 , POSTGRES_10 , POSTGRES_11 , POSTGRES_12 , POSTGRES_13 , POSTGRES_14 ou POSTGRES_15 . |
NEW_USERNAME | A nova conta do usuário de replicação no servidor externo. |
NEW_PASSWORD | A senha da nova conta. |
Modificar uma instância de representação de origem
Antes de iniciar esta etapa, crie um arquivo JSON que contenha seus dados de solicitação da réplica.
Em seguida, para modificar a instância de representação de origem no Cloud SQL, abra um terminal e execute os seguintes 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
aplicável
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
Propriedade | Descrição |
---|---|
PROJECT_ID | O ID do seu projeto no Google Cloud. |
JSON_PATH | O caminho para o arquivo JSON que contém os
dados da solicitação para o servidor externo. |
SOURCE_NAME | O nome da instância de representação de origem. |
Configurar uma réplica do Cloud SQL
A réplica do Cloud SQL contém os dados do
servidor externo. Nesta etapa, você cria os dados da
solicitação e os usa em um comando curl
que cria a
réplica do Cloud SQL no Cloud SQL.
Criar os dados da solicitação
Os dados da solicitação contêm informações básicas sobre o servidor externo e a réplica do Cloud SQL no formato JSON. Os dados da solicitação podem ser configurados para uma réplica do Cloud SQL em uma rede pública ou privada e precisam conter estas informações:
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" }
aplicável
{ "settings": { "tier": "db-custom-4-15360", "dataDiskSizeGb": "100" }, "masterInstanceName": "source-instance", "region": "us-central1", "databaseVersion": "POSTGRES_14", "name": "replica-instance" }
Propriedade | Descrição |
---|---|
TIER | O tipo de máquina para hospedar a instância da
réplica. Se você não souber qual tipo de máquina usar,
comece com db-custom-2-7680 . É possível
alterar o tamanho e outros valores compatíveis
posteriormente, se necessário. |
DISK_SIZE | O tamanho de armazenamento da réplica do Cloud SQL, em GB. |
PUBLIC_IP_STATUS | Determina se a instância recebe
um endereço IP público. Por padrão, o
valor dessa propriedade é true .
Para desativar a atribuição de um endereço IP público para a
réplica, defina o valor como false .
Se o seu projeto tem a constraints/sql.restrictPublicIp política da
organização ativado, para criar a réplica do Cloud SQL,
defina o valor do atributo ipv4Enabled do app para false . Para mais informações
sobre como desativar a atribuição de endereço IP público, consulte
Desativar IP público. |
PROJECT_ID | Se a réplica do Cloud SQL estiver em uma rede privada,
inclua a propriedade privateNetwork no
arquivo replica.json .
Para PROJECT_ID, especifique o ID do
projeto no Google Cloud. |
NETWORK_NAME | O nome da rede privada a ser usada com a réplica do Cloud SQL. |
AVAILABILITY_TYPE | O tipo de disponibilidade da réplica do Cloud SQL. Por padrão, o valor é ZONAL . Para criar a réplica de alta disponibilidade, defina o valor como REGIONAL . Para saber mais sobre os valores permitidos, consulte SqlAvailabilityType.
Depois de criar uma réplica de alta disponibilidade do servidor externo, não é possível alterá-la para uma réplica que não seja de alta disponibilidade. Isso também se aplica inversamente. Não é possível alterar uma réplica que não seja de alta disponibilidade do servidor externo para uma réplica de alta disponibilidade. Uma tentativa de failover manual pode levar a uma migração irrecuperável quando a instância ainda está carregando os dados iniciais ou a uma inatividade temporária se a instância já estiver em replicação a partir da fonte. Verifique o status de replicação. |
SOURCE_REPRESENTATION_INSTANCE_NAME | O nome da instância de representação de origem. |
SOURCE_REGION | A região atribuída à instância de representação de origem. |
DATABASE_VERSION | A versão do banco de dados a ser usada com a
réplica do Cloud SQL. As opções para essa versão são POSTGRES_9_6 , POSTGRES_10 , POSTGRES_11 , POSTGRES_12 , POSTGRES_13 , POSTGRES_14 ou POSTGRES_15 .
Corresponda a versão do banco de dados em execução no servidor externo ou defina o valor como, no máximo, uma versão posterior. |
REPLICA_NAME | O nome da réplica do Cloud SQL a ser criada. |
Crie a réplica do Cloud SQL
Antes de iniciar esta etapa, crie um arquivo JSON que contenha seus dados de solicitação da réplica. Em seguida, para criar uma réplica do Cloud SQL, abra um terminal do Cloud Shell e execute estes 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
aplicável
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
Propriedade | Descrição |
---|---|
PROJECT_ID | O ID do projeto no Google Cloud, que precisa ser o mesmo da instância de origem. |
JSON_PATH | O caminho para o arquivo JSON que contém os dados da solicitação para a réplica do Cloud SQL. |
Verificar a configuração
Para garantir que suas instâncias foram configuradas corretamente, acesse a página Instâncias do Cloud SQL.
Você verá sua instância de representação de origem e a réplica do Cloud SQL em uma listagem semelhante a esta:
ID da instância | Tipo | IP público |
---|---|---|
(-) source-representation-instance | Principal externa do banco de dados | 10.68.48.3:5432 |
replica-instance | Réplica de leitura do banco de dados | 34.66.48.59 |
Verifique também se você tem a permissão cloudsql.instances.migrate
na
réplica do Cloud SQL. Essa permissão está incluída nos papéis do IAM cloudsql.admin
ou cloudsql.editor
.
Adicionar usuários à réplica do Cloud SQL
Não é possível importar contas de usuário do banco de dados do servidor externo, mas é possível criar essas contas em uma réplica do Cloud SQL. Faça isso antes da replicação pelo servidor externo.
Conseguir o endereço IP de saída da réplica do Cloud SQL
Use o endereço IP de saída da réplica do Cloud SQL para criar uma conexão segura entre o servidor externo e a réplica do Cloud SQL. Esse endereço IP não será cobrado.
Console
Para receber o endereço IP de saída da réplica, faça o seguinte:
-
No console do Google Cloud, acesse a página Instâncias do Cloud SQL.
Ao lado do endereço IP público da réplica do Cloud SQL, posicione o cursor sobre a dica Mais informações e recupere o endereço IP de saída.
O endereço IP de saída não é o endereço IP exibido na listagem principal da réplica no console do Google Cloud.
gcloud
Para saber o endereço IP de saída da réplica, execute o seguinte comando:
gcloud sql instances describe REPLICA_NAME --format="default(ipAddresses)"
Propriedade | Descrição |
---|---|
REPLICA_NAME | O nome da réplica do Cloud SQL com o endereço IP público de saída que você quer recuperar. |
Permitir conexões de entrada no servidor externo
A réplica do Cloud SQL precisa se conectar ao servidor externo para que a replicação seja bem-sucedida. Você precisa configurar o firewall de rede do servidor externo para aceitar conexões provenientes do endereço IP de saída da réplica do Cloud SQL se as seguintes condições forem aplicáveis:
- O servidor externo está protegido por firewall ou alguma outra restrição de rede.
- Sua réplica do Cloud SQL está usando um IP público.
Para se conectar à réplica do Cloud SQL, use o endereço IP principal da réplica. Esse endereço IP é exibido no console do Google Cloud.
Atualizar a instância de representação de origem para permitir a replicação para a réplica do Cloud SQL
Depois de configurar a instância de representação de origem para a réplica do Cloud SQL, talvez seja necessário atualizar a instância de representação de origem. Por exemplo, estes cenários exigem uma atualização nas configurações:
- O host, a porta ou o IP do servidor externo é alterado.
- Você quer usar outro usuário de replicação do PostgreSQL.
- A senha do usuário de replicação do PostgreSQL é alterada.
- Os certificados SSL usados para se conectar com segurança à alteração no servidor externo.
Semeie a réplica do Cloud SQL
Para o carregamento inicial de dados do servidor externo na réplica do Cloud SQL, use uma importação gerenciada. Ela usa um serviço que extrai dados do servidor externo e os importa diretamente para a instância do Cloud SQL. Para mais informações, consulte Como usar uma importação gerenciada para configurar a replicação de bancos de dados externos.
Replicação do monitor
Quando a réplica do Cloud SQL termina o carregamento de dados inicial, ela se conecta ao servidor externo e aplica todas as atualizações feitas após a operação de exportação. Confirme o status de replicação.
É importante verificar o status da replicação antes de promover a réplica para uma instância autônoma. Se o processo de replicação não for concluído com êxito, uma réplica promovida não terá todas as alterações do servidor externo.
Se o atraso da replicação não estiver em direção a 0,
tome medidas para resolver o problema.
Verifique essas métricas: /postgresql/external_sync/initial_sync_complete
,
postgresql/external_sync/max_replica_byte_lag
e
database/replication/state
. Veja a lista de métricas do Cloud SQL.
Depois que a réplica do Cloud SQL alcançar o servidor externo e não houver atraso de replicação na réplica do Cloud SQL, conecte-se ao banco de dados. Execute os comandos adequados do banco de dados para garantir que o conteúdo seja o esperado em comparação com o servidor externo. Retenha seu servidor externo até que as validações necessárias sejam concluídas.
Configurar uma réplica em cascata
Após a migração, é possível criar réplicas de leitura em cascata na sua réplica do Cloud SQL antes de promover a réplica do Cloud SQL.
Para criar uma réplica em cascata, execute os seguintes comandos:
Console
-
No console do Google Cloud, acesse a página Instâncias do Cloud SQL.
- Clique na guia Réplicas da réplica que atuará como mãe da réplica que você quer criar.
- Clique em Criar réplica.
- Na página Criar réplica de leitura, atualize o ID da instância e todas as outras opções de configuração, incluindo nome, região e zona.
- Clique em Criar.
O Cloud SQL cria uma réplica. Você retorna à página da instância da réplica mãe.
- Siga as etapas de 4 a 6 para cada nova réplica em cascata que você queira criar.
gcloud
- Crie a nova réplica especificando a réplica do Cloud SQL como a instância principal usando a sinalização
--master-instance-name
: Substitua:gcloud sql instances create REPLICA_NAME \ --master-instance-name=PARENT_REPLICA_NAME \
- REPLICA_NAME: o ID exclusivo da réplica que você está criando
- PARENT_REPLICA_NAME: o nome da réplica do Cloud SQL
- Após a criação da réplica, é possível ver que as alterações feitas na instância principal são replicadas por todas as réplicas na cadeia de réplicas em cascata.
curl
- Para criar uma réplica sob a réplica mãe, edite o exemplo de código JSON a seguir e salve-o em um arquivo chamado
request.json
:{ "masterInstanceName": "EXTERNAL_SERVER_REPLICA_NAME", "project": "PROJECT_ID", "name": "REPLICA_NAME", "region": "REPLICA_REGION", "settings": { "tier": "MACHINE_TYPE", } }
- Execute este 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"
Promova a réplica
Promova sua réplica seguindo estas etapas:
- Promova a réplica a uma instância principal.
- Adicione réplicas de leitura à instância.
- Opcional: configure sua instância para alta disponibilidade (HA, na sigla em inglês).
Para evitar mais inatividade, é possível ativar a alta disponibilidade ao configurar uma réplica definindo
AVAILABILITY_TYPE
comoREGIONAL
.
A seguir
- Saiba como usar uma importação gerenciada para configurar a replicação de bancos de dados externos.