A migração avançada é uma solução para migrar dados de bancos de dados grandes com menos tempo de inatividade. Esse recurso está disponível apenas para o PostgreSQL.
Requisitos da origem da migração
Para configurar a origem da migração, é preciso ajustar a instância de origem e os bancos de dados de origem subjacentes.
Versões compatíveis
As versões autogerenciadas do PostgreSQL compatíveis são:
- PostgreSQL: 9.4, 9.5, 9.6, 10, 11, 12, 13, 14 e 15
- AlloyDB Omni: 15
Configuração da instância de origem
A instância de origem precisa incluir o banco de dados postgres padrão. Se ele não existir, será necessário criar um.
A biblioteca pglogical precisa ser instalada na origem e incluída na variável de configuração shared_preload_libraries.
Configuração do banco de dados de origem
A migração migra todos os bancos de dados na instância de origem, exceto os bancos de dados de modelo (template0 e template1 para origens locais). Para cada banco de dados que será migrado, siga estas etapas:
- Instalar extensão: execute
CREATE EXTENSION IF NOT EXISTS pglogicalpara instalar a extensão no banco de dados. - Restrição de chave primária: os dados são migrados apenas para tabelas com chaves primárias. Para tabelas sem chaves primárias, a migração copia apenas o esquema da tabela, não os dados. Além disso, para tabelas sem chaves primárias, essa migração só oferece suporte ao snapshot inicial e às instruções
INSERTdurante a fase de captura de dados alterados (CDC). É necessário processar as instruçõesUPDATEeDELETEmanualmente. Privilégios do usuário: o usuário do banco de dados que você usa para se conectar à instância de origem precisa ter privilégios suficientes no banco de dados padrão postgres, no esquema
pglogicale em todos os esquemas de migração (exceto esquemas de informações e esquemas que começam compg_). Especificamente para o PostgreSQL, conceda os seguintes privilégios:GRANT USAGE on SCHEMA <SCHEMA> to <USER>; GRANT SELECT on ALL TABLES in SCHEMA pglogical to <USER>; GRANT SELECT on ALL TABLES in SCHEMA <SCHEMA> to <USER>; GRANT SELECT on ALL SEQUENCES in SCHEMA <SCHEMA> to <USER>; ALTER USER <USER> with REPLICATION role;
Suporte a DDL
Somente as mudanças na linguagem de manipulação de dados (DML) são sincronizadas automaticamente durante a migração. A linguagem de definição de dados (DDL) precisa ser gerenciada manualmente para garantir que os bancos de dados de origem e destino permaneçam compatíveis durante a migração. Recomendamos usar pglogical.replicate_ddl_command para executar DDL na origem e no destino em um ponto consistente.
Conectividade e autorização
Abra o firewall de rede e configure o arquivo pg_hba.conf para aceitar conexões de entrada do endereço IP de saída de destino (o endpoint de migração), que é fornecido no console do GDC.
Gerenciar migração
Um usuário com o papel de administrador de banco de dados do projeto precisa realizar as etapas a seguir. Use o console do GDC ou a CLI do Distributed Cloud para gerenciar migrações:
Console
- No menu principal, escolha Serviço de banco de dados.
- Clique em Criar migração.
- Na caixa de diálogo Começar, revise os requisitos da fonte e da conectividade.
- Na caixa de diálogo Especifique seu banco de dados de origem, informe o nome do host ou o endereço IP, o nome de usuário, a senha, o tipo de criptografia e o certificado do banco de dados de origem.
- Na caixa de diálogo Configurar seu cluster, especifique o ID do cluster, a senha, a versão do banco de dados, a CPU, a memória e a capacidade de armazenamento do cluster de banco de dados de destino. Escolha memória suficiente para armazenar sua maior tabela.
- Clique em Criar. A criação da migração e do cluster de banco de dados de destino pode levar alguns minutos.
O status muda de
ReconcilingparaReadyquando o cluster está pronto. O status da migração muda paraUnsyncedquando a migração é configurada com êxito. Use as seguintes opções para gerenciar sua migração:- Iniciar: inicia a migração e muda o status para
Running. - Interromper: interrompe a migração e muda o status para
Stopped. - Promover: promove o cluster de banco de dados de destino a um banco de dados independente.
- Excluir: exclui a migração e o cluster de banco de dados de destino criados para essa migração.
- Iniciar: inicia a migração e muda o status para
Faça a rotação periódica da senha do usuário de replicação do banco de dados de origem seguindo estas etapas:
- Acesse Banco de dados de origem e clique em editar Editar.
- Faça as mudanças para girar a senha do usuário de replicação.
- Clique em Salvar para aplicar as alterações.
Depois que a mudança é aplicada, o back-end de migração usa a nova senha.
gdcloud
Antes de usar a CLI do Distributed Cloud, instale e inicialize. Em seguida, faça a autenticação com sua organização.
Crie uma migração:
gdcloud database connection-profiles create DB_ENGINE_TYPE SOURCE_CONNECTION_PROFILE \ --username REPLICATION_USERNAME \ --password REPLICATION_PASSWORD \ --ca-certificate CA_CERT_FILE_PATH gdcloud database migrations create MIGRATION_NAME \ --source SOURCE_CONNECTION_PROFILE \ --destination DESTINATION_DBCLUSTER gdcloud database clusters create DESTINATION_DBCLUSTER \ --database-version DB_VERSION \ --admin-password ADMIN_PASSWORDSubstitua as seguintes variáveis:
DB_ENGINE_TYPE, o tipo de mecanismo de banco de dados para migração. Os valores aceitos são:postgresql.SOURCE_CONNECTION_PROFILE, o nome do novo perfil de conexão.REPLICATION_USERNAME, o nome do usuário de replicação do banco de dados de origem.REPLICATION_PASSWORD, a senha do usuário de replicação do banco de dados de origem.CA_CERT_FILE_PATH, o caminho para o certificado de CA do banco de dados de origem.MIGRATION_NAME, o nome da nova migração.DESTINATION_DBCLUSTER, o nome do cluster de banco de dados de destino.DB_VERSION, a string de versão do novo cluster. Por exemplo,POSTGRESQL_13.ADMIN_PASSWORD, a senha do usuário administrador para o novo cluster.
Inicie uma migração:
gdcloud database migrations start MIGRATION_NAMEInterromper uma migração:
gdcloud database migrations stop MIGRATION_NAMEPromover uma migração:
gdcloud database migrations promote MIGRATION_NAMEListe os perfis de conexão atuais:
gdcloud database connection-profiles list DB_ENGINE_TYPEListe a migração atual:
gdcloud database migrations list --destination DESTINATION_DBCLUSTER
API
Para bancos de dados de origem do PostgreSQL:
Crie um secret para armazenar o certificado de CA do banco de dados de origem:
apiVersion: v1
data:
ca.crt: SOURCE_DB_CA_CERT
kind: Secret
metadata:
annotations:
propagation.gdch.gke.io/target-namespace: USER_PROJECT
name: es-crt-EXTERNAL_SERVER_NAME
namespace: USER_PROJECT
type: Opaque
Crie um secret para armazenar a senha do usuário de migração do banco de dados de origem:
apiVersion: v1
data:
password: SOURCE_DB_USER_PASSWORD
kind: Secret
metadata:
annotations:
propagation.gdch.gke.io/target-namespace: USER_PROJECT
name: es-pw-EXTERNAL_SERVER_NAME
namespace: USER_PROJECT
type: Opaque
Crie um externalserver:
apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
kind: ExternalServer
metadata:
name: EXTERNAL_SERVER_NAME
namespace: USER_PROJECT
spec:
host: SOURCE_DB_HOST
port: 5432
username: SOURCE_DB_USERNAME
password:
name: es-pw-EXTERNAL_SERVER_NAME
namespace: USER_PROJECT
certRef:
name: es-crt-EXTERNAL_SERVER_NAME
namespace: USER_PROJECT
Crie uma migração:
apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
kind: Migration
metadata:
name: MIGRATION_NAME
namespace: USER_PROJECT
spec:
source:
reference:
apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
kind: ExternalServer
name: EXTERNAL_SERVER_NAME
target:
reference:
apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
kind: DBCluster
name: DBCLUSTER_NAME
control: MIGRATION_CONTROL
Substitua as seguintes variáveis:
EXTERNAL_SERVER_NAME: o nome do externalserver que representa o banco de dados de origem.USER_PROJECT: o nome do projeto do usuário em que o externalserver é criado.DBENGINE_NAME: o nome do mecanismo de banco de dados. Os valores aceitos são:postgresql.SOURCE_DB_CA_CERT: o certificado da CA do banco de dados de origem.SOURCE_DB_USER_PASSWORD: a senha do usuário de migração do banco de dados de origem.SOURCE_DB_USERNAME: o nome de usuário da migração do banco de dados de origem.SOURCE_DB_HOST: o endereço do host de migração do banco de dados de origem.MIGRATION_NAME: o nome da operação de migração.DBCLUSTER_NAME: o nome do cluster de banco de dados de destino da migração.MIGRATION_CONTROL: os controles da operação de migração. Precisa serstartoustopquando a migração é criada. Ele precisa serpromotepara promover o cluster de banco de dados de destino da migração.