Esta página descreve 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 no Cloud SQL. Tem de seguir todos os passos nesta página antes de avançar para os passos de replicação.
Uma alternativa aos passos descritos nesta página é o serviço de migração de base de dados, que oferece replicação contínua ou migração única de base de dados de um servidor externo para o Cloud SQL.
Antes de começar
Terminologia
Servidor externo. O servidor PostgreSQL externo ao Cloud SQL a partir do qual quer replicar dados. Também é conhecido como base de dados de origem ou servidor de base de dados externo. Pode ser outra instância do Cloud SQL ou qualquer outro servidor de base de dados, como um servidor no local, o Amazon Relational Database Service (RDS) e assim sucessivamente.
Instância de representação da origem. Uma simulação de uma instância do Cloud SQL que representa o servidor externo para a réplica do Cloud SQL. É visível na Google Cloud consola e aparece como uma instância normal do Cloud SQL, mas não contém dados, não requer configuração nem manutenção, e não afeta a faturação.
Réplica do Cloud SQL. A instância do Cloud SQL que faz a replicação a partir do servidor externo. Também conhecida como réplica de leitura primária externa.
Conta de utilizador de replicação. A conta de utilizador do PostgreSQL no servidor externo com autorizações suficientes para permitir a replicação entre o servidor externo e a réplica do Cloud SQL.
Importação gerida. O processo de importar dados diretamente do servidor externo para a réplica do Cloud SQL. Nesta situação, o Cloud SQL liga-se ao servidor externo através da conta de utilizador 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 Google Cloud projeto
- 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud SQL Admin API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud SQL Admin API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Certifique-se de que tem as funções de administrador do Cloud SQL, administrador do armazenamento e leitor do Compute na sua conta de utilizador.
- PostgreSQL autogerido (no local ou em qualquer VM na nuvem que controla totalmente) 9.4, 9.5, 9.6, 10, 11, 12, 13, 14, 15, 16 e 17
- Amazon RDS 9.6.10+, 10.5+, 11.1+, 12, 13, 14, 15, 16 e 17
- Amazon Aurora 10.11+, 11.6+, 12.4+, 13.3+, 14.6+, 15.2+, 16 e 17
- Microsoft Azure Database for PostgreSQL Flexible Server 11 e posterior
- Cloud SQL 9.6, 10, 11, 12, 13, 14, 15, 16 e 17
Na Google Cloud consola, aceda à página Redes VPC.
Selecione a rede de VPC que quer usar.
Clique no separador Ligação de serviço privada.
- Se a instância de origem não incluir a base de dados
postgres
, crie-a. - Instale o pacote pglogical na instância de origem.
Defina os seguintes parâmetros, conforme necessário.
Se a instância do PostgreSQL de origem for o Amazon RDS, inclua estes parâmetros num novo grupo de parâmetros e anexe o grupo de parâmetros à instância.
Se a origem for o Cloud SQL, defina as flags
cloudsql.logical_decoding
ecloudsql.enable_pglogical
comoon
.Para ativar flags no Cloud SQL, consulte o artigo Configurar flags de base de dados.
Defina
shared_preload_libraries
para incluirpglogical
através do seguinte comando:ALTER SYSTEM SET shared_preload_libraries = 'pglogical';
Defina
wal_level
comological
através do seguinte comando:ALTER SYSTEM SET wal_level = 'logical';
Se a instância PostgreSQL de origem for o Amazon RDS, para ativar os registos WAL ao nível da base de dados, defina o parâmetro
rds.logical_replication
como1
.logical
Defina
wal_sender_timeout
como0
através do seguinte comando:ALTER SYSTEM SET wal_sender_timeout = 0;
O valor
0
desativa o mecanismo de limite de tempo usado para terminar as ligações de replicação inativas.Defina max_replication_slots para o número máximo de espaços de replicação que a instância de origem pode suportar. Use o seguinte comando, depois de substituir MAX_REPLICATION_SLOTS pelo número:
ALTER SYSTEM SET max_replication_slots = MAX_REPLICATION_SLOTS;
O Cloud SQL requer um espaço para cada base de dados migrada. Especifique, pelo menos, o número de subscrições que espera associar, com algumas reservas para a sincronização de tabelas.
Por exemplo, se a instância de origem tiver 5 bases de dados e forem criadas 2 tarefas de migração para a origem, o número de espaços de replicação tem de ser, pelo menos, 5 * 2 = 10, além do número de espaços de replicação que já usa.
Defina max_wal_senders para, pelo menos, o mesmo que
max_replication_slots
, além do número de remetentes já usados na sua instância. Use o seguinte comando, substituindo MAX_WAL_SENDERS pelo número total de processos de envio de WAL em execução em simultâneo:ALTER SYSTEM SET max_wal_senders = MAX_WAL_SENDERS;
Por exemplo, se o parâmetro
max_replication_slots
estiver definido como10
e já estiver a usar 2 remetentes, o número de processos de remetentes WAL em execução em simultâneo seria 10 + 2 = 12.Defina max_worker_processes para, pelo menos, o número de bases de dados na instância de origem, além do número de processos de trabalho já usados na sua instância. Use o seguinte comando, depois de substituir MAX_WORKER_PROCESSES pelo número total:
ALTER SYSTEM SET max_worker_processes = MAX_WORKER_PROCESSES;
- Se a instância do PostgreSQL de origem for o Microsoft Azure Database for
PostgreSQL Flexible Server, execute as seguintes ações para suportar
a migração de dados de um servidor externo para uma instância do Cloud SQL:
Defina
shared_preload_libraries
para incluirpglogical
através do seguinte comando:ALTER SYSTEM SET shared_preload_libraries = 'pglogical';
- Defina
wal_level
comological
. Para mais informações, consulte o artigo Replicação lógica e descodificação lógica na Base de Dados Azure para PostgreSQL – Servidor Flexível. Defina max_replication_slots para o número máximo de espaços de replicação que a instância de origem pode suportar. Use o seguinte comando, depois de substituir MAX_REPLICATION_SLOTS pelo número:
ALTER SYSTEM SET max_replication_slots = MAX_REPLICATION_SLOTS;
O Cloud SQL requer um espaço para cada base de dados migrada. Especifique, pelo menos, o número de subscrições que espera associar, com algumas reservas para a sincronização de tabelas.
Por exemplo, se a instância de origem tiver 5 bases de dados e forem criadas 2 tarefas de migração para a origem, o número de espaços de replicação tem de ser, pelo menos, 5 * 2 = 10, além do número de espaços de replicação que já usa.
Defina max_wal_senders para, pelo menos, o mesmo que
max_replication_slots
, além do número de remetentes já usados na sua instância. Use o seguinte comando, substituindo MAX_WAL_SENDERS pelo número total de processos de envio de WAL em execução em simultâneo:ALTER SYSTEM SET max_wal_senders = MAX_WAL_SENDERS;
Por exemplo, se o parâmetro
max_replication_slots
estiver definido como10
e já estiver a usar 2 remetentes, o número de processos de remetentes WAL em execução em simultâneo seria 10 + 2 = 12.Defina max_worker_processes para, pelo menos, o número de bases de dados na instância de origem, além do número de processos de trabalho já usados na sua instância. Use o seguinte comando, depois de substituir MAX_WORKER_PROCESSES pelo número total:
ALTER SYSTEM SET max_worker_processes = MAX_WORKER_PROCESSES;
- Defina azure.extensions para incluir
pglogical
. Para mais informações, consulte o artigo Parâmetros do servidor na base de dados do Azure para PostgreSQL – Servidor flexível.
- Se a réplica do Cloud SQL usar um IP privado, configure a firewall do servidor externo para permitir o intervalo de IP interno atribuído para o acesso privado a serviços da rede VPC da réplica.
- Para aplicar as alterações de configuração, reinicie a instância de origem.
Opção 1: ative o servidor externo do Cloud SQL para acompanhar o atraso na replicação concedendo acesso a uma consulta específica. Usando um utilizador com o privilégio
SUPERUSER
, faça o seguinte:Defina a seguinte função para permitir que o servidor externo consulte o atraso na 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 autorização
EXECUTE
ao utilizador 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 utilizador usado para estabelecer ligação à instância de origem. Isto permite que o servidor externo leia o atraso na replicação diretamente.Opção 3: acompanhe o atraso na replicação de forma independente através da 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 na replicação nos gráficos nem nas respostas da API.
- Para origens no local: bases de dados de modelos
template0
etemplate1
- Para origens do Amazon RDS:
template0
,template1
erdsadmin
- Para origens do Cloud SQL: bases de dados de modelos
template0
etemplate1
Para instalar a extensão
pglogical
, execute o seguinte comando em todas as bases 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 suporta a migração da captura instantânea inicial e das declarações
são migradas.INSERT
durante a fase de captura de dados de alterações (CDC). Migre as declaraçõesUPDATE
eDELETE
manualmente.Efetue a ligação à instância e execute os seguintes comandos para definir privilégios para o utilizador em cada uma das bases de dados migradas, bem como na base de dados
postgres
predefinida.O utilizador que usa para estabelecer ligação à instância de origem está configurado como o utilizador na página Perfis de associação. Pode criar um novo utilizador ou reutilizar um existente.
Em todos os esquemas em cada base de dados a migrar, exceto no esquema de informações e nos esquemas que começam por
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 base de dados a migrar, execute o seguinte comando:
GRANT USAGE on SCHEMA pglogical to PUBLIC;
Para obter informações de replicação das bases de dados de origem, execute o seguinte comando em todas as bases de dados:
GRANT SELECT on ALL TABLES in SCHEMA pglogical to username;
Se a sua origem for o Amazon RDS, execute o seguinte comando:
GRANT rds_replication to username;
Se a sua origem for a versão anterior à 14 da base de dados do Microsoft Azure para PostgreSQL, execute o seguinte comando:
GRANT SELECT on ALL TABLES in SCHEMA pglogical to username;
Pode ignorar um erro que aparece na interface
pglogical.node
.Se a sua origem for a versão 14 e posteriores da base de dados do Microsoft Azure para PostgreSQL, execute o seguinte comando:
GRANT pg_read_all_data to username;
Caso contrário, execute o seguinte comando:
ALTER USER username with REPLICATION;
SSL_OPTION_UNSPECIFIED:
a base de dados de destino se liga à base de dados de origem sem encriptação.DISABLED:
O SSL está desativado quando a réplica se liga à base de dados de origem.REQUIRE:
O SSL é necessário para que a réplica se ligue à base de dados de origem.VERIFY_CA:
use este parâmetro para especificar se a autenticação apenas do servidor ou a autenticação do servidor-cliente é usada como parte da encriptação SSL/TLS para estabelecer ligação entre as bases de dados de origem e de destino.Para usar a autenticação apenas do servidor, para a variável
SOURCE_CERT
, tem de fornecer o certificado codificado em PEM x509 da autoridade de certificação (AC) que assinou o certificado do servidor externo.Para usar a autenticação servidor-cliente, faça as seguintes substituições:
SOURCE_CERT:
fornecer o certificado da CA que assinou o certificado do servidor da base de dados de origemCLIENT_CERT:
forneça o certificado que a base de dados de destino usa para autenticar no servidor da base de dados de origemCLIENT_KEY:
faculte a chave privada associada ao certificado de cliente
-
Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.
Junto ao endereço IP público da réplica do Cloud SQL, mantenha o ponteiro sobre a sugestão Mais informações e obtenha o endereço IP de saída.
Tenha em atenção que o endereço IP de saída não é o endereço IP apresentado na ficha principal da réplica na Google Cloud consola.
- O servidor externo está protegido por uma firewall ou alguma outra restrição de rede.
- A sua réplica do Cloud SQL está a usar um IP público.
- O anfitrião, a porta ou o IP do servidor externo são alterados.
- Quiser usar um utilizador de replicação do PostgreSQL diferente.
- A palavra-passe do utilizador de replicação do PostgreSQL é alterada.
- Os certificados SSL usados para estabelecer ligação segura ao servidor externo mudam.
-
Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.
- Clique no separador Réplicas para a réplica que vai atuar como principal para a réplica que quer criar.
- Clique em Criar réplica.
- Na página Criar réplica de leitura, atualize o ID da instância e quaisquer outras opções de configuração, incluindo o nome, a região e a zona.
- Clique em Criar.
O Cloud SQL cria uma réplica. Regressa à página da instância da réplica principal.
- Siga os passos 4 a 6 para cada nova réplica em cascata que quer criar.
- Crie a nova réplica especificando a réplica do Cloud SQL como a instância principal através da flag
--master-instance-name
: - REPLICA_NAME: o ID exclusivo da réplica que está a criar
- PARENT_REPLICA_NAME: o nome da réplica do Cloud SQL
Depois de criar a réplica, pode ver que as alterações feitas à instância principal são replicadas em todas as réplicas na cadeia de réplicas em cascata.
- Para criar uma réplica na réplica principal, edite o seguinte exemplo de código JSON e guarde-o num ficheiro denominado
request.json
:{ "masterInstanceName": "EXTERNAL_SERVER_REPLICA_NAME", "project": "PROJECT_ID", "name": "REPLICA_NAME", "region": "REPLICA_REGION", "settings": { "tier": "MACHINE_TYPE", } }
- Execute o seguinte 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 a uma instância principal.
- Adicione réplicas de leitura à sua instância.
- Opcional: configure a sua instância para alta disponibilidade (AA).
Para evitar tempo de inatividade adicional, pode ativar a HA enquanto configura uma réplica definindo
AVAILABILITY_TYPE
comoREGIONAL
. Se instalar extensões nas bases de dados de origem externas que o Cloud SQL não suporta, quando migrar as bases de dados para uma instância de destino, o Cloud SQL não migra estas extensões. Para garantir uma migração sem problemas, verifique se nenhum objeto ou aplicação faz referência às extensões. Antes de continuar com a migração, recomendamos que remova as extensões, bem como todas as referências das bases de dados de origem.
Para mais informações sobre as extensões suportadas pelo Cloud SQL, consulte o artigo Configure extensões do PostgreSQL.
Se instalar a extensão
pg_cron
nas bases de dados de origem externas, quando migrar as bases de dados para uma instância de destino, o Cloud SQL não migra a extensão nem as definiçõescron
associadas à extensão. Depois de migrar as bases de dados e promover a réplica, a Google recomenda que reative a extensãopg_cron
em cada base de dados migrada.Não é possível migrar dados da versão 11 de um servidor Microsoft Azure de origem para a versão 11 de uma instância do Cloud SQL para PostgreSQL de destino. Para resolver este problema, migre os dados para uma instância do Cloud SQL com a versão 12 ou posterior.
- Saiba como usar uma importação gerida para configurar a replicação a partir de bases de dados externas.
Instale o Google Cloud SDK
Para configurar a replicação, instale Google Cloud o SDK para o seu servidor externo. Pode querer instalar o SDK no seu servidor externo, a menos que já esteja instalado noutro local.
Configure o servidor externo para a replicação
O Cloud SQL suporta migrações contínuas de bases de dados de origem para bases de dados de destino do Cloud SQL.
As bases de dados de origem compatíveis com o PostgreSQL incluem:
A configuração da origem requer a configuração da instância de origem e das bases de dados de origem subjacentes.
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 privado de saída não é estático, configure a firewall do servidor externo para permitir o intervalo de IP interno atribuído para o acesso privado a serviços da rede VPC que a réplica do Cloud SQL usa como rede privada.
A firewall do servidor da base de dados de origem tem de ser configurada para permitir todo o intervalo de IP interno atribuído à ligação de serviço privado da rede VPC que a instância de destino do Cloud SQL usa como o campo privateNetwork das respetivas definições de ipConfiguration.
Para encontrar o intervalo de IPs internos:
Configure a instância de origem
Para configurar a instância de origem, siga estes passos:
Os parâmetros que está a definir neste passo aplicam-se
a um servidor de base de dados PostgreSQL em execução. Também pode tornar estas alterações persistentes incluindo-as no ficheiro postgresql.conf
.
Ative a monitorização do atraso de replicação para versões do PostgreSQL anteriores à 9.6
Se estiver a migrar de uma versão do PostgreSQL inferior à 9.6, a métrica de atraso na replicação não está disponível por predefinição. Pode usar uma de três alternativas para acompanhar esta métrica e garantir um tempo de inatividade mínimo quando promove a base de dados:
Configure as bases de dados de origem
O servidor externo do Cloud SQL migra todas as bases de dados na instância de origem, exceto as seguintes:
Faça o seguinte em cada base de dados na instância de origem que não esteja incluída na lista anterior:
Configure uma instância de representação de origem
A instância de representação da origem faz referência ao servidor externo. Contém apenas os dados do pedido do servidor externo. Crie os dados do pedido e use-os num comando curl
que crie a instância de representação da origem no Cloud SQL.
Crie os dados do pedido
Os dados do pedido contêm informações básicas sobre o seu servidor externo no formato JSON. Os dados do pedido podem ser configurados para uma réplica do Cloud SQL numa rede pública ou privada e devem conter estas informações.
Se quiser migrar um subconjunto de bases de dados da instância de representação de origem para a instância do Cloud SQL de destino, use o parâmetroselectedObjects
para especificar os nomes das bases de dados. Se não usar este parâmetro ou fornecer uma lista vazia como o valor do parâmetro, todas as bases de dados são migradas da origem para o destino.
source.json
{ "name": "SOURCE_NAME", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "onPremisesConfiguration": { "selectedObjects": "SELECTED_OBJECTS", "hostPort": "SOURCE_HOST", "username": "USERNAME", "password": "PASSWORD", "caCertificate": "SOURCE_CERT", "clientCertificate": "CLIENT_CERT", "clientKey": "CLIENT_KEY" } }
Exemplo de importação gerida
// example of source.json for external server that
// - initiates replication from a Cloud SQL managed import
// - doesn't use SSL/TLS
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "POSTGRES_9_6",
"onPremisesConfiguration": {
"selectedObjects":[{"database":"db1"}, {"database":"db2"}],
"hostPort": "192.0.2.0:3306",
"username": "replicationUser",
"password": "486#@%*@"
}
}
Propriedade | Descrição |
---|---|
SOURCE_NAME | O nome da instância de representação da origem a criar. |
REGION | A região onde quer que a instância de representação de origem resida. |
DATABASE_VERSION | A versão da base 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 , POSTGRES_15 , POSTGRES_16 ou POSTGRES_17 . |
SELECTED_OBJECTS | Uma lista de objetos separados por vírgulas, que contém bases de dados das quais está a migrar da instância de representação de origem para a instância do Cloud SQL de destino. |
SOURCE HOST | O endereço IPv4 e a porta do servidor externo ou o endereço DNS do servidor externo. Se o servidor externo estiver alojado
no Cloud SQL, a porta é 5432 . |
USERNAME | A conta de utilizador de replicação no servidor externo. |
PASSWORD | A palavra-passe da conta de utilizador de replicação. |
BUCKET | O nome do contentor que contém o ficheiro de despejo. Inclua apenas se estiver a configurar a replicação com um ficheiro de despejo existente num contentor do Cloud Storage. |
DUMP_FILE | Um ficheiro no contentor que contém os dados do servidor externo. |
CLIENT_CA_CERT | O certificado da AC no servidor externo. Inclua apenas se o SSL/TLS for usado no servidor externo. |
CLIENT_CERT | O certificado de cliente no servidor externo. Obrigatório apenas para a autenticação de servidor-cliente. Inclua apenas se o SSL/TLS for usado no servidor externo. |
CLIENT_KEY | O ficheiro de chave privada para o certificado de cliente no servidor externo. Obrigatório apenas para a autenticação servidor-cliente. Inclua apenas se o SSL/TLS for usado no servidor externo. |
SSL_OPTION | Se a encriptação SSL/TLS é usada para estabelecer uma ligação entre a base de dados do Microsoft Azure de origem e a base de dados do Cloud SQL de destino. Pode especificar os seguintes valores para este parâmetro: O valor predefinido para este parâmetro é |
Crie uma instância de representação de origem
Antes de iniciar este passo, crie um ficheiro JSON que contenha os dados do pedido de origem.
Em seguida, para criar a instância de representação da 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
exemplo
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 em Google Cloud. |
JSON_PATH | O caminho para o ficheiro JSON que contém os dados do pedido para o servidor externo. |
Atualize uma instância de representação de origem
Se atualizar os dados do pedido do servidor externo, pode atualizar a instância de representação da origem existente para usar os valores modificados.
Modifique os dados do pedido
Atualize os dados do pedido para incluir todos os campos que foram alterados. Isto inclui os campos hostPort
, username
, password
, caCertificate
, clientCertificate
e clientKey
. Depois de atualizar os dados do pedido, use-os num comando curl
para atualizar a instância no Cloud SQL.
selectedObjects
. Se não usar este parâmetro ou fornecer uma lista vazia como o valor do parâmetro, todas as bases de dados são migradas da origem para o destino.
O exemplo seguinte mostra a atualização dos campos username
e password
com um nome de utilizador e uma palavra-passe diferentes:
source.json
{ "name": "SOURCE_NAME", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "onPremisesConfiguration": { "selectedObjects": "SELECTED_OBJECTS", "username": "NEW_USERNAME", "password": "NEW_PASSWORD" } }
Exemplo de importação gerida
// example of source.json for external server that
// - initiates replication from a Cloud SQL managed import
// - doesn't use SSL/TLS
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "POSTGRES_9_6",
"onPremisesConfiguration": {
"selectedObjects":[{"database":"db1"}, {"database":"db3"}],
"username": "newReplicationUser",
"password": "525#@%*@"
}
}
Propriedade | Descrição |
---|---|
SOURCE_NAME | O nome da instância de representação da origem. |
REGION | A região onde a instância de representação de origem reside. |
DATABASE_VERSION | A versão da base 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 , POSTGRES_15 , POSTGRES_16 ou POSTGRES_17 . |
SELECTED_OBJECTS | Uma lista de objetos atualizada separada por vírgulas, que contém bases de dados que está a migrar da instância de representação de origem para a instância do Cloud SQL de destino. |
NEW_USERNAME | A nova conta de utilizador de replicação no servidor externo. |
NEW_PASSWORD | A palavra-passe da nova conta. |
Modifique uma instância de representação de origem
Antes de iniciar este passo, crie um ficheiro JSON que contenha os dados do pedido modificados.
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
exemplo
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 em Google Cloud. |
JSON_PATH | O caminho para o ficheiro JSON que contém os dados do pedido para o servidor externo. |
SOURCE_NAME | O nome da instância de representação da origem. |
Configure uma réplica do Cloud SQL
Eventualmente, a réplica do Cloud SQL contém os dados do servidor externo. Neste passo, cria os dados de pedido e usa-os num comando curl
que cria a réplica do Cloud SQL no Cloud SQL.
Crie os dados do pedido
Os dados do pedido contêm informações básicas sobre o seu servidor externo e réplica do Cloud SQL no formato JSON. Os dados do pedido podem ser configurados para uma réplica do Cloud SQL numa rede pública ou privada e devem 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" }
exemplo
{ "settings": { "tier": "db-custom-4-15360", "dataDiskSizeGb": "100" }, "masterInstanceName": "source-instance", "region": "us-central1", "databaseVersion": "POSTGRES_16", "name": "replica-instance" }
Propriedade | Descrição |
---|---|
TIER | O tipo de máquina para alojar a instância de réplica. Se não souber que tipo de máquina usar,
comece por db-custom-2-7680 . Pode
alterar o tamanho e outros valores suportados
mais tarde, se necessário. |
DISK_SIZE | O tamanho do armazenamento da réplica do Cloud SQL, em GB. |
PUBLIC_IP_STATUS | Determina se a instância tem um endereço IP público atribuído. Por predefinição, o valor desta propriedade é true .
Para desativar a atribuição de um endereço IP público à réplica, defina o valor como false .
Se o seu projeto tiver a política da organização constraints/sql.restrictPublicIp ativada, para criar a réplica do Cloud SQL, tem de definir o valor da propriedade ipv4Enabled como false . Para mais informações
sobre como desativar a atribuição de endereços IP públicos, consulte
Desativar IP público. |
PROJECT_ID | Se a réplica do Cloud SQL estiver numa rede privada,
inclua a propriedade privateNetwork no ficheiro
replica.json .
Para PROJECT_ID, especifique o ID do seu projeto em Google Cloud. |
NETWORK_NAME | O nome da rede privada a usar com a réplica do Cloud SQL. |
AVAILABILITY_TYPE | O tipo de disponibilidade da réplica do Cloud SQL. Por predefinição, o valor é ZONAL . Para tornar a réplica HA, defina o valor como REGIONAL . Para saber mais sobre os valores permitidos, consulte SqlAvailabilityType.
Depois de criar uma réplica de HA do servidor externo, não pode alterá-la para uma réplica sem HA. Isto também é verdade no sentido inverso. Não pode alterar uma réplica não de alta disponibilidade de um servidor externo para uma réplica de alta disponibilidade. A comutação por falha manual pode levar a uma migração irrecuperável se for tentada quando a instância ainda estiver a carregar os dados iniciais ou a uma indisponibilidade temporária se a instância já estiver a replicar a partir da origem. Verifique o estado da replicação. |
SOURCE_REPRESENTATION_INSTANCE_NAME | O nome da instância de representação da origem. |
SOURCE_REGION | A região atribuída à instância de representação de origem. |
DATABASE_VERSION | A versão da base de dados a usar com a réplica do Cloud SQL. As opções para esta versão são POSTGRES_9_6 , POSTGRES_10 ,
POSTGRES_11 , POSTGRES_12 , POSTGRES_13 , POSTGRES_14 , POSTGRES_15 , POSTGRES_16 ou POSTGRES_17 .
Faça corresponder a versão da base de dados em execução no seu servidor externo ou defina o valor para não mais de uma versão posterior. |
REPLICA_NAME | O nome da réplica do Cloud SQL a criar. |
Crie a réplica do Cloud SQL
Antes de iniciar este passo, crie um ficheiro JSON que contenha os dados do pedido de 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
exemplo
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 seu projeto no Google Cloud, que tem de ser igual ao da instância de origem. |
JSON_PATH | O caminho para o ficheiro JSON que contém os dados do pedido para a réplica do Cloud SQL. |
Valide a configuração
Para garantir que as instâncias foram configuradas corretamente, aceda à página de instâncias do Cloud SQL.
Deverá ver a instância de representação de origem e a réplica do Cloud SQL numa listagem semelhante à seguinte:
ID da instância | Tipo | IP público |
---|---|---|
(-) source-representation-instance | Chave principal externa da base de dados | 10.68.48.3:5432 |
replica-instance | Réplica de leitura da base de dados | 34.66.48.59 |
Certifique-se também de que tem a autorização cloudsql.instances.migrate
na réplica do Cloud SQL. Esta autorização está incluída nas cloudsql.admin
ou cloudsql.editor
funções de IAM.
Defina a palavra-passe do utilizador predefinida e adicione outras contas de utilizador à réplica do Cloud SQL
Depois de criar a réplica do Cloud SQL, defina a palavra-passe do utilizador predefinido. Também pode adicionar outras contas de utilizador à réplica, se necessário. Não pode importar contas de utilizadores da base de dados do servidor externo, mas pode recriar as contas de utilizadores na réplica do Cloud SQL. Faça estas atividades antes de replicar a partir do servidor externo.
Para definir a palavra-passe do utilizador predefinido, use o comando
gcloud sql users set-password
da seguinte forma.
gcloud sql users set-password postgres \ --instance=INSTANCE_NAME \ --password=PASSWORD
Substitua INSTANCE_NAME pelo nome da instância e PASSWORD pela palavra-passe selecionada antes de executar o comando.
Para criar contas de utilizador na réplica, consulte o artigo Crie e faça a gestão de utilizadores.Obtenha o endereço IP de saída da réplica do Cloud SQL
Pode usar o endereço IP de saída da réplica do Cloud SQL para criar uma ligação segura entre o servidor externo e a réplica do Cloud SQL. Não lhe será cobrado este endereço IP.
Consola
Para obter o endereço IP de saída da réplica, faça o seguinte:
gcloud
Para obter 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 cujo endereço IP público de saída quer obter. |
Permita ligações recebidas no servidor externo
A réplica do Cloud SQL tem de estabelecer ligação ao servidor externo para que a replicação seja bem-sucedida. Tem de configurar a firewall de rede do seu servidor externo para aceitar ligações do endereço IP de saída da réplica do Cloud SQL se se aplicarem as seguintes condições:
Para estabelecer ligação à réplica do Cloud SQL, usa o endereço IP principal da réplica. Este endereço IP é apresentado na Google Cloud consola.
Atualize 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 da origem para a réplica do Cloud SQL, pode ter de atualizar a instância de representação da origem. Por exemplo, os seguintes cenários requerem uma atualização das suas configurações:
Inicialize a réplica do Cloud SQL
Para o carregamento inicial de dados do servidor externo para a réplica do Cloud SQL, use uma importação gerida. Usa um serviço que extrai dados do servidor externo e importa-os diretamente para a instância do Cloud SQL. Para mais informações, consulte o artigo Usar uma importação gerida para configurar a replicação a partir de bases de dados externas.
Monitorize a replicação
Quando a réplica do Cloud SQL termina o carregamento de dados inicial, estabelece ligação ao servidor externo e aplica todas as atualizações feitas após a operação de exportação. Confirme o estado da replicação.
É importante verificar o estado 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 tem todas as alterações do seu servidor externo.
Se o atraso na replicação não estiver a aproximar-se de 0,
tome medidas para o resolver.
Recomendamos que verifique as seguintes 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.
Se quiser migrar um subconjunto de bases de dados da instância de representação de origem para a instância do Cloud SQL de destino, selecione as seguintes métricas por base de dados:
Métrica | Descrição |
---|---|
per_database/postgresql/external_sync/initial_sync_complete |
Compreenda a fase de migração de uma base de dados. Se o valor desta métrica for 0 , a base de dados continua a fazer parte da exportação de dados inicial. Se o valor for 1 , significa que a base de dados concluiu
a descarga de dados inicial e está na fase de captura de dados de alterações (CDC). |
per_database/postgresql/external_sync/replication_byte_lag |
Conhecer o intervalo de tempo da replicação de uma base de dados (em bytes). |
Depois de a réplica do Cloud SQL alcançar o servidor externo e não haver atraso na replicação na réplica do Cloud SQL, estabeleça ligação à sua base de dados. Execute os comandos de base de dados adequados para se certificar de que o conteúdo está como esperado quando comparado com o servidor externo. Mantenha o seu servidor externo até que as validações necessárias estejam concluídas.
Configure uma réplica em cascata
Após a migração, pode 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:
Consola
gcloud
gcloud sql instances create REPLICA_NAME \ --master-instance-name=PARENT_REPLICA_NAME \
curl
Promova a réplica
Promova a sua réplica seguindo estes passos: