Após concluir a migração de dados para uma instância do Tair (Redis OSS-compatible), use a ferramenta redis-full-check para verificar a consistência dos dados.
Pré-requisitos
Migração de dados concluída.
Instância ECS com sistema operacional Linux criada. Para mais informações, consulte Criar uma instância ECS.
-
A instância ECS acessa as instâncias Redis de origem e de destino.
NotaSe a instância ECS e a instância Redis estiverem na mesma VPC e zona de disponibilidade, adicione o endereço IP interno da instância ECS à lista de permissões do Redis. Para mais informações, consulte Configurar uma lista de permissões de IP.
Se a instância ECS e a instância Redis não estiverem na mesma VPC e zona de disponibilidade, conecte-se à instância Redis pelo endpoint público. Para mais informações, consulte Conectar-se a uma instância Tair (Redis OSS-compatible) usando um endpoint público.
Casos de uso
Erros durante a migração podem causar inconsistências entre as instâncias de origem e de destino. Use o redis-full-check para identificar discrepâncias e corrigir os dados.
O redis-full-check é uma ferramenta de verificação de dados do Redis desenvolvida pela Alibaba Cloud. Ela extrai dados da origem e do destino, executa múltiplas rodadas de comparação e registra diferenças em um banco de dados SQLite3.
Para mais informações sobre o redis-full-check, consulte o repositório do redis-full-check no GitHub.
Procedimento
Conecte-se à instância ECS com acesso à sua instância Tair (Redis OSS-compatible). Para mais informações, consulte Conectar-se a uma instância ECS.
-
Baixe a ferramenta redis-full-check.
NotaRecomendamos baixar a versão mais recente.
-
Descompacte o arquivo redis-full-check.tar.gz.
tar -xvf redis-full-check.tar.gz -
Execute o comando a seguir para verificar os dados:
./redis-full-check -s "<source_endpoint_1:port;source_endpoint_2:port;...>" -p <source_password> -t <destination_endpoint:port> -a <destination_password> --m=1 --sourcedbfilterlist=0;2 --targetdbfilterlist=0;2Exemplo de comando:
./redis-full-check -s "10.xx.xx.1:6379" -p SourcePwd233 -t "r-bp1zc********.redis.rds.aliyuncs.com:6379" -a testaccount:Test1234 --m=1 --sourcedbfilterlist=0;2 --targetdbfilterlist=0;2Para obter a lista completa de parâmetros, consulte o Guia de configuração do redis-full-check.
Tabela 1. Parâmetros comuns do redis-full-check
Parâmetro
Descrição
Exemplo
-s
Endpoint e porta da instância Redis de origem.
Nota-
Se a origem for uma instância cluster, separe vários endpoints com ponto e vírgula (;).
-
Coloque os endpoints entre aspas duplas ("").
-
Parâmetro obrigatório.
r-bp1xxxxxxxxxxxxx.redis.rds.aliyuncs.com:6379"10.xx.xx.1:7000;10.xx.xx.1:7001;10.xx.xx.2:7002;10.xx.xx.2:7003"-p
Credenciais da instância Redis de origem, no formato
<username>:<password>. Exemplo:testaccount:Test1234. Se a instância não exigir nome de usuário, especifique apenas a senha. Caso não exija senha, omita este parâmetro.SourcePwd233outestaccount:Test1234-t
Endpoint e porta da instância Redis de destino.
Nota-
Se o destino for uma instância cluster, separe vários endpoints com ponto e vírgula (;).
-
Coloque os endpoints entre aspas duplas ("").
-
Parâmetro obrigatório.
r-bp1xxxxxxxxxxxxx.redis.rds.aliyuncs.com:6379"10.xx.xx.1:7000;10.xx.xx.1:7001;10.xx.xx.2:7002;10.xx.xx.2:7003"-a
Credenciais da instância Redis de destino, no formato
<username>:<password>. Exemplo:testaccount:Test1234. Se a instância não exigir nome de usuário, especifique apenas a senha. Caso não exija senha, omita este parâmetro.TargetPwd233outestaccount:Test1234--sourcedbtype
Tipo da instância de origem. Valores válidos:
-
0 (Padrão): standalone ou standard
-
1: cluster (modo de conexão direta)
-
2: cluster (modo proxy)
--sourcedbtype=1--sourcedbfilterlist
Bancos de dados a verificar na instância Redis de origem.
Nota-
Parâmetro desnecessário para instâncias cluster do Redis OSS.
-
Para outros tipos de instância cluster, todos os bancos de dados são verificados por padrão.
-
Para especificar vários bancos de dados, separe os números com ponto e vírgula (;).
--sourcedbfilterlist=0;1;2--targetdbtype
Tipo da instância de destino. Valores válidos:
-
0 (Padrão): standalone ou standard
-
1: cluster (modo de conexão direta)
-
2: cluster (modo proxy)
--targetdbtype=0--targetdbfilterlist
Bancos de dados a verificar na instância Redis de destino.
Nota-
Parâmetro desnecessário para instâncias cluster do Redis OSS.
-
Para outros tipos de instância cluster, todos os bancos de dados são verificados por padrão.
-
Para especificar vários bancos de dados, separe os números com ponto e vírgula (;).
--targetdbfilterlist=0;1;2-d
Nome do arquivo de saída da lista de dados inconsistentes. Padrão: result.db.
xxx.db--comparetimes
Número de rodadas de verificação. Padrão: 3. Mínimo: 1. Recomendamos valor igual ou inferior a 5.
--comparetimes=1
-m
Modo de verificação. Valores válidos:
-
1: verificação completa.
-
2 (Padrão): verifica apenas o tamanho dos valores.
-
3: verifica apenas a existência das chaves.
-
4: executa verificação completa, mas ignora chaves grandes.
-m=1
--qps
Limite de consultas por segundo (QPS). Valor padrão: 15000.
Nota-
Valor mínimo: 1.
-
Valor máximo dependente do desempenho do servidor.
--qps=10
--filterlist
Lista de chaves a comparar, separadas por barras verticais (|).
Nota-
abc*: corresponde a todas as chaves iniciadas com "abc".
-
abc: corresponde apenas à chave "abc".
--filterlist=abc|efg|m
NotaAo concluir o comando, a ferramenta exibe um resumo na linha de comando. A saída de exemplo indica duas chaves inconsistentes. O valor 0 significa que os dados estão consistentes.
all finish successfully, totally 2 keys or fields conflict -
-
Visualize o banco de dados SQLite3 com as chaves inconsistentes.
-
Execute
sqlite3 result.db.3.NotaPor padrão, a lista de dados inconsistentes é salva em result.db.3.
-
Execute
SELECT * FROM key;.[root@redis-server RedisFullCheck]# sqlite3 result.db.3 SQLite version 3.7.17 2013-05-20 00:56:22 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> SELECT * FROM key; 1|differentkey1|string|lack_target|0|10|0 2|differentkey2|list|lack_target|0|4|0 sqlite>NotaO banco de dados SQLite3 contém duas tabelas:
keyefield.A tabela
keyarmazena as chaves inconsistentes.Para os tipos de dados hash, set, zset e list, a tabela
fieldarmazena detalhes sobre os dados inconsistentes.
-