Ne pas voir la synchronisation des données pendant une longue période peut conduire à croire à tort que la fonction de réplication n'est pas valide ou que la configuration est incorrecte. Dans ce cas, vous pouvez envisager d'utiliser la commande salveof. Ne vous inquiétez pas, il existe deux manières de déterminer si la réplication est en cours d'établissement.
Lors de la création d'une réplication Redis, vous constaterez peut-être que l'esclave ne commence pas à synchroniser les données pendant une longue période. La quantité de données peut être trop importante, ce qui ralentit le transfert des données par le maître. top -p ${pgrep -d sur la commande master , redis-sever}, vous pouvez voir le processus de vidage.
[root@img1_u ~]# top -p $(pgrep -d, redis-server) top - 14:06:24 up 54 days, 6:13, 1 user, load average: 1.18, 1.32, 1.20 Tasks: 2 total, 1 running, 1 sleeping, 0 stopped, 0 zombie Cpu(s): 15.2%us, 1.7%sy, 0.6%ni, 81.9%id, 0.2%wa, 0.0%hi, 0.4%si, 0.0%st Mem: 24542176k total, 22771848k used, 1770328k free, 2245720k buffers Swap: 524280k total, 0k used, 524280k free, 4369452k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 21619 root 20 0 5654m 5.4g 388 R 99.9 23.0 0:23.70 redis-server 1663 root 20 0 5654m 5.4g 1068 S 15.3 23.0 5042:31 redis-server
redis-server est un processus unique. Vous pouvez maintenant vérifier qu'il y a 2 processus via la commande top Car comme mentionné précédemment, lorsque redis établira la réplication, il exécutera la commande bgsave sur le service principal, créera un processus enfant. et dump Exportez le fichier RDB. Terminez d'abord le vidage de la base de données maître, puis transférez le fichier d'instantané vers la base de données esclave
Méthode 2 : entrez le redis-cli du maître via l'identifiant rdb_bgsave_in_progress
127.0.0.1:6381> info Persistence # Persistence loading:0 current_cow_size:0 current_cow_size_age:0 current_fork_perc:0.00 current_save_keys_processed:0 current_save_keys_total:0 rdb_changes_since_last_save:0 rdb_bgsave_in_progress:0 ##这个表示没有 rdb_last_save_time:1648953406 rdb_last_bgsave_status:ok rdb_last_bgsave_time_sec:0 rdb_current_bgsave_time_sec:-1 rdb_last_cow_size:311296 aof_enabled:0 aof_rewrite_in_progress:0 aof_rewrite_scheduled:0 aof_last_rewrite_time_sec:-1 aof_current_rewrite_time_sec:-1 aof_last_bgrewrite_status:ok aof_last_write_status:ok aof_last_cow_size:0 module_fork_in_progress:0 module_fork_last_cow_size:0
Lorsque la valeur de rdb_bgsave_in_progress est 1, cela signifie que le serveur principal exécute une commande de sauvegarde en arrière-plan (bgsave). rdb_current_bgsave_time_sec indique l'heure d'exécution de la commande bgsave. Étant donné que les journaux RDB et AOF ne sont pas activés par défaut sur le serveur maître, si rdb_bgsave_in_progress vaut 1, vous pouvez alors certainement envoyer une commande bgsave pour vider le fichier RDB pour des raisons de réplication.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!