Para migrar ou consolidar dados Redis entre contas Alibaba Cloud — por exemplo, após uma reestruturação empresarial ou consolidação de contas — utilize o Data Transmission Service (DTS) e configure a sincronização unidirecional de dados entre duas instâncias Tair (Redis OSS-Compatible) pertencentes a contas distintas.
Visão geral
A configuração envolve duas contas atuando em sequência:
|
Etapa |
Conta |
Ação |
|
1. Conceder acesso entre contas |
Conta A (proprietária da origem) |
Crie uma função RAM e defina a Conta B como conta confiável para autorizar o DTS a ler os recursos da Conta A. |
|
2. Configurar a tarefa de sincronização |
Conta B (proprietária do destino) |
Acesse o console DTS e crie a tarefa de sincronização de dados referenciando a função RAM da Etapa 1. |
Pré-requisitos
Antes de começar, verifique se você possui:
Uma instância Tair (Redis OSS-Compatible) de destino já criada
Espaço de armazenamento suficiente na instância de destino; o espaço disponível deve exceder o tamanho total dos dados da instância de origem
Versões de instância compatíveis: sincronize de uma versão mais antiga para uma mais recente ou entre instâncias da mesma versão
Para versões de instância suportadas, consulte Visão geral das soluções de sincronização de dados.
Faturamento
|
Tipo de sincronização |
Taxa |
|
Sincronização de esquema e sincronização completa de dados |
Gratuita |
|
Sincronização incremental de dados |
Cobrada. Para detalhes, consulte Visão geral do faturamento. |
Limitações
Antes de começar
Analise estas restrições antes de configurar a tarefa:
Compatibilidade de versões: Sincronize apenas de uma versão mais antiga para uma mais recente. A sincronização de uma versão mais recente para uma mais antiga pode causar problemas de compatibilidade.
Origem em cluster — apenas comandos de chave única: Se a origem utilizar arquitetura de cluster, execute apenas comandos de chave única durante a sincronização. Comandos que operam em chaves distribuídas em slots diferentes causam um erro
CROSSSLOT Keys in request don't hash to the same slote interrompem o link de sincronização.Tair Enterprise Edition com Persistent Memory: Se a instância de origem for Tair Enterprise Edition usando Persistent Memory como meio de armazenamento, defina o parâmetro
appendonlycomoyesantes de iniciar. Consulte Procedimento.Transport Layer Security (TLS): Se o TLS estiver ativado na instância de origem ou de destino, use uma conexão SSL-encrypted no DTS. O TLSv1.3 não é suportado. Uma instância Tair com TLS ativado não pode ser conectada como tipo Alibaba Cloud Instance no DTS.
Transparent Data Encryption (TDE): Se o TDE estiver ativado em qualquer uma das instâncias, não será possível usar o DTS para sincronização.
Tamanho do backlog de replicação: Para garantir um link de sincronização estável, aumente o valor do parâmetro
repl-backlog-sizeno arquivoredis.conf.Origem Redis autogerenciada — timeout de replicação: Execute
config set repl-timeout 600para definir o timeout de replicação em 600 segundos. Aumente esse valor se a origem contiver grandes volumes de dados.
Durante a sincronização
Mantenha estas restrições em mente enquanto a tarefa estiver em execução:
Não grave dados de outras fontes no destino. A gravação de dados de outras origens no destino causa inconsistência entre a origem e o destino.
Política de memória do destino: Por padrão, as instâncias Tair (Redis OSS-Compatible) usam
volatile-lrupara evicção de dados. Se o destino ficar com pouca memória, os dados poderão ser removidos silenciosamente sem interromper a tarefa, causando inconsistência. Para evitar perda silenciosa de dados, definamaxmemory-policycomonoevictionno destino. Assim, se a memória acabar, a tarefa falhará em vez de remover dados. Para detalhes, consulte Qual é a política de evicção padrão?Cluster de destino sem memória (OOM): Se um shard no cluster de destino atingir seu limite de memória ou se o destino tiver armazenamento insuficiente, a tarefa de sincronização falhará devido a OOM.
Chaves expiradas: Chaves expiradas na origem podem não ser excluídas imediatamente no destino. A contagem de chaves no destino pode ser menor que na origem. Execute o comando
infopara verificar as contagens de chaves.Chave de heartbeat do DTS: O DTS insere uma chave com o prefixo
DTS_REDIS_TIMESTAMP_HEARTBEATno banco de dados de origem para rastrear timestamps de atualização. Se o banco de dados de origem usar arquitetura de cluster, o DTS insere essa chave em cada shard. Essa chave é filtrada durante a sincronização e expira quando a tarefa termina.Relatório de latência: Se a origem for uma instância somente leitura ou se a conta do DTS não tiver permissão SETEX, a latência relatada poderá ser imprecisa.
Alterações de endpoint: Se o endpoint da origem ou do destino mudar durante a sincronização (por exemplo, devido a migração de instância ou failover), a tarefa poderá tentar novamente, sofrer latência, falhar ou causar inconsistência de dados. Verifique o status da tarefa prontamente e reconfigure se necessário.
Dimensionamento da origem: Se a origem for redimensionada (shards adicionados ou removidos) ou sua memória for aumentada durante a sincronização, reconfigure a tarefa. Limpe os dados do destino antes de reconfigurar para manter a consistência.
Failover primário/réplica no destino: Se um failover for acionado no destino, os dados poderão ser gravados apenas na memória e não persistidos na réplica, o que pode causar perda de dados.
-
Gatilhos de ressincronização completa: Os eventos a seguir podem fazer com que todos os dados sejam ressincronizados no destino, resultando em inconsistência temporária:
Uma falha de conexão transitória impede a retomada da tarefa a partir de um ponto de interrupção
Ocorre um failover primário/réplica na instância de origem ou de destino
O endpoint da instância de origem ou de destino é alterado
Os objetos de sincronização da instância DTS são modificados
Recuperação de falha de instância DTS: Se uma instância falhar, o suporte do DTS tentará recuperá-la dentro de 8 horas. A recuperação pode incluir reiniciar a instância DTS ou ajustar seus parâmetros (parâmetros de banco de dados não são modificados). Para parâmetros que podem ser modificados, consulte Modificar parâmetros da instância.
Reinício completo e incremental: Se uma instância DTS que executa tarefas de sincronização completa e incremental for reiniciada, ambas as tarefas reiniciarão do começo.
Comandos suportados para sincronização incremental
Tair (Redis OSS-Compatible) Open-Source Edition
APPEND, BITOP, BLPOP, BRPOP, BRPOPLPUSH, DECR, DECRBY, DEL, EVAL, EVALSHA, EXEC, EXPIRE, EXPIREAT, GEOADD, GETSET, HDEL, HINCRBY, HINCRBYFLOAT, HMSET, HSET, HSETNX, INCR, INCRBY, INCRBYFLOAT, LINSERT, LPOP, LPUSH, LPUSHX, LREM, LSET, LTRIM, MOVE, MSET, MSETNX, MULTI, PERSIST, PEXPIRE, PEXPIREAT, PFADD, PFMERGE, PSETEX, RENAME, RENAMENX, RESTORE, RPOP, RPOPLPUSH, RPUSH, RPUSHX, SADD, SDIFFSTORE, SELECT, SET, SETBIT, SETEX, SETNX, SETRANGE, SINTERSTORE, SMOVE, SPOP, SREM, SUNIONSTORE, SWAPDB\, UNLINK\, XADD, XAUTOCLAIM, XCLAIM, XDEL, XGROUP CREATECONSUMER, XTRIM, ZADD, ZINCRBY, ZINTERSTORE, ZREM, ZREMRANGEBYLEX, ZUNIONSTORE, ZREMRANGEBYRANK, ZREMRANGEBYSCORE
\* SWAPDB e UNLINK são suportados apenas quando a versão do mecanismo de origem é Redis 4.0.
Tair (Redis OSS-Compatible) Enterprise Edition
APPEND, BITOP, BLPOP, BRPOP, BRPOPLPUSH, DECR, DECRBY, DEL, EVAL, EVALSHA, EXEC, EXPIRE, EXPIREAT, GEOADD, GETSET, HDEL, HINCRBY, HINCRBYFLOAT, HMSET, HSET, HSETNX, INCR, INCRBY, INCRBYFLOAT, LINSERT, LPOP, LPUSH, LPUSHX, LREM, LSET, LTRIM, MOVE, MSET, MSETNX, MULTI, PERSIST, PEXPIRE, PEXPIREAT, PFADD, PFMERGE, PSETEX, RENAME, RENAMENX, RPOP, RPOPLPUSH, RPUSH, RPUSHX, SADD, SDIFFSTORE, SELECT, SET, SETBIT, SETEX, SETNX, SETRANGE, SINTERSTORE, SMOVE, SPOP, SREM, SUNIONSTORE, UNLINK, XADD, XAUTOCLAIM, XCLAIM, XDEL, XGROUP CREATECONSUMER, XTRIM, ZADD, ZINCRBY, ZINTERSTORE, ZREM, ZREMRANGEBYLEX, ZUNIONSTORE, ZREMRANGEBYRANK, ZREMRANGEBYSCORE
Comandos com comportamento especial
|
Comando |
Comportamento |
|
PUBLISH |
Não pode ser sincronizado. |
|
EVAL, EVALSHA |
O DTS não consegue confirmar se os scripts Lua foram executados no destino, pois o destino não retorna resultados explícitos de execução durante a sincronização incremental. |
|
SYNC, PSYNC (tipo LIST) |
O DTS não limpa os dados LIST existentes no destino antes de sincronizar. O destino pode conter registros duplicados. |
Etapa 1: Conceder acesso entre contas (Conta A)
Acesse o Console de Gerenciamento Alibaba Cloud usando a conta proprietária da instância Tair de origem (Conta A). Crie uma função RAM e defina a conta proprietária da instância de destino (Conta B) como conta confiável para autorizar a função RAM a acessar os recursos de nuvem da Conta A.
Este recurso suporta comunicação entre sites, permitindo a comunicação entre contas da China continental (site da China) e contas do site internacional.
Para instruções passo a passo, consulte Configurar autorização RAM para tarefas DTS entre contas.
Etapa 2: Configurar a tarefa de sincronização (Conta B)
Faça login usando a conta proprietária da instância Tair de destino (Conta B) e conclua as etapas a seguir.
Acessar a página de Sincronização de Dados
Console DTS
Acesse o console DTS.console DTS
No painel de navegação à esquerda, clique em Data Synchronization.
No canto superior esquerdo, selecione a região onde a tarefa de sincronização residirá.
Console DMS
Nota
A navegação exata pode variar dependendo do modo e layout do seu console DMS. Para detalhes, consulte Modo simples e Personalizar o layout e estilo do console DMS.
Acesse o console DMS.console DMS
Na barra de navegação superior, passe o mouse sobre Data + AI e escolha DTS (DTS) > Data Synchronization.
Na lista suspensa à direita de Data Synchronization Tasks, selecione a região onde a instância de sincronização reside.
Criar e configurar a tarefa
Clique em Create Task.
-
(Opcional) Clique em New Configuration Page no canto superior direito.
Pule esta etapa se o botão Back to Previous Version já estiver exibido. As páginas de configuração nova e anterior podem ter parâmetros diferentes; use a nova versão.
-
Configure os bancos de dados de origem e de destino.
AvisoApós configurar os bancos de dados de origem e de destino, leia os Limits exibidos na página antes de prosseguir. Ignorar isso pode causar falhas na tarefa ou inconsistência de dados.
Banco de dados de origem
Parâmetro
Valor
Task Name
O DTS gera um nome automaticamente. Especifique um nome descritivo para facilitar a identificação. O nome não precisa ser único.
Select Existing Connection
Se a instância de origem já estiver registrada no DTS, selecione-a na lista suspensa e o DTS preencherá os campos restantes automaticamente. Caso contrário, configure os campos abaixo.
Database Type
Selecione Tair/Redis.
Access Method
Selecione Alibaba Cloud Instance.
Instance Region
Selecione a região da instância Tair de origem.
Replicate Data Across Alibaba Cloud Accounts
Selecione Yesconfigurações de notificação de alerta.
Alibaba Cloud Account
Insira o ID da conta Alibaba Cloud (conta principal) proprietária da instância de origem.
RAM Role Name
Insira o nome da função RAM criada na Etapa 1.
Instance ID
Selecione o ID da instância Tair de origem.
Authentication Method
Selecione conforme suas necessidades. Este exemplo usa Password Login. Se você selecionar Secret-free login, certifique-se de que o acesso sem senha esteja ativado na instância de origem. Consulte Ativar acesso sem senha.
Database Password
Insira credenciais com permissão de leitura. Para contas personalizadas, use o formato
<account>:<password>(por exemplo,testaccount:Test1234). Para a conta padrão (nome de usuário igual ao ID da instância), insira a senha diretamente. Deixe em branco se nenhuma senha estiver definida. Para redefinir a senha, consulte Modificar ou redefinir a senha.Encryption
Selecione Non-encrypted ou SSL-encrypted. Se você selecionar SSL-encrypted para uma instância Redis autogerenciada, faça upload de um CA Certificate e insira uma CA Key.
Banco de dados de destino
Parâmetro
Valor
Select Existing Connection
Se a instância de destino já estiver registrada no DTS, selecione-a na lista suspensa. Caso contrário, configure os campos abaixo.
Database Type
Selecione Tair/Redis.
Access Method
Selecione Alibaba Cloud Instance.
Instance Region
Selecione a região da instância Tair de destino.
Replicate Data Across Alibaba Cloud Accounts
Selecione No, pois a configuração entre contas aplica-se apenas à origem.
Instance ID
Selecione o ID da instância Tair de destino.
Authentication Method
Selecione conforme suas necessidades. Este exemplo usa Password Login. Se você selecionar Secret-free login, certifique-se de que o acesso sem senha esteja ativado. Consulte Ativar acesso sem senha.
Database Password
Insira credenciais com permissões de leitura e gravação. Para contas personalizadas, use o formato
<account>:<password>. Para a conta padrão, insira a senha diretamente. Para redefinir, consulte Modificar ou redefinir a senha.Encryption
Selecione Non-encrypted ou SSL-encrypted.
-
Clique em Test Connectivity and Proceed.
Adicione os blocos CIDR dos servidores DTS à lista de permissões de segurança das instâncias de origem e de destino. Isso pode ser feito automática ou manualmente. Para detalhes, consulte Adicionar endereços IP de servidores DTS a uma lista de permissões . Se alguma das instâncias for autogerenciada (o método de acesso não é Alibaba Cloud Instance ), clique em Test Connectivity na caixa de diálogo CIDR Blocks of DTS Servers .
-
Configure os objetos a serem sincronizados. Na etapa Configure Objects, defina os seguintes parâmetros:
Parâmetro Descrição Synchronization Types Por padrão, tanto Full Data Synchronization quanto Incremental Data Synchronization estão selecionados. Se você selecionar Incremental Data Synchronization, selecione também Full Data Synchronization, pois a sincronização completa é executada primeiro e fornece a base para a sincronização incremental. Synchronization Topology Selecione One-way Synchronization. Este parâmetro está disponível apenas quando tanto a origem quanto o destino são instâncias Tair (Enterprise Edition). Processing Mode of Conflicting Tables Precheck and Report Errors: falha na pré-verificação se já existirem dados no destino. Ignore Errors and Proceed: ignora a verificação de existência de dados no destino. AvisoEscolher Ignore Errors and Proceed pode causar perda de dados, pois os registros da origem sobrescrevem os registros do destino com as mesmas chaves.
Source Objects Selecione um ou mais bancos de dados na lista Source Objects e clique no ícone de seta para movê-los para Selected Objects. Apenas bancos de dados podem ser selecionados como objetos de sincronização; chaves individuais não podem. Selected Objects Para mapear DB 0–255 ou filtrar por prefixo de chave, clique com o botão direito em um banco de dados em Selected Objects e escolha Edit Schema. Consulte Mapear nomes de objetos e Especificar condições de filtro. Nomes de objetos não podem ser mapeados em massa. -
Clique em Next: Advanced Settings e configure os parâmetros avançados:
Parâmetro Descrição Dedicated Cluster for Task Scheduling Por padrão, o DTS agenda a tarefa em um cluster compartilhado. Para melhorar a estabilidade, adquira um cluster dedicado. Consulte O que é um cluster dedicado DTS. Retry Time for Failed Connections Tempo durante o qual o DTS tenta reconectar após uma falha de conexão antes de parar a tarefa. Valores válidos: 10–1.440 minutos. Padrão: 720. Defina um valor maior que 30. Se várias tarefas compartilharem a mesma origem ou destino, o menor tempo de tentativa se aplica. O DTS cobra pela instância durante as tentativas; defina este valor conforme suas necessidades e libere a instância DTS prontamente se a origem ou o destino for liberado. Retry Time for Other Issues Tempo durante o qual o DTS tenta repetir operações DDL ou DML com falha. Valores válidos: 1–1.440 minutos. Padrão: 10. Defina um valor maior que 10. Este valor deve ser menor que Retry Time for Failed Connections. Enable Throttling for Full Data Synchronization Limita o uso de recursos de leitura/gravação durante a sincronização completa para reduzir a carga em ambas as instâncias. Configure Queries per second (QPS) to the source database, RPS of Full Data Migration e Data migration speed for full migration (MB/s). Disponível apenas quando Full Data Synchronization estiver selecionado. Enable Throttling for Incremental Data Synchronization Limita o uso de recursos durante a sincronização incremental. Configure RPS of Incremental Data Synchronization e Data synchronization speed for incremental synchronization (MB/s). Extend Expiration Time of Destination Database Key Estende o TTL das chaves sincronizadas no destino por um número especificado de segundos. Configure isso ao usar comandos baseados em expiração, como EXPIRE, PEXPIRE, EXPIREAT ou PEXPIREAT. NotaEm um cenário de bloqueio distribuído, um TTL estendido pode atrasar a liberação do bloqueio.
Environment Tag Um rótulo para identificar a instância DTS. Opcional. Configure ETL Define se o processamento de extração, transformação e carga (ETL) será ativado. Selecione Yes para configurar ETL usando o editor de código. Consulte Configurar ETL em uma tarefa de migração ou sincronização de dados. Selecione No para pular. Para uma visão geral, consulte O que é ETL? Monitoring and Alerting Define se alertas serão configurados para a tarefa de sincronização. Selecione Yes para definir limiares de alerta e contatos de notificação. Alertas são acionados em caso de falha na tarefa ou quando a latência excede o limiar. Consulte Configurar monitoramento e alertas ao criar uma tarefa DTS. Clique em Next Step: Data Verification para configurar a verificação de dados (opcional). Consulte Configurar uma tarefa de verificação de dados.
-
Salve a tarefa e execute uma pré-verificação.
Para visualizar os parâmetros da API para esta configuração de tarefa, passe o mouse sobre Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters.
Clique em Next: Save Task Settings and Precheck.
O DTS executa uma pré-verificação antes de iniciar a tarefa. A tarefa só começa após a aprovação na pré-verificação. - Se a pré-verificação falhar, clique em View Details ao lado de cada item com falha, corrija o problema e execute a pré-verificação novamente. - Se a pré-verificação gerar um alerta que possa ser ignorado, clique em Confirm Alert Details , clique em Ignore na caixa de diálogo e, em seguida, clique em Precheck Again . Ignorar alertas pode resultar em inconsistência de dados.
-
Adquira uma instância.
Aguarde até que a Success Rate atinja 100% e clique em Next: Purchase Instance.
-
Na página de compra, configure o faturamento e as definições da instância:
Seção
Parâmetro Descrição New Instance Class
Billing Method
Subscription: pagamento antecipado; mais econômico para uso de longo prazo. Pay-as-you-go: faturamento horário; libere a instância quando não for mais necessária para evitar cobranças.
Resource Group Settings
O grupo de recursos para a instância de sincronização. Padrão: default resource group. Consulte O que é Resource Management?
Instance Class
Selecione uma classe com base na velocidade de sincronização necessária. Consulte Classes de instância de instâncias de sincronização de dados.
Subscription Duration
Disponível apenas para o método de faturamento Subscription. Opções: 1–9 meses, 1 ano, 2 anos, 3 anos ou 5 anos.
Leia e aceite os Data Transmission Service (Pay-as-you-go) Service Terms.
Clique em Purchase and Start. Na caixa de diálogo de confirmação, clique em OK. A tarefa aparece na página Data Synchronization. Se a sincronização completa e a incremental estiverem configuradas, Incremental Data Synchronization será exibido como status atual após a conclusão da sincronização completa.
Próximos passos
Depois que a tarefa de sincronização estiver em execução:
Monitore o status e a latência da tarefa na página Data Synchronization.
Configure alertas para receber notificações quando a tarefa falhar ou a latência exceder um limiar. Consulte Configurar monitoramento e alertas.
Verifique a consistência dos dados entre a origem e o destino usando o recurso de verificação de dados. Consulte Configurar uma tarefa de verificação de dados.