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 MySQL 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 MySQL 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.
Certifique-se de que o MySQL 5.7, 8.0 ou 8.4 está instalado no seu servidor externo. O MySQL Community Edition, o Cloud SQL para MySQL, o Amazon Aurora, o MySQL no Amazon RDS e o Microsoft Azure Database for MySQL Flexible Server são suportados.
- Tem de usar uma versão principal do MySQL na réplica do Cloud SQL que seja igual ou superior à versão do MySQL em execução no servidor externo.
- Se o MySQL 5.5 estiver instalado no servidor externo, o GTID não é suportado.
Certifique-se de que os registos binários estão ativados e que:
- É usado o registo binário baseado em linhas.
- Os registos binários são retidos durante um período suficientemente longo para suportar a migração da base de dados. Geralmente, uma semana é suficiente.
Tenha em atenção se o seu servidor externo tem o GTID ativado. Isto afeta os passos que tem de seguir para configurar a replicação.
Tenha em atenção se o seu servidor externo tem autorizações de bloqueio de leitura global. Isto afeta os passos que tem de seguir para configurar a replicação.
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:
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 o seu servidor externo contiver cláusulas
DEFINER
(visualizações, eventos, acionadores ou procedimentos armazenados), dependendo da ordem de execução destas declarações, a replicação pode falhar. Saiba mais sobre aDEFINER
utilização e as potenciais soluções alternativas no Cloud SQL.O InnoDB é o único motor de armazenamento suportado no Cloud SQL. A migração com o MyISAM pode causar inconsistência de dados e requer a validação de dados. Para mais informações, consulte o artigo Conversão de tabelas do MyISAM para o InnoDB na documentação do MySQL.
MySQL 5.7:
expire_logs_days
MySQL 8.0.x:
expire_logs_days
,binlog_expire_logs_seconds
MySQL 8.4:
binlog_expire_logs_seconds
Defina
binlog_expire_logs_seconds
para um período suficientemente longo para suportar a migração da base de dados.Para mais informações, consulte os artigos Configure os parâmetros do servidor na base de dados Azure para MySQL e o parâmetro
binlog_expire_logs_seconds
na documentação da Microsoft.Reinicie o servidor para que as alterações feitas possam entrar em vigor.
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.
- Quer usar um utilizador de replicação do MySQL diferente.
- A palavra-passe do utilizador de replicação do MySQL é alterada.
- Os certificados SSL usados para estabelecer ligação segura ao servidor externo mudam.
- 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. O Cloud SQL recomenda esta opção. Tem de usar esta opção se o seu servidor externo não usar a replicação do identificador global de transações (GTID). Para mais informações, consulte o artigo Usar uma importação gerida para configurar a replicação a partir de bases de dados externas.
- Um ficheiro de despejo requer que crie um ficheiro de despejo do seu servidor externo, o mova para um contentor do Cloud Storage e o importe para o Cloud SQL. Só pode usar esta opção se o seu servidor externo usar a replicação GTID. Para mais informações, consulte o artigo Usar um ficheiro de despejo para configurar a replicação a partir de bases de dados externas.
- Uma importação personalizada requer que crie uma instância principal do Cloud SQL, faça uma importação de dados personalizada com as suas ferramentas preferenciais, rebaixe-a para uma réplica do Cloud SQL e, em seguida, configure a replicação do servidor externo. Esta opção funciona melhor para migrações de bases de dados com vários TB. No entanto, tem de usar a replicação GTID. Para mais informações, consulte o artigo Usar uma importação personalizada para configurar a replicação a partir de grandes bases de dados externas.
-
Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.
- Para o MySQL 5.7 ou posterior, ative a replicação.
- 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.
- Se estiver a usar a versão 5.7 ou posterior do MySQL, ative os binlogs para o principal da nova réplica:
Substitua PARENT_REPLICA_NAME pelo nome da réplica principal.gcloud sql instances patch --enable-bin-log --project=cascade-replica PARENT_REPLICA_NAME
- 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.
- Se estiver a usar o MySQL versão 5.7 ou posterior, ative o registo binário:
Para ativar o registo binário, guarde o seguinte JSON num ficheiro denominado request.JSON e, em seguida, invoque o comando curl para ativar o registo binário.
{ "settings": { "backupConfiguration": { "enabled": false, "binaryLogEnabled": true } } }
- 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. Tenha em atenção que o GTID e os registos binários estão ativados e que as cópias de segurança agendadas estão ativadas na réplica promovida.
- 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
. - Saiba como usar uma importação personalizada para configurar a replicação a partir de grandes bases de dados externas.
- Saiba como usar um ficheiro de despejo para configurar a replicação a partir de bases de dados externas.
- 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
Lista de verificação do servidor externo
Configure a retenção de registos binários
Deve configurar o seu servidor externo para reter registos binários durante, pelo menos, 24 horas.
Comunidade do MySQL
Se o seu servidor externo estiver a usar o MySQL Community Edition, pode usar estes comandos do MySQL para atualizar as definições de retenção do registo binário.
Cloud SQL para MySQL
Se o seu servidor externo estiver a usar o Cloud SQL para MySQL, por predefinição, os registos binários são retidos durante sete dias. Pode alterar esta definição.
Amazon RDS e Aurora
Se o seu servidor externo for uma instância do Amazon RDS, pode usar este comando para atualizar as definições de retenção do registo binário:
call mysql.rds_set_configuration('binlog retention ', HOURS);
Propriedade | Descrição |
---|---|
HORAS | O número total de horas de registos binários que a instância do Amazon RDS deve reter. |
Para mais informações, consulte o artigo mysql.rds_set_configuration.
Microsoft Azure
Por predefinição, o registo binário está ativado. Para mais informações, consulte a documentação da Microsoft.
Crie uma conta de utilizador de replicação
Tem de existir uma conta de utilizador do MySQL dedicada à gestão da replicação para a réplica do Cloud SQL no seu servidor externo. Esta conta de utilizador só deve ser usada para gerir a replicação. Consoante a abordagem de migração que usar, pode ter de conceder autorizações ao utilizador mais tarde.
Para adicionar uma conta de utilizador de replicação, abra um terminal no servidor externo e introduza estes comandos do MySQL:
MySQL
CREATE USER 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD'; GRANT SELECT, SHOW VIEW ON *.* TO 'USERNAME'@'HOST'; FLUSH PRIVILEGES;
exemplo
CREATE USER 'replicationUser'@'%' IDENTIFIED BY '8*&fwwd';
GRANT SELECT, SHOW VIEW ON *.* TO 'replicationUser'@'%';
FLUSH PRIVILEGES;
Propriedade | Descrição |
---|---|
USERNAME | A conta de utilizador de replicação no servidor externo. |
PASSWORD | A palavra-passe da conta de utilizador de replicação. |
HOST | Defina esta opção como % para aceitar todas as ligações de qualquer anfitrião.
Num passo posterior, isto é alterado para aceitar apenas ligações da réplica do Cloud SQL. |
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.
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", "sslOption": "SSL_OPTION" } }
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": "MYSQL_5_7",
"onPremisesConfiguration": {
"hostPort": "192.0.2.0:3306",
"username": "replicationUser",
"password": "486#@%*@",
"sslOption": "REQUIRE"
}
}
Exemplo de ficheiro de captura
// example of source.json for external server that
// - initiates replication from a file
// - uses SSL/TLS
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "MYSQL_5_7",
"onPremisesConfiguration": {
"hostPort": "192.0.2.0:"3306",
"username": "replicationUser",
"password": "486#@%*@",
"dumpFilePath": "gs://replica-bucket/source-database.sql.gz",
"caCertificate": "content of your certificate",
"clientCertificate": "content of your certificate",
"clientKey": "content of your client key",
"sslOption": "REQUIRE"
}
}
Exemplo de importação personalizada
// example of source.json for external server that
// - initiates replication from a Cloud SQL custom import
// - doesn't use SSL/TLS
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "MYSQL_5_7",
"onPremisesConfiguration": {
"hostPort": "192.0.2.0:3306",
"username": "replicationUser",
"password": "486#@%*@",
"sslOption": "REQUIRE"
}
}
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 MYSQL_5_7 , MYSQL_8_0 ou MYSQL_8_4 . |
SOURCE HOST | O endereço IPv4 e a porta do servidor externo ou o endereço DNS do servidor externo. Se usar um endereço DNS, este pode conter até 60 carateres. Se o servidor externo estiver alojado
no Cloud SQL, a porta é 3306 . |
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.
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": { "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": "MYSQL_5_7",
"onPremisesConfiguration": {
"username": "newReplicationUser",
"password": "525#@%*@"
}
}
Exemplo de ficheiro de captura
// example of source.json for external server that
// - initiates replication from a file
// - uses SSL/TLS
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "MYSQL_5_7",
"onPremisesConfiguration": {
"username": "newReplicationUser",
"password": "486#@%*@"
}
}
Exemplo de importação personalizada
// example of source.json for external server that
// - initiates replication from a Cloud SQL custom import
// - doesn't use SSL/TLS
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "MYSQL_5_7",
"onPremisesConfiguration": {
"username": "newReplicationUser",
"password": "486#@%*@"
}
}
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
MYSQL_5_6 , MYSQL_5_7 , MYSQL_8_0 ou MYSQL_8_4 .
|
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": "MYSQL_8_0", "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
MYSQL_5_6 , MYSQL_5_7 , MYSQL_8_0 ou MYSQL_8_4 .
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:3306 |
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 root \ --host=% \ --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 Gerir utilizadores com a autenticação integrada.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
Existem três opções para realizar o carregamento inicial de dados do servidor externo para a réplica do Cloud SQL:
Qual é a opção mais adequada a si?
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.
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.
Só pode criar réplicas em cascata para a sua instância do Cloud SQL se estiver a usar a replicação GTID.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: