redis复制碰到的问题有哪些

长时间未能看到数据同步,可能导致误以为复制功能失效或配置错误,这时可以考虑使用salveof命令。其实不用担心,有两种方法可以确定是否正在建立复制。

在创建redis复制是,一开始可能会发现slave长时间不开始同步数据,可能数据量太大,导致了master在dump数据慢,此时可以在master上执行top -p ${pgrep -d,redis-sever}命令,就可以看到dump的过程。

[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是单进程的,现在通过top命令查看已经有2个进程,因为之前提到的,redis在建立复制的时候,会在主服务上执行bgsave命令,fork一个子进程,dump出RDB文件。先完成主数据库的转储,再将快照文件传输到从数据库

Redis复制碰到了这些问题,你知道吗

方法二:通过rdb_bgsave_in_progress标识

进入master的redis-cli

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

当rdb_bgsave_in_progress的值为1时,表示主服务器正在执行后台保存命令(bgsave)。rdb_current_bgsave_time_sec指示了bgsave命令的已执行时间。由于master服务器上默认不开启RDB和AOF日志,如果rdb_bgsave_in_progress为1,那么就可以肯定由于复制原因发送一个bgsave指令dump出RDB文件。



Redis是一个开源的高性能键值数据库,其复制功能可以让数据在多个节点之间实现同步。然而,复制过程中有些问题难以避免,下面将介绍几个可能遇到的情况。
1. 主节点故障
在主节点故障期间,要确保从节点正常运行以维持业务持续运行。若没有预设好自动故障迁移机制,需要手动将从节点晋升为主节点,或者将一台新的节点接替原先的主节点。
2. 网络延迟
复制过程中,网络延迟可能导致从节点与主节点之间的同步延迟。可以通过调整网络拓扑结构、增加带宽、调整任务优先级等方式进行优化,以提高同步速度。
3. 从节点不一致
多个从节点的数据可能会出现不一致的情况,从而影响业务。可以执行全量同步或增量同步操作解决不一致问题。在实际应用中,增量同步是更为常用的一种方法。
4. 主从节点版本不一致
当主节点和从节点之间的版本不一致时,复制可能会失败。在进行版本升级时,需要增量升级来确保逐步迭代。
总之,了解并解决Redis复制的问题,可以保证其在生产环境中的可靠性和稳定性。