Use este tópico se você já criou uma instância de destino Tair (compatível com Redis OSS) e precisa transferir dados de uma instância de origem para ela. Caso ainda não tenha criado a instância de destino, clone uma diretamente de um backup — consulte Restaurar a partir de um conjunto de backups ou Restaurar para um ponto no tempo.
Este tópico descreve como usar o Data Transmission Service (DTS) para migrar dados unidirecionalmente entre instâncias Tair (compatíveis com Redis OSS) ou bancos de dados Redis autogerenciados. O conteúdo também compara o DTS com as duas alternativas baseadas em backup para ajudar na escolha do método mais adequado.
Comparação dos métodos de migração
|
**DTS** |
**Restaurar a partir de um conjunto de backups** |
**Restaurar para um ponto no tempo** |
|
|
Quando usar |
Para migrar dados para uma instância existente |
Para clonar uma nova instância a partir de um backup |
Para clonar uma nova instância a partir de um backup |
|
Custos |
Migração completa: gratuita. Migração incremental: pagamento conforme o uso por duração. Taxas de transferência de dados aplicam-se a tráfego via Internet ou entre nuvens. |
Restauração de dados: gratuita. Criação de nova instância: cobrada. |
Restauração de dados: gratuita durante o período de teste (últimos 7 dias). Criação de nova instância: cobrada. |
|
Granularidade da migração |
Nível de banco de dados (DB 0–DB 255) |
Nível de instância |
Nível de instância ou nível de chave |
|
Migração incremental |
Suportada |
Não suportada |
Não suportada |
|
Cross-region migration |
Suportada |
Não suportada |
Não suportada |
|
Versões diferentes de banco de dados |
Suportado¹ |
Não suportado |
Não suportado |
|
Arquiteturas diferentes |
Suportado² |
Parcialmente suportado² |
Parcialmente suportado² |
¹ Recomenda-se usar a mesma versão de banco de dados na origem e no destino para evitar problemas de compatibilidade.
² Antes de migrar de uma instância com arquitetura padrão para uma instância com arquitetura cluster ou de divisão de leitura/escrita, revise os limites de comandos dessas arquiteturas.
Como o DTS migra dados
O DTS oferece dois tipos de migração. Selecione ambos ao configurar uma tarefa para migrar dados sem interromper o banco de dados de origem.
Full Migration + Incremental Migration (padrão): usa a lógica nativa SYNC/PSYNC do Redis para gravar dados de um snapshot de memória no destino e, em seguida, sincroniza atualizações incrementais em tempo real. A migração completa é gratuita; a migração incremental é faturada por duração.
Full Data Migration: usa o comando SCAN para percorrer todo o banco de dados de origem. Não grave na origem durante esse tipo de migração, pois isso pode causar inconsistência de dados.
Pré-requisitos
Antes de começar, verifique se:
Existe uma instância de destino Tair (compatível com Redis OSS).
A instância de destino tem mais memória total do que a quantidade atualmente usada pela instância de origem — pelo menos 10% a mais. Por exemplo, se a origem estiver usando 10 GB, o destino precisa de pelo menos 11 GB de memória total. Memória insuficiente no destino causa inconsistência de dados ou falha na tarefa.
O Transparent Data Encryption (TDE) not está ativado na instância de destino. O DTS não suporta migração para instâncias com TDE habilitado.
A instância de destino não está executando a versão 2,8 do Tair (compatível com Redis OSS). O DTS não suporta instâncias 2,8.
Limitações
Não dimensione, altere o tipo de instância ou modifique o endpoint do banco de dados de origem ou de destino enquanto uma tarefa de migração estiver em execução. Essas operações causam falha na tarefa e exigem reconfiguração.
Execute a migração fora dos horários de pico, pois o processo consome recursos em ambas as instâncias.
A pré-verificação confirma se a política de evicção do banco de dados de destino está definida como noeviction. A política padrão do Tair (compatível com Redis OSS) é volatile-lru. Se o destino ficar sem memória com volatile-lru, os dados serão removidos silenciosamente, causando inconsistência. Definir noeviction faz com que as gravações falhem (e a tarefa também falhe) caso a memória acabe, mas nenhum dado é removido silenciosamente. Para mais informações, consulte Políticas de evicção de dados do Redis.
Configurar uma tarefa de migração
Etapa 1: Abrir a lista de tarefas de migração
Faça login no console do Data Management (DMS).
Na barra de menu superior, clique em Data + AI > Data Transmission Service (DTS) > Data Migration.
No lado direito de Migration Tasks, selecione a região onde sua instância de destino está localizada.
Etapa 2: Criar uma tarefa e configurar bancos de dados
Clique em Create Task.
-
Configure os bancos de dados de origem e de destino usando os parâmetros a seguir.
Configurações gerais
Parâmetro
Descrição
Task Name
O DTS gera um nome automaticamente. Especifique um nome descritivo para facilitar a identificação. O nome não precisa ser único.
Source Database
Parâmetro
Descrição
Select DMS Database Instance
Se o banco de dados de origem já estiver adicionado ao DMS, selecione-o aqui. Os demais parâmetros de origem são preenchidos automaticamente. Caso contrário, ignore este campo.
Database Type
Selecione Tair/Redis.
Connection Type
Escolha o tipo correspondente ao local onde seu banco de dados de origem está implantado. Para uma instância na nuvem, selecione Cloud Instance.
Instance Region
Selecione a região onde a instância de origem reside.
Cross-account Migration
Selecione No se a origem e o destino estiverem na mesma conta Alibaba Cloud.
Instance ID
Selecione o ID da instância de origem.
Authentication Method
Escolha Password Login ou Password-free Login. Se o acesso sem senha via VPC não estiver habilitado, selecione Password Login.
Database Password
Insira a senha no formato
<user>:<password>— por exemplo,admin:Rp829dlwa. Deixe em branco se nenhuma senha estiver definida.Destination Database
Parâmetro
Descrição
Select DMS Database Instance
Se o banco de dados de destino já estiver adicionado ao DMS, selecione-o aqui. Os demais parâmetros de destino são preenchidos automaticamente. Caso contrário, ignore este campo.
Database Type
Tair/Redis vem selecionado por padrão.
Connection Type
Selecione Cloud Instance.
Instance Region
Selecione a região onde a instância de destino reside.
Instance ID
Selecione o ID da instância de destino.
Authentication Method
Escolha Password Login ou Password-free Login. Se o acesso sem senha via VPC não estiver habilitado, selecione Password Login.
Database Password
Insira a senha no formato
<user>:<password>— por exemplo,admin:Rp829dlwa. Clique em Test Connection And Proceed na parte inferior da página.
Etapa 3: Selecionar objetos de migração
Configure os objetos da tarefa e clique em Next: Advanced Configuration.
|
Parâmetro |
Descrição |
|
Migration Types |
Escolha conforme suas necessidades. Full Migration + Incremental Migration (padrão): migra dados sem parar a origem. Selecione Full Data Migration apenas se você não tiver permissões SYNC ou PSYNC na origem. |
|
Processing Mode for Existing Destination Tables |
Precheck and Block on Error (padrão): verifica se existem chaves no banco de dados de destino. Se houver chaves, um erro é reportado durante a fase de pré-verificação e a tarefa de migração não inicia. Ignore and Continue: ignora a verificação Check For Existing Objects In The Destination Database. Se chaves com os mesmos nomes já existirem no banco de dados de destino, elas serão sobrescritas. |
|
Source Objects / Selected Objects |
Selecione os bancos de dados (DB 0–DB 255) a serem migrados e clique na seta para movê-los para Selected Objects. |
Etapa 4: Configurar definições avançadas
Clique em Next: Data Validation. Na maioria dos casos, mantenha as configurações padrão. Para detalhes, consulte Apêndice: Configurações avançadas.
Etapa 5: Configurar definições de validação
Clique em Next: Save Task and Precheck. Na maioria dos casos, mantenha as configurações padrão. Para detalhes, consulte Configurar validação de dados para uma instância de sincronização ou migração do DTS.
Etapa 6: Executar a pré-verificação
Após a conclusão da pré-verificação:
Se todos os itens forem aprovados, prossiga para a próxima etapa.
Se algum item exibir Warning ou Failed, clique em View Details e resolva o problema seguindo as instruções. Clique em Confirm Alert Details para reconhecer um aviso, mas saiba que isso pode causar inconsistência de dados. Para obter ajuda na resolução de falhas na pré-verificação, consulte Problemas de pré-verificação. Execute novamente a pré-verificação após corrigir todos os problemas.
Clique em Next: Purchase.
Etapa 7: Comprar e iniciar a tarefa
Na página Purchase:
(Opcional) Atribua um Resource Group. O grupo de recursos padrão é utilizado por padrão.
(Opcional) Selecione uma classe de instância para o link de migração do DTS. Uma classe superior oferece uma taxa de migração mais rápida, mas custa mais. O padrão é large. Para especificações, consulte Especificações do link de migração de dados.
Leia e aceite os termos de serviço.
Clique em Purchase and Start.
A tarefa de migração será iniciada. Monitore o progresso na página Data Migration.
Etapa 8: Concluir a migração
Se você selecionou Full Migration + Incremental Migration, o DTS continua sincronizando atualizações incrementais após a conclusão da migração inicial. Quando estiver pronto para o corte, pare ou libere manualmente a tarefa no console.
Para verificar se todos os dados foram migrados corretamente, consulte Validar dados migrados.
Perguntas frequentes
Por que o teste de conexão falha?
Verifique os seguintes pontos:
A conta ou senha está incorreta. O formato da senha do Redis é
user:password. Para mais informações, consulte Métodos de login para uma instância.Se o banco de dados de origem estiver em um data center local ou em uma nuvem de terceiros, um firewall de rede pode estar bloqueando o DTS. Adicione os endereços IP dos servidores DTS da sua região à lista de permissões do firewall. Para instruções, consulte Adicionar os blocos CIDR dos servidores DTS a uma lista de permissões.
Por que a tarefa de migração falha?
Dimensionar, alterar o tipo de instância ou mudar o endpoint da instância de origem ou de destino durante a migração causa falha na tarefa. Reconfigure a tarefa após a conclusão da operação.
Se a instância de destino ou um shard do cluster ficar sem memória (erro OOM), a tarefa falhará. Certifique-se de que o destino tenha memória suficiente antes de iniciar.
Se o TDE estiver habilitado na instância de destino, a migração via DTS não é suportada.
Por que há inconsistência de dados?
Chaves TTL: Se algumas chaves na origem tiverem uma política de tempo de vida (TTL), o destino poderá ter menos chaves porque as chaves expiradas podem não ser excluídas imediatamente.
Objetos List: O DTS não executa um FLUSH nos dados List existentes no destino ao usar PSYNC ou SYNC, o que pode resultar em entradas duplicadas.
Tentativas de migração completa: Se a rede for interrompida durante a migração completa, o DTS tenta novamente e sobrescreve chaves com o mesmo nome. Se a origem excluir uma chave durante uma nova tentativa, essa exclusão não será sincronizada, então o destino pode temporariamente ter mais dados que a origem.
Por que não consigo selecionar uma instância Tair (compatível com Redis OSS) 2,8?
O DTS não suporta instâncias Tair (compatíveis com Redis OSS) 2,8.
Por que a pré-verificação confirma se a política de evicção está definida como noeviction?
A política de evicção padrão (maxmemory-policy) do Tair (compatível com Redis OSS) é volatile-lru. Se o destino ficar sem memória, essa política aciona a evicção de dados, causando inconsistência entre origem e destino sem falhar a tarefa. Definir a política como noeviction evita perda silenciosa de dados: se a memória acabar, as gravações falham e a tarefa falha, mas nenhum dado é removido. Para mais informações, consulte Políticas de evicção de dados do Redis.
Por que existe uma chave DTS_REDIS_TIMESTAMP_HEARTBEAT no banco de dados de origem?
Para monitorar a qualidade da migração e sincronização, o DTS insere uma chave com o prefixo DTS_REDIS_TIMESTAMP_HEARTBEAT no banco de dados de origem para rastrear timestamps de atualização. Em arquiteturas cluster, o DTS insere essa chave em cada shard. O DTS filtra essa chave durante a migração, e ela expira automaticamente quando a tarefa termina.
Quais comandos são suportados para migração incremental?
Os seguintes comandos são suportados:
APPEND
BITOP, BLPOP, BRPOP, BRPOPLPUSH
DECR, DECRBY, DEL
EVAL, EVALSHA, EXEC, EXPIRE, EXPIREAT
FLUSHALL, FLUSHDB
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, PUBLISH
RENAME, RENAMENX, RESTORE, RPOP, RPOPLPUSH, RPUSH, RPUSHX
SADD, SDIFFSTORE, SELECT, SET, SETBIT, SETEX, SETNX, SETRANGE, SINTERSTORE, SMOVE, SPOP, SREM, SUNIONSTORE
ZADD, ZINCRBY, ZINTERSTORE, ZREM, ZREMRANGEBYLEX, ZUNIONSTORE, ZREMRANGEBYRANK, ZREMRANGEBYSCORE
XADD, XCLAIM, XDEL, XAUTOCLAIM, XGROUP CREATECONSUMER, XTRIM
Nota: Para scripts Lua chamados por EVAL ou EVALSHA, o DTS não consegue confirmar se o script foi executado com sucesso no destino, pois o destino não retorna um resultado explícito de execução.
Referências
Se você deseja clonar todos os dados de uma instância Tair (compatível com Redis OSS) para uma nova instância em vez de migrar para uma existente, use o recurso de backup e restauração: