Utilize o Data Transmission Service (DTS) para sincronizar dados de um banco de dados PostgreSQL auto-gerenciado para PolarDB for PostgreSQL (Compatible with Oracle).
Pré-requisitos
-
Disponha de um banco de dados PostgreSQL auto-gerenciado de origem e de um cluster PolarDB for PostgreSQL (Compatible with Oracle) de destino.
NotaPara criar um cluster PolarDB for PostgreSQL (Compatible with Oracle), consulte {{XREF_0}}.
Para verificar as versões compatíveis dos bancos de dados de origem e de destino, consulte {{XREF_1}}.
O cluster PolarDB for PostgreSQL (Compatible with Oracle) de destino deve possuir mais espaço de armazenamento do que o banco de dados PostgreSQL auto-gerenciado de origem.
Observações de uso
Durante a sincronização de esquema, o DTS sincroniza chaves estrangeiras do banco de dados de origem para o banco de dados de destino.
Nas fases de sincronização total e incremental de dados, o DTS desativa temporariamente as verificações de restrições e as operações em cascata de chaves estrangeiras no nível da sessão. Podem ocorrer inconsistências de dados caso operações de atualização ou exclusão em cascata sejam executadas no banco de dados de origem enquanto a tarefa estiver em execução.
Tipo | Descrição |
Limites do banco de dados de origem |
|
Outros limites |
|
Preços
|
Tipo de sincronização |
Tarifas |
|
Sincronização de esquema e sincronização total |
Gratuito. |
|
Sincronização incremental |
Sujeito a tarifas. Consulte {{XREF_4}}. |
Topologias de sincronização
Sincronização unidirecional um para um
Sincronização unidirecional um para muitos
Sincronização unidirecional em cascata
Sincronização unidirecional muitos para um
Para mais informações sobre topologias de sincronização, consulte {{XREF_5}}.
Objetos suportados
-
SCHEMA,TABLE.NotaIsso inclui
PRIMARY KEY,UNIQUE KEY,FOREIGN KEY,DATATYPE(tipos de dados nativos) eDEFAULT CONSTRAINT. VIEW,PROCEDURE(requer PostgreSQL 11 ou superior),FUNCTION,RULE,SEQUENCE,EXTENSION,TRIGGER,AGGREGATE,INDEX,OPERATOR,DOMAIN.
Operações SQL suportadas
|
Tipo de operação |
Operação SQL |
|
DML |
|
|
DDL |
|
Requisitos de permissão para contas de banco de dados
|
Banco de dados |
Permissões necessárias |
Criação e autorização de conta |
|
PostgreSQL auto-gerenciado |
Permissão de superusuário. |
Use a instrução CREATE USER e gerencie as permissões do usuário. |
|
PolarDB for PostgreSQL (Oracle-compatible) |
Permissão de proprietário (owner) no banco de dados. |
{{XREF_8}}. Nota
O proprietário do banco de dados é especificado no momento da criação do banco. |
Preparação
As etapas a seguir aplicam-se a sistemas Linux.
Conclua as seguintes preparações para todas as versões do PostgreSQL auto-gerenciado.
Faça login no servidor que hospeda o banco de dados PostgreSQL auto-gerenciado.
-
Execute o seguinte comando para verificar a quantidade de slots de replicação atualmente em uso:
/usr/bin/install -c -m 755 ali_decoding.so '/usr/local/pgsql/lib/ali_decoding.so' /usr/bin/install -c -m 644 ./ali_decoding.control '/usr/local/pgsql/share/extension/' /usr/bin/install -c -m 644 ./ali_decoding--0.0.1.sql ./ali_decoding--unpackaged--0.0.1.sql '/usr/local/pgsql/share/extension/' /usr/bin/install -c -m 755 ali_decoding.so '/usr/local/pgsql/lib/' -
Modifique o arquivo de configuração
postgresql.conf: definawal_levelcomologicale certifique-se de quemax_wal_sendersemax_replication_slotssejam maiores que a soma dos slots de replicação já em uso e o número de instâncias DTS que você planeja criar tendo este banco PostgreSQL auto-gerenciado como origem./usr/bin/install -c -m 755 ali_decoding.so '/usr/local/pgsql/lib/ali_decoding.so' /usr/bin/install -c -m 644 ./ali_decoding.control '/usr/local/pgsql/share/extension/' /usr/bin/install -c -m 644 ./ali_decoding--0.0.1.sql ./ali_decoding--unpackaged--0.0.1.sql '/usr/local/pgsql/share/extension/' /usr/bin/install -c -m 755 ali_decoding.so '/usr/local/pgsql/lib/'NotaApós modificar o arquivo de configuração, reinicie o banco de dados PostgreSQL auto-gerenciado para aplicar as alterações.
-
Adicione os endereços IP do DTS ao arquivo de configuração pg_hba.conf do banco de dados PostgreSQL auto-gerenciado. Adicione apenas o intervalo de IPs do DTS correspondente à região onde o banco de dados de destino está localizado. Para mais informações, consulte {{XREF_9}}.
NotaApós modificar o arquivo de configuração, execute o comando
SELECT pg_reload_conf();ou reinicie o banco de dados PostgreSQL auto-gerenciado para aplicar as alterações.Para mais detalhes sobre o arquivo de configuração, consulte The pg_hba.conf File. Caso já tenha definido o endereço confiável como
0.0.0.0/0(conforme exemplo abaixo), pule esta etapa.
/usr/bin/install -c -m 755 ali_decoding.so '/usr/local/pgsql/lib/ali_decoding.so' /usr/bin/install -c -m 644 ./ali_decoding.control '/usr/local/pgsql/share/extension/' /usr/bin/install -c -m 644 ./ali_decoding--0.0.1.sql ./ali_decoding--unpackaged--0.0.1.sql '/usr/local/pgsql/share/extension/' /usr/bin/install -c -m 755 ali_decoding.so '/usr/local/pgsql/lib/' Na instância do banco de dados de destino, crie os bancos de dados e esquemas correspondentes aos objetos que você planeja sincronizar.
Se a versão do seu PostgreSQL auto-gerenciado estiver entre 9.4.8 e 10.0, conclua também as seguintes preparações.
-
Baixe o código-fonte do PostgreSQL e, em seguida, compile-o e instale-o.
Faça login no servidor que hospeda o banco de dados PostgreSQL auto-gerenciado.
Com base na versão do banco de dados PostgreSQL auto-gerenciado de origem, baixe o código-fonte da versão correspondente no site oficial do PostgreSQL.
-
Execute os comandos
sudo ./configure,sudo makeesudo make installem sequência para configurar, compilar e instalar o código-fonte.ImportanteAo compilar e instalar o PostgreSQL, a versão do sistema operacional do PostgreSQL deve corresponder à versão do GCC (GNU Compiler Collection).
Se
sudo ./configurefalhar, ajuste o comando com base na mensagem de erro. Por exemplo, se o erro forreadline library not found. Use --without-readline to disable readline support., altere o comando parasudo ./configure --without-readline.Caso instale o PostgreSQL de outra forma, compile o ali_decoding em um ambiente de teste que possua a mesma versão do sistema operacional e do GCC.
-
Baixe o plug-in ali_decoding fornecido pelo DTS e, em seguida, compile-o e instale-o.
Baixe o ali_decoding.
-
Copie todo o diretório ali_decoding para o diretório contrib do PostgreSQL compilado e instalado.
/usr/bin/install -c -m 755 ali_decoding.so '/usr/local/pgsql/lib/ali_decoding.so' /usr/bin/install -c -m 644 ./ali_decoding.control '/usr/local/pgsql/share/extension/' /usr/bin/install -c -m 644 ./ali_decoding--0.0.1.sql ./ali_decoding--unpackaged--0.0.1.sql '/usr/local/pgsql/share/extension/' /usr/bin/install -c -m 755 ali_decoding.so '/usr/local/pgsql/lib/' -
Acesse o diretório ali_decoding e substitua o conteúdo do Makefile pelo seguinte:
/usr/bin/install -c -m 755 ali_decoding.so '/usr/local/pgsql/lib/ali_decoding.so' /usr/bin/install -c -m 644 ./ali_decoding.control '/usr/local/pgsql/share/extension/' /usr/bin/install -c -m 644 ./ali_decoding--0.0.1.sql ./ali_decoding--unpackaged--0.0.1.sql '/usr/local/pgsql/share/extension/' /usr/bin/install -c -m 755 ali_decoding.so '/usr/local/pgsql/lib/' Acesse o diretório ali_decoding e execute os comandos
sudo makeesudo make installem sequência para compilar o ali_decoding e gerar os arquivos necessários à sua instalação.-
Copie os seguintes arquivos para os locais especificados.
/usr/bin/install -c -m 755 ali_decoding.so '/usr/local/pgsql/lib/ali_decoding.so' /usr/bin/install -c -m 644 ./ali_decoding.control '/usr/local/pgsql/share/extension/' /usr/bin/install -c -m 644 ./ali_decoding--0.0.1.sql ./ali_decoding--unpackaged--0.0.1.sql '/usr/local/pgsql/share/extension/' /usr/bin/install -c -m 755 ali_decoding.so '/usr/local/pgsql/lib/'
Na instância do banco de dados de destino, crie os bancos de dados e esquemas correspondentes aos objetos que você planeja sincronizar.
Procedimento
-
Acesse a página da lista de tarefas de sincronização da região de destino. Utilize um dos dois métodos abaixo:
Pelo console do DTS
Faça login no console do Data Transmission Service (DTS).
No painel de navegação à esquerda, clique em Data Synchronization.
No canto superior esquerdo da página, selecione a região onde a instância de sincronização está localizada.
Pelo console do DMS
NotaAs operações reais podem variar dependendo do modo e layout do console do DMS. Para mais informações, consulte {{XREF_10}} e {{XREF_11}}.
Faça login no Data Management (DMS).
Na barra de menu superior, escolha .
À direita de Data Synchronization Tasks, selecione a região onde a instância de sincronização está localizada.
Clique em Create Task para abrir a página de configuração da tarefa.
-
Configure os bancos de dados de origem e de destino.
Categoria
Parâmetro
Descrição
N/A
Task Name
O DTS gera automaticamente um nome para a tarefa. Recomendamos definir um nome descritivo para facilitar a identificação. O nome não precisa ser único.
Source Database
Select Existing Connection
-
Para usar uma instância de banco de dados que foi {{XREF_12}} (recém-criada ou salva), selecione-a na lista suspensa. As informações do banco serão configuradas automaticamente.
NotaNo console do DMS, este item de configuração chama-se Select a DMS database instance..
-
Se você ainda não adicionou a instância ao sistema ou não deseja usar uma instância já adicionada, configure manualmente as informações do banco de dados abaixo.
Database Type
Selecione PostgreSQL.
Access Method
Selecione Cloud Enterprise Network (CEN).
Instance Region
Selecione a região onde o banco de dados PostgreSQL auto-gerenciado está localizado.
Cross-account
Se estiver sincronizando dados dentro da mesma conta Alibaba Cloud, selecione No.
Connected VPC
Selecione a VPC conectada ao banco de dados PostgreSQL auto-gerenciado.
IP address
Insira o nome de domínio ou endereço IP do banco de dados PostgreSQL auto-gerenciado.
Port
Insira o número da porta utilizada pelo banco de dados PostgreSQL auto-gerenciado. O valor padrão é 5432.
Database Name
Insira o nome do banco de dados que contém os objetos a serem sincronizados.
Database Account
Insira a conta do banco de dados PostgreSQL auto-gerenciado. Para informações sobre as permissões necessárias, consulte {{XREF_13}}.
Database Password
Insira a senha correspondente à conta do banco de dados.
Encryption
Define se a conexão com o banco de dados de origem será criptografada. Configure este parâmetro conforme suas necessidades de negócio. Neste exemplo, Non-encrypted está selecionado.
Para estabelecer uma conexão criptografada via SSL com o banco de dados de origem, siga estas etapas: Selecione SSL-encrypted, faça upload do CA Certificate, Client Certificate e Private Key of Client Certificate conforme necessário e, em seguida, especifique a Private Key Password of Client Certificate.
Nota-
Se definir Encryption como SSL-encrypted para um banco de dados PostgreSQL auto-gerenciado, você deve fazer upload do CA Certificate.
-
Para utilizar o certificado de cliente, faça upload do Client Certificate e da Private Key of Client Certificate e especifique a Private Key Password of Client Certificate.
-
Para informações sobre como configurar criptografia SSL em uma instância ApsaraDB RDS for PostgreSQL, consulte {{XREF_14}}.
Destination Database
Select Existing Connection
-
Para usar uma instância de banco de dados que foi {{XREF_15}} (recém-criada ou salva), selecione-a na lista suspensa. As informações do banco serão configuradas automaticamente.
NotaNo console do DMS, este item de configuração chama-se Select a DMS database instance..
-
Se você ainda não adicionou a instância ao sistema ou não deseja usar uma instância já adicionada, configure manualmente as informações do banco de dados abaixo.
Database Type
Selecione PolarDB (Compatible with Oracle).
Connection Type
Selecione Express Connect, VPN Gateway, or Smart Access Gateway.
Instance Region
Selecione a região onde o cluster PolarDB for PostgreSQL (Compatible with Oracle) de destino está localizado.
Connected VPC
Selecione a VPC conectada ao cluster PolarDB for PostgreSQL (Compatible with Oracle).
Domain Name or IP Address
Insira o endpoint do nó primário no cluster PolarDB for PostgreSQL (Compatible with Oracle) de destino.
NotaExecute o comando ping no seu computador para obter o endereço IP do endpoint de conexão direta do cluster PolarDB for PostgreSQL (Compatible with Oracle) de destino.
Port
Insira o número da porta utilizada pelo banco de dados de destino. O valor padrão é 1521.
Database Name
Insira o nome do banco de dados de destino que contém os objetos a serem sincronizados na instância PolarDB for PostgreSQL (Compatible with Oracle).
Database Account
Insira a conta do banco de dados da instância PolarDB for PostgreSQL (Compatible with Oracle) de destino. Para informações sobre as permissões necessárias, consulte {{XREF_16}}.
Database Password
Insira a senha correspondente à conta do banco de dados.
-
-
Após concluir a configuração, clique em Test Connectivity and Proceed na parte inferior da página.
NotaCertifique-se de que os blocos CIDR de endereços IP dos servidores DTS foram adicionados às configurações de segurança dos bancos de dados de origem e de destino para permitir o acesso desses servidores. Isso pode ser feito automática ou manualmente. Para mais informações, consulte {{XREF_17}}.
Se o banco de dados de origem ou de destino for auto-gerenciado (onde o Access Method não é Alibaba Cloud Instance), clique também em Test Connectivity na caixa de diálogo CIDR Blocks of DTS Servers.
-
Configure os objetos da tarefa.
-
Na página Configure Objects, configure os objetos a sincronizar.
Parâmetro
Descrição
Synchronization Types
Incremental Data Synchronization está selecionado. Por padrão, você também deve selecionar Schema Synchronization e Full Data Synchronization. Após o pré-check, o DTS realiza uma sincronização total dos dados dos objetos selecionados da instância de origem para o cluster de destino. Isso serve como base para a subsequente sincronização incremental de dados.
Processing Mode of Conflicting Tables
-
Precheck and Report Errors: Verifica se existe uma tabela com o mesmo nome no banco de dados de destino. Se não existir, o pré-check é aprovado. Se existir, o pré-check falha e a tarefa de sincronização não inicia.
NotaCaso não possa excluir ou renomear a tabela homônima no banco de dados de destino, mapeie-a para um nome diferente. Para mais informações, consulte {{XREF_18}}.
-
Ignore Errors and Proceed: Ignora a verificação de nomes de tabelas duplicados no banco de dados de destino.
AvisoSelecionar Ignore Errors and Proceed pode causar inconsistência de dados e colocar seu negócio em risco. Por exemplo:
-
Se os esquemas das tabelas forem idênticos e um registro no banco de dados de destino tiver a mesma chave primária ou chave exclusiva de um registro na origem:
-
Durante a sincronização total, o DTS mantém o registro no cluster de destino. O registro correspondente da origem não é sincronizado.
-
Durante a sincronização incremental, o registro da origem sobrescreve o registro no banco de dados de destino.
-
-
Se os esquemas das tabelas forem diferentes, a sincronização inicial pode falhar. Isso pode resultar na sincronização parcial de colunas ou falha completa. Prossiga com cautela.
-
Source Objects
Na caixa Source Objects, clique em um objeto a sincronizar e, em seguida, clique em
para movê-lo para a caixa Selected Objects.Nota-
É possível selecionar objetos de sincronização no nível de esquema ou de tabela. Se selecionar tabelas, outros objetos como views, triggers e stored procedures não serão sincronizados para o destino.
-
Se as tabelas a sincronizar contiverem colunas do tipo SERIAL e você selecionar Synchronization Types incluindo Schema Synchronization, recomendamos selecionar também Sequence ou sincronizar todo o esquema.
Selected Objects
-
Para renomear um único objeto de sincronização na instância de destino, clique com o botão direito no objeto dentro da caixa Selected Objects. Para mais informações sobre renomeação de objetos, consulte {{XREF_19}}.
-
Para alterar em lote os nomes de vários objetos de sincronização na instância de destino, clique em Batch Edit no canto superior direito da caixa Selected Objects. Para mais informações, consulte {{XREF_20}}.
Nota-
Para selecionar as operações SQL a sincronizar para um banco de dados ou tabela específico, clique com o botão direito no objeto na caixa Selected Objects e selecione as operações desejadas na caixa de diálogo exibida.
-
Para filtrar dados usando uma cláusula WHERE, clique com o botão direito na tabela na caixa Selected Objects e especifique a condição de filtro na caixa de diálogo exibida. Para mais informações, consulte {{XREF_21}}.
-
-
Clique em Next: Advanced Settings para configurar parâmetros avançados.
Parâmetro
Descrição
Dedicated Cluster for Task Scheduling
Por padrão, o DTS agenda tarefas em um cluster compartilhado, não sendo necessário selecionar um cluster. Para um desempenho mais estável, adquira um cluster dedicado para executar tarefas de sincronização do DTS. Para mais informações, consulte {{XREF_22}}.
Retry Time for Failed Connections
Após o início da tarefa de sincronização, se a conexão com o banco de dados de origem ou de destino falhar, o DTS reportará um erro e iniciará imediatamente novas tentativas de conexão. A duração padrão de tentativa é de 720 minutos. Especifique uma duração personalizada entre 10 e 1.440 minutos. Recomendamos definir pelo menos 30 minutos. Se o DTS reconectar com sucesso dentro do período especificado, a tarefa de sincronização será retomada automaticamente. Caso contrário, a tarefa falhará.
Nota-
Se você tiver várias instâncias DTS (por exemplo, Instância A e Instância B) compartilhando a mesma origem ou destino, e definir o tempo de tentativa de rede como 30 minutos para a Instância A e 60 minutos para a Instância B, a menor duração de 30 minutos será aplicada a ambas.
-
Como o DTS cobra pelo tempo de execução da tarefa durante o período de tentativa de reconexão, recomendamos personalizar a duração conforme suas necessidades de negócio ou liberar a instância DTS assim que possível após a liberação das instâncias de banco de dados de origem e de destino.
Retry Time for Other Issues
Após o início da tarefa de sincronização, se ocorrerem outros problemas não relacionados à conectividade com o banco de dados de origem ou de destino (como exceções na execução de DDL ou DML), o DTS reportará um erro e iniciará imediatamente tentativas contínuas de correção. A duração padrão de tentativa é de 10 minutos. Personalize a duração entre 1 e 1.440 minutos. Recomendamos definir pelo menos 10 minutos. Se as operações relevantes forem bem-sucedidas dentro do período definido, a tarefa de sincronização será retomada automaticamente. Caso contrário, a tarefa falhará.
ImportanteO valor de Retry Time for Other Issues deve ser menor que o valor de Retry Time for Failed Connections.
Enable Throttling for Full Data Synchronization
Durante a fase de sincronização total, o DTS consome recursos de leitura e escrita dos bancos de dados de origem e de destino, o que pode aumentar a carga sobre eles. Para reduzir essa carga, defina um limite de taxa para a tarefa de sincronização total configurando os parâmetros Queries per second (QPS) to the source database, RPS of Full Data Migration e Data migration speed for full migration (MB/s).
Nota-
Este item de configuração está disponível apenas quando Synchronization Types estiver definido como Full Data Synchronization.
-
Também é possível {{XREF_23}} após a instância de sincronização estar em execução.
Enable Throttling for Incremental Data Synchronization
Defina também um limite de taxa para a tarefa de sincronização incremental. Para aliviar a pressão no banco de dados de destino, configure RPS of Incremental Data Synchronization e Data synchronization speed for incremental synchronization (MB/s).
Environment Tag
Selecione uma tag de ambiente para identificar a instância. Este parâmetro é opcional e pode ser deixado em branco neste exemplo.
Configure ETL
Escolha se deseja ativar o recurso de extração, transformação e carga (ETL). Para mais informações, consulte {{XREF_24}} Valores válidos:
-
Yes: Ativa o recurso ETL. Insira instruções de processamento de dados no editor de código. Para mais informações, consulte {{XREF_25}}.
-
No: Desativa o recurso ETL.
Monitoring and Alerting
Especifique se deseja configurar alertas. Se a sincronização falhar ou a latência exceder o limiar especificado, uma notificação será enviada a um contato de alerta.
-
No: Nenhum alerta é configurado.
-
Yes: Configure alertas definindo um limiar de alerta e especificando um notificação de alerta. Para mais informações, consulte {{XREF_26}}.
-
-
Clique em Next: Data Validation para configurar uma tarefa de validação de dados.
Para utilizar o recurso de validação de dados, consulte {{XREF_27}} para instruções de configuração.
-
-
Salve a tarefa e execute um pré-check.
Para visualizar os parâmetros da API para configurar esta instância, passe o mouse sobre o botão Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters no balão exibido.
Após visualizar os parâmetros da API, clique em Next: Save Task Settings and Precheck na parte inferior da página.
NotaAntes do início do trabalho de sincronização, o DTS executa um pré-check. O trabalho só inicia após todos os itens do pré-check serem aprovados.
Se o pré-check falhar, clique em View Details no item com falha. Corrija o problema conforme indicado e execute o pré-check novamente.
-
Se o pré-check retornar um aviso:
Caso um item de verificação falhe e não possa ser ignorado, clique em View Details ao lado do item. Siga as instruções para corrigir o problema e execute o pré-check novamente.
Para itens de verificação que podem ser ignorados, clique em Confirm Alert Details, Ignore, OK e Precheck Again em sequência para ignorar o aviso e reexecutar o pré-check. Optar por suprimir o item de aviso pode causar problemas como inconsistência de dados e representar riscos ao seu negócio.
-
Adquira a instância.
Quando a Success Rate atingir 100%, clique em Next: Purchase Instance.
-
Na página Purchase, selecione o método de faturamento e a especificação de link para a instância de sincronização de dados. A tabela a seguir detalha esses parâmetros.
Categoria
Parâmetro
Descrição
New Instance Class
Método de Faturamento
-
Assinatura: Pagamento realizado na criação da instância. Adequado para necessidades de longo prazo, sendo mais econômico que o pagamento conforme o uso. Quanto maior a duração da assinatura, maior o desconto.
-
Pagamento conforme o uso: Cobrança horária. Ideal para necessidades de curto prazo. Libere a instância logo após o uso para economizar custos.
Configuração do Grupo de Recursos
O grupo de recursos ao qual a instância pertence. O padrão é o grupo de recursos padrão. Para mais informações, consulte {{XREF_28}}.
Especificação do Link
O DTS oferece especificações de sincronização com diferentes níveis de desempenho. A especificação do link de sincronização afeta a taxa de transferência. Escolha uma especificação baseada no seu cenário de negócio. Para mais informações, consulte {{XREF_29}}.
Duração da Assinatura
No modo assinatura, selecione a duração e a quantidade para a instância. Escolha uma assinatura mensal de 1 a 9 meses ou anual de 1, 2, 3 ou 5 anos.
NotaEsta opção está disponível apenas quando o método de faturamento for Subscription.
-
Após concluir a configuração, leia e selecione Data Transmission Service (Pay-as-you-go) Service Terms.
-
Clique em Buy and Start. Na caixa de diálogo OK, clique em OK.
Acompanhe o progresso da tarefa na página Data Synchronization.