Use o Data Transmission Service (DTS) para migrar uma instância Tair (compatível com Redis OSS) de uma conta Alibaba Cloud para outra. O service oferece suporte a migração completa e incremental, mantendo seus serviços operacionais durante todo o processo.
Pré-requisitos
Antes de começar, verifique se:
Existe uma instância Tair (compatível com Redis OSS) de destino. O espaço de armazenamento disponível deve exceder o espaço utilizado na instância de source.
As instâncias de source e destino executam versões compatíveis do Redis. Há suporte para migração de uma versão inferior para uma superior. No entanto, a migração de uma versão superior para uma inferior pode causar problemas de compatibilidade.
Para visualizar as combinações de versões com suporte, consulte Overview of data migration scenarios.
Como funciona
A migração entre contas requer ações em duas contas Alibaba Cloud:
Proprietário da conta de source: Faça login no Alibaba Cloud Management Console, crie uma função RAM e conceda permissão à conta de destino para acessar a instância Redis de source. Consulte Configure RAM authorization for a cross-account task.
Proprietário da conta de destino: Faça login no Alibaba Cloud Management Console e configure a tarefa de migração do DTS (conforme detalhado na seção Procedure abaixo).
Faturamento
| Tipo de migração | Taxa de configuração da instância | Taxa de tráfego de internet |
|---|---|---|
| Migração completa de dados | Gratuita | Cobrada quando o Access Method de destino é Public IP Address. Consulte Billing overview. |
| Migração incremental de dados | Cobrada. Consulte Billing overview. |
Tipos de migração
|
Tipo de migração |
Descrição |
|
Migração completa |
O DTS copia todos os dados existentes da source para o destino. |
|
Migração incremental |
Após a conclusão da migração completa, o DTS replica continuamente novas gravações da source para o destino. Use esta opção para migrar sem interromper suas aplicações. |
Sempre que possível, execute ambos os tipos juntos. Se a conta do DTS não tiver permissão SYNC/PSYNC na source, execute apenas a migração completa.
Observações de uso
Analise estas restrições antes de iniciar a migração.
Limites do banco de dados de source
Requisito de largura de banda: O servidor que hospeda o banco de dados de source precisa ter largura de banda de saída suficiente. Caso contrário, a velocidade da migração de dados será afetada.
Não há suporte para a versão 2.8 do Tair (compatível com Redis OSS) como source.
Se executar apenas a migração completa (sem a incremental), interrompa as gravações na source durante o processo para evitar inconsistência de dados.
-
Ao migrar de uma source Basic Edition para um destino com arquitetura cluster, use apenas operações de chave única. Comandos de múltiplas chaves que abrangem vários slots retornam:
CROSSSLOT Keys in request don't hash to the same slot O DTS insere uma chave com o prefixo
DTS_REDIS_TIMESTAMP_HEARTBEATna source para rastrear timestamps de atualização. Se a source usar arquitetura cluster, essa chave será inserida em cada shard. A chave é filtrada durante a migração e expira após o término da tarefa.Se a source for uma instância somente leitura ou a conta do DTS não tiver permissão SETEX, a latência reportada pode ser imprecisa.
Para aumentar a estabilidade da migração, aumente o parâmetro
repl-backlog-sizeno arquivoredis.conf.Se a source for uma instância Tair Enterprise Edition com Storage Medium definido como Persistent Memory, defina o parâmetro
appendonlycomoyes. Para mais detalhes, consulte Procedure.Se a source for uma instância filha de um Global Distributed Cache, o DTS migrará apenas essa instância filha. Não há suporte para outras instâncias filhas.
Outros limites
Nem a source nem o destino oferecem suporte a instâncias de armazenamento de capacidade do Tair (compatível com Redis OSS) Enterprise Edition.
Se a criptografia transparente de dados (TDE) estiver ativada em qualquer uma das instâncias, o DTS não poderá realizar a migração.
Se o destino ficar sem memória, a política de evicção padrão (
maxmemory-policy) serávolatile-lru, o que pode causar inconsistência de dados. Para evitar perda silenciosa de dados, defina a política de evicção do destino comonoeviction. Comnoeviction, as operações de gravação falham quando a memória está cheia e a tarefa é interrompida, mas nenhum dado é removido silenciosamente. Para detalhes sobre as políticas, consulte Introduction to Redis data eviction policies.Se a instância de destino usar arquitetura cluster e qualquer shard atingir seu limite de memória, ou se a instância ficar sem espaço de armazenamento, a tarefa do DTS falhará com um erro de falta de memória (OOM).
Operações de dimensionamento (adição ou remoção de shards), alterações de especificação ou modificações de endpoint ou porta em qualquer uma das instâncias durante a migração interromperão a tarefa. Se isso ocorrer, limpe todos os dados sincronizados do destino e reconfigure a tarefa.
Após um evento de failover (incluindo troca master/standby) no destino, os dados podem ser gravados apenas na memória sem replicação para o secundário, causando perda de dados.
Se uma instância de migração incluir tarefas completas e incrementais, reiniciar a instância pode fazer com que o DTS reexecute ambas as tarefas.
Reiniciar uma instância de migração pode causar a execução repetida de comandos não idempotentes (como
INCRBYouLPUSH), levando à inconsistência de dados.Para scripts Lua invocados via
EVALouEVALSHA, o DTS não consegue confirmar a execução bem-sucedida durante a migração incremental.Para estruturas de dados List, o DTS não limpa os dados existentes no destino ao usar
psyncousync, o que pode resultar em entradas duplicadas.Se as chaves na source tiverem políticas de expiração, a contagem de chaves visível no destino (por exemplo, via
INFO) pode ser menor que na source. Chaves sem políticas de expiração ou chaves não expiradas permanecem consistentes entre source e destino.Quando o Access Method é Public IP Address, o Instance Mode não oferece suporte a Cluster.
Execute a migração fora dos horários de pico. A migração completa consome recursos de leitura e gravação em ambas as instâncias.
Após a migração completa, o espaço de armazenamento do destino será maior que o da source devido a operações INSERT concorrentes.
O DTS tenta recuperar automaticamente tarefas com falha por até sete dias. Antes de alternar o tráfego para o destino, pare ou libere a tarefa, ou revogue a permissão de gravação da conta do DTS usando
REVOKEpara evitar que tarefas recuperadas sobrescrevam os dados de destino.Se houver uma instância Tair (compatível com Redis OSS) criptografada com TLS envolvida, conecte-se ao DTS usando SSL-encrypted (não há suporte para TLSv1.3). Atualmente, não há suporte para conexão com SSL-encrypted a uma source Alibaba Cloud Instance.
Se uma tarefa falhar, a equipe de suporte do DTS tentará restaurá-la em até oito horas. A restauração pode envolver o reinício da tarefa ou o ajuste de parâmetros da tarefa. Apenas os parâmetros da tarefa do DTS são modificados, não os parâmetros do banco de dados. Para parâmetros ajustáveis, consulte Modify instance parameters.
Casos especiais para origens Redis autogerenciadas
Quando o Access Method de source não é Alibaba Cloud Instance:
Uma troca master/standby na source causa falha na tarefa.
O DTS calcula a latência comparando o timestamp do último registro migrado com a hora atual. Se a source não tiver atividade DML por um longo período, a latência exibida pode ser imprecisa. Execute uma operação DML na source para atualizar a latência. Se estiver migrando um banco de dados inteiro, use uma tabela de heartbeat que grave dados a cada segundo.
Alterações no endpoint do Redis durante a migração (por exemplo, devido à migração de instância ou troca master/standby) podem causar novas tentativas, atrasos, falhas ou inconsistência de dados. Monitore o status da tarefa e reconfigure-a se houver comportamento anormal.
Comandos com suporte para migração incremental
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
Preparações
Faça login no Alibaba Cloud Management Console usando a conta de source. Crie uma função RAM e conceda permissão à conta de destino para acessar a instância Redis de source. Para instruções, consulte Configure RAM authorization for a cross-account task.
Conclua esta etapa antes de configurar a tarefa de migração abaixo.
Procedimento
As etapas a seguir usam a conta de destino para configurar a tarefa de migração do DTS.
Para um guia completo sobre a configuração de RAM entre contas, consulte Configure RAM authorization for a cross-account task .
Etapa 1: Abrir a lista de tarefas de migração
Faça login com a conta de destino e acesse a lista de tarefas de migração de dados usando um destes métodos:
Pelo console do DTS
Faça login no console do Data Transmission Service (DTS).console do Data Transmission Service (DTS)
No painel de navegação à esquerda, clique em Data Migration.
No canto superior esquerdo, selecione a região onde a instância de migração estará localizada.
Pelo console do DMS
Nota
As etapas podem variar dependendo do modo e layout do seu console DMS. Para detalhes, consulte Simple mode console e Customize the layout and style of the DMS console.
Faça login no console do Data Management (DMS).console do Data Management (DMS)
Na barra de menu superior, escolha .
À direita de Data Migration Tasks, selecione a região onde a instância de migração estará localizada.
Etapa 2: Criar a tarefa
Clique em Create Task para abrir a página de configuração da tarefa.
Etapa 3: Configurar bancos de dados de source e destino
Leia atentamente os limites exibidos no topo da página de configuração antes de selecionar as instâncias. Ignorar esta etapa pode causar falha na tarefa ou inconsistência de dados.
Configure os parâmetros para os bancos de dados de source e destino:
Nome da tarefa
|
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. |
Banco de dados de source
|
Parâmetro |
Descrição |
|
Select Existing Connection |
Selecione uma instância de banco de dados registrada anteriormente na lista ou deixe em branco para configurar manualmente. No console do DMS, este parâmetro chama-se Select a DMS database instance. |
|
Database Type |
Selecione Tair/Redis. |
|
Access Method |
Selecione Alibaba Cloud Instance. |
|
Instance Region |
Selecione a região onde a instância de source reside. |
|
Replicate Data Across Alibaba Cloud Accounts |
Selecione Yes. Isso habilita os campos entre contas abaixo. |
|
Alibaba Cloud Account |
Insira o ID da conta Alibaba Cloud proprietária da instância Tair (compatível com Redis OSS) de source. Para obter esse ID, consulte Obtain the ID of the Alibaba Cloud account that owns the source database. |
|
RAM Role Name |
Insira o nome da função RAM criada na conta de source, por exemplo, ram-for-dts. Para criar essa função, consulte Step 1: Create a RAM role. |
|
Instance ID |
Selecione o ID da instância de source. |
|
Authentication Method |
Selecione o método de autenticação. Este exemplo usa Password Login. Account + Password Login está disponível apenas para Redis 6.0 ou posterior. Para Secret-free login, ative primeiro o acesso sem senha — consulte Enable password-free access over a VPC. |
|
Database Password |
Insira a senha da instância de source. A conta deve ter permissão de leitura. Para contas personalizadas, use o formato |
|
Encryption |
Selecione Non-encrypted ou SSL-encrypted. Para Redis autogerenciado com SSL, faça também upload de um CA Certificate e insira uma CA Key. |
Banco de dados de destino
|
Parâmetro |
Descrição |
|
Select Existing Connection |
Selecione uma instância de banco de dados registrada anteriormente na lista ou deixe em branco para configurar manualmente. No console do DMS, este parâmetro chama-se Select a DMS database instance. |
|
Database Type |
Selecione Tair/Redis. |
|
Access Method |
Selecione Alibaba Cloud Instance. |
|
Instance Region |
Selecione a região onde a instância de destino reside. |
|
Replicate Data Across Alibaba Cloud Accounts |
Selecione No. A instância de destino pertence à conta atual. |
|
Instance ID |
Selecione o ID da instância de destino. |
|
Authentication Method |
Selecione o método de autenticação. Este exemplo usa Password Login. Account + Password Login está disponível apenas para Redis 6.0 ou posterior. Para Secret-free login, ative primeiro o acesso sem senha — consulte Enable password-free access over a VPC. |
|
Database Password |
Insira a senha da instância de destino. A conta deve ter permissão de leitura e gravação. Para contas personalizadas, use o formato |
|
Encryption |
Selecione Non-encrypted ou SSL-encrypted. Para Redis autogerenciado com SSL, faça também upload de um CA Certificate e insira uma CA Key. |
Etapa 4: Testar conectividade
Clique em Test Connectivity and Proceed na parte inferior da página.
Certifique-se de que os intervalos de IP do service DTS foram adicionados às configurações de segurança de ambas as instâncias. Consulte Add DTS server IP addresses to a whitelist .
Se alguma das instâncias for autogerenciada (o Access Method não é Alibaba Cloud Instance ), clique em Test Connectivity na caixa de diálogo CIDR Blocks of DTS Servers .
Etapa 5: Configurar objetos de migração
Na página Configure Objects, defina os seguintes parâmetros:
|
Parâmetro |
Descrição |
|
Migration Types |
Selecione tanto Full Data Migration quanto Incremental Data Migration para migração sem tempo de inatividade. Selecione apenas Full Data Migration se a conta do DTS não tiver permissão SYNC/PSYNC na source. |
|
Processing Mode of Conflicting Tables |
Precheck and Report Errors: A pré-verificação confirma se o destino está vazio. Caso contrário, a tarefa não inicia. Ignore Errors and Proceed: Ignora a verificação de destino vazio. Se uma chave no destino tiver o mesmo nome de uma chave de source, os dados da source sobrescreverão os do destino. Isso pode causar perda de dados — proceda com cautela. |
|
Source Objects |
Clique nos objetos na caixa Source Objects e, em seguida, clique em |
|
Selected Objects |
Para mapear bancos de dados (DB 0–255) ou filtrar por prefixo de chave, clique com o botão direito em um banco de dados em Selected Objects e configure na caixa de diálogo Edit Schema. Consulte Schema mapping e Set filter conditions. |
Clique em Next Advanced Settings e configure o seguinte:
|
Parâmetro |
Descrição |
|
Dedicated Cluster for Task Scheduling |
O DTS usa um cluster compartilhado por padrão. Adquira um cluster dedicado para execução de tarefas mais estável. |
|
Retry Time for Failed Connections |
Padrão: 720 minutos. Intervalo: 10–1.440 minutos. Defina pelo menos 30 minutos. Se o DTS reconectar dentro desta janela, a tarefa será retomada automaticamente; caso contrário, a tarefa falhará. Nota: Há cobrança durante o período de nova tentativa. |
|
Retry Time for Other Issues |
Padrão: 10 minutos. Intervalo: 1–1.440 minutos. Defina pelo menos 10 minutos. Este valor deve ser menor que Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Migration |
Limite a carga de leitura e gravação durante a migração completa definindo 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 Migration estiver selecionado. |
|
Enable Throttling for Incremental Data Migration |
Limite a carga durante a migração incremental definindo RPS of Incremental Data Migration e Data migration speed for incremental migration (MB/s). Disponível apenas quando Incremental Data Migration estiver selecionado. |
|
Extend Expiration Time of Destination Database Key |
Adicione tempo extra de expiração às chaves migradas. Útil quando sua aplicação depende da expiração de chaves, como em locks distribuídos. Aplica-se a: |
|
Environment Tag |
Opcional. Aplique uma tag na instância para identificar seu ambiente. |
|
Configure ETL |
Ative ou desative o recurso de extração, transformação e carregamento (ETL). Consulte What is ETL? e Configure ETL in a data migration or data synchronization task. |
|
Monitoring and Alerting |
Configure alertas para receber notificações se a migração falhar ou se a latência exceder um limiar. Consulte alert thresholdnotificações de alerta. |
Clique em Next Data Verification para configurar a verificação de dados. Para detalhes, consulte Configure a data verification task.
Etapa 6: Executar a pré-verificação
Clique em Next: Save Task Settings and Precheck.
Para visualizar os parâmetros da API para esta configuração, passe o mouse sobre o botão e clique em Preview OpenAPI parameters .
O DTS executa uma pré-verificação antes de iniciar a migração. 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 do item com falha, corrija o problema e execute a pré-verificação novamente.
Se aparecer um aviso: para itens que não podem ser ignorados, corrija o problema e execute novamente. Para itens que podem ser ignorados, clique em Confirm Alert Details > Ignore > OK > Precheck Again . Ignorar avisos pode causar inconsistência de dados.
Etapa 7: Comprar e iniciar
Quando a Success Rate atingir 100%, clique em Next: Purchase Instance.
-
Na página Purchase, selecione a classe da instância:
Parâmetro
Descrição
Resource Group Settings
Selecione o grupo de recursos para esta instância. Padrão: grupo de recursos padrão. Consulte What is Resource Management?.
Instance Class
Selecione uma especificação com base no volume de migração e nos requisitos de velocidade. Consulte Data migration link specifications.
Leia e aceite os Data Transmission Service (Pay-as-you-go) Service Terms.
Clique em Buy and Start e, em seguida, clique em OK na caixa de diálogo de confirmação.
Monitore o progresso da migração na página de migração de dados.
Se a tarefa incluir migração completa e incremental, ela será exibida como Incremental Data Migration na página da lista de tarefas de migração.
Próximos passos
Para verificar a consistência dos dados após a migração, consulte Configure a data verification task.
Antes de alternar o tráfego da aplicação para a instância de destino, pare ou libere a tarefa do DTS para evitar que tarefas recuperadas automaticamente sobrescrevam os dados de destino.
Para outros cenários de migração, consulte Overview of data migration scenarios.
Após a migração
A instância de destino é uma nova instância separada, com um endpoint de conexão diferente do da instância de source. Após confirmar que os dados estão corretos, altere a configuração de conexão da sua aplicação para o endpoint da instância de destino e adicione o endereço IP do novo cliente (por exemplo, o servidor migrado) à lista de permissões da instância de destino. Caso contrário, as gravações da sua aplicação continuarão sendo direcionadas à instância de source.