首頁  >  文章  >  資料庫  >  redis複製碰到的問題有哪些

redis複製碰到的問題有哪些

WBOY
WBOY轉載
2023-05-28 22:43:321282瀏覽

長時間未能看到資料同步,可能導致誤以為複製功能失效或配置錯誤,這時可以考慮使用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檔。先完成主資料庫的轉儲,再將快照檔案傳輸到從資料庫

方法二:透過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複製碰到的問題有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除