Une fois la migration des données vers une instance Tair (Redis OSS-compatible) terminée, utilisez l'outil redis-full-check pour vérifier la cohérence des données.
Prérequis
La migration des données est terminée.
Vous avez créé une instance ECS exécutant un système d'exploitation Linux. Pour plus d'informations, consultez la rubrique Créer une instance ECS.
-
L'instance ECS peut accéder aux instances Redis source et de destination.
RemarqueSi l'instance ECS et l'instance Redis se trouvent dans le même VPC et la même zone de disponibilité, ajoutez l'adresse IP interne de l'instance ECS à la liste d'autorisation de l'instance Redis. Pour plus d'informations, consultez la rubrique Configurer une liste d'autorisation IP.
Si l'instance ECS et l'instance Redis ne se trouvent pas dans le même VPC ni la même zone de disponibilité, connectez-vous à l'instance Redis via son endpoint public. Pour plus d'informations, consultez la rubrique Se connecter à une instance Tair (Redis OSS-compatible) via un endpoint public.
Cas d'utilisation
Des erreurs survenant lors de la migration des données peuvent entraîner des incohérences entre les instances source et de destination. Utilisez redis-full-check pour identifier ces écarts et corriger les données.
redis-full-check est un outil de vérification des données Redis développé par Alibaba Cloud. Il extrait les données des instances source et de destination, compare les données en plusieurs cycles et enregistre les différences détectées dans une base de données SQLite3.
Pour plus d'informations sur redis-full-check, consultez le dépôt GitHub redis-full-check.
Procédure
Connectez-vous à l'instance ECS capable d'accéder à votre instance Tair (Redis OSS-compatible). Pour plus d'informations, consultez la rubrique Se connecter à une instance ECS.
-
Téléchargez l'outil redis-full-check.
RemarqueNous vous recommandons de télécharger la dernière version disponible.
-
Décompressez le fichier redis-full-check.tar.gz.
tar -xvf redis-full-check.tar.gz -
Exécutez la commande suivante pour lancer la vérification des données :
./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;2Voici un exemple de commande :
./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;2Pour obtenir la liste complète des paramètres, consultez le Guide de configuration redis-full-check.
Tableau 1. Paramètres courants de redis-full-check
Paramètre
Description
Exemple
-s
Endpoint et port de l'instance Redis source.
Remarque-
Si la source est une instance cluster, séparez les différents endpoints par un point-virgule (;).
-
Placez les endpoints entre guillemets doubles ("").
-
Ce paramètre est obligatoire.
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
Identifiants de l'instance Redis source, au format
<username>:<password>. Exemple :testaccount:Test1234. Si l'instance ne nécessite pas de nom d'utilisateur, indiquez uniquement le mot de passe. Si aucun mot de passe n'est requis, omettez ce paramètre.SourcePwd233outestaccount:Test1234-t
Endpoint et port de l'instance Redis de destination.
Remarque-
Si la destination est une instance cluster, séparez les différents endpoints par un point-virgule (;).
-
Placez les endpoints entre guillemets doubles ("").
-
Ce paramètre est obligatoire.
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
Identifiants de l'instance Redis de destination, au format
<username>:<password>. Exemple :testaccount:Test1234. Si l'instance ne nécessite pas de nom d'utilisateur, indiquez uniquement le mot de passe. Si aucun mot de passe n'est requis, omettez ce paramètre.TargetPwd233outestaccount:Test1234--sourcedbtype
Type de l'instance source. Valeurs possibles :
-
0 (par défaut) : autonome ou standard
-
1 : cluster (mode de connexion directe)
-
2 : cluster (mode proxy)
--sourcedbtype=1--sourcedbfilterlist
Bases de données à vérifier sur l'instance Redis source.
Remarque-
Ce paramètre n'est pas requis pour les instances cluster Redis OSS.
-
Pour les autres types d'instances cluster, toutes les bases de données sont vérifiées par défaut.
-
Pour spécifier plusieurs bases de données, séparez leurs numéros par un point-virgule (;).
--sourcedbfilterlist=0;1;2--targetdbtype
Type de l'instance de destination. Valeurs possibles :
-
0 (par défaut) : autonome ou standard
-
1 : cluster (mode de connexion directe)
-
2 : cluster (mode proxy)
--targetdbtype=0--targetdbfilterlist
Bases de données à vérifier sur l'instance Redis de destination.
Remarque-
Ce paramètre n'est pas requis pour les instances cluster Redis OSS.
-
Pour les autres types d'instances cluster, toutes les bases de données sont vérifiées par défaut.
-
Pour spécifier plusieurs bases de données, séparez leurs numéros par un point-virgule (;).
--targetdbfilterlist=0;1;2-d
Nom du fichier de sortie contenant la liste des données incohérentes. Par défaut : result.db.
xxx.db--comparetimes
Nombre de cycles de vérification. Par défaut : 3. Minimum : 1. Nous vous recommandons de définir une valeur inférieure ou égale à 5.
--comparetimes=1
-m
Mode de vérification. Valeurs possibles :
-
1 : vérification complète.
-
2 (par défaut) : vérifie uniquement la longueur des valeurs.
-
3 : vérifie uniquement l'existence des clés.
-
4 : effectue une vérification complète mais ignore les clés volumineuses.
-m 1
--qps
Limite de requêtes par seconde (QPS). La valeur par défaut est 15000.
Remarque-
La valeur minimale est 1.
-
La valeur maximale dépend des performances de votre serveur.
--qps=10
--filterlist
Liste des clés à comparer, séparées par des barres verticales (|).
Remarque-
abc* : correspond à toutes les clés commençant par « abc ».
-
abc : correspond uniquement à la clé « abc ».
--filterlist=abc|efg|m
RemarqueÀ la fin de l'exécution de la commande, l'outil affiche un résumé dans la ligne de commande. L'exemple ci-dessous indique deux clés incohérentes. Une valeur de 0 signifie que les données sont cohérentes.
all finish successfully, totally 2 keys or fields conflict -
-
Consultez la base de données SQLite3 contenant les clés incohérentes.
-
Exécutez
sqlite3 result.db.3.RemarquePar défaut, la liste des données incohérentes est enregistrée dans result.db.3.
-
Exécutez
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>RemarqueLa base de données SQLite3 contient deux tables :
keyetfield.La table
keystocke les clés incohérentes.Pour les types de données hash, set, zset et list, la table
fieldstocke les détails concernant les données incohérentes.
-