故障分析 | redis cluster 從庫無法自動恢復同步案例一則
作者:任坤
現居珠海,先後擔任專職 Oracle 和 MySQL DBA,現在主要負責 MySQL、mongoDB 和 Redis 維護工作。
本文來源:原創投稿
背景
線上有一套6節點 redis cluster ,6分片 * 2副本,每個節點上2個例項,埠號分別為7000和7001。
診斷
登入該節點,檢視 redis 的日誌
22996:S 20 Jan 2023 07:27:15.091 * Connecting to MASTER x.x.x.46:7001
22996:S 20 Jan 2023 07:27:15.091 * MASTER <‐> REPLICA sync started
22996:S 20 Jan 2023 07:27:15.106 * Non blocking connect for SYNC fired the event.
22996:S 20 Jan 2023 07:27:15.106 * Master replied to PING, replication can continue...
22996:S 20 Jan 2023 07:27:15.106 * Trying a partial resynchronization (request 174e5c92c731090d3c9a05f6364ffff5a70e61d9:7180528579709).
22996:S 20 Jan 2023 07:35:29.263 * Full resync from master: 174e5c92c731090d3c9a05f6364ffff5a70e61d9:7180734380451
22996:S 20 Jan 2023 07:35:29.263 * Discarding previously cached master state.
22996:S 20 Jan 2023 07:44:47.717 * MASTER <‐> REPLICA sync: receiving 22930214160 bytes from master
例項啟動後和主庫進行連線,先嚐試 partial resync 失敗,後進行 full resync
22996:S 20 Jan 2023 07:48:07.305 * MASTER <‐> REPLICA sync: Flushing old data
22996:S 20 Jan 2023 07:53:24.576 * MASTER <‐> REPLICA sync: Loading DB in memory
22996:S 20 Jan 2023 07:59:59.491 * MASTER <‐> REPLICA sync: Finished with success
耗時11分鐘完成舊資料清理和新 rdb 載入,此時卻發現和主庫的連線中斷
22996:S 20 Jan 2023 07:59:59.521 # Connection with master lost.
22996:S 20 Jan 2023 07:59:59.521 * Caching the disconnected master state.
於是乎又發起和主庫的連線
22996:S 20 Jan 2023 08:00:00.404 * Connecting to MASTER x.x.x.46:7001
22996:S 20 Jan 2023 08:00:00.404 * MASTER <‐> REPLICA sync started
22996:S 20 Jan 2023 08:00:00.405 * Non blocking connect for SYNC fired the event.
22996:S 20 Jan 2023 08:00:00.406 * Master replied to PING, replication can continue...
22996:S 20 Jan 2023 08:00:00.408 * Trying a partial resynchronization (request 174e5c92c731090d3c9a05f6364ffff5a70e61d9:7180736029100).
22996:S 20 Jan 2023 08:08:21.849 * Full resync from master: 174e5c92c731090d3c9a05f6364ffff5a70e61d9:7180922115631
有2個疑問:
檢視主庫日誌,每9分鐘發起1次 bgsave ,每次 bgsave 期間新產生的記憶體有2600M之多,repl-backlog-size 預設只有100M,而從庫節點從當機到完成啟動耗時大約15分鐘,此時緩衝區中的複製位點早被覆蓋,難怪 partial resync 會失敗。
38241:C 20 Jan 2023 07:35:25.836 * DB saved on disk
38241:C 20 Jan 2023 07:35:26.552 * RDB: 2663 MB of memory used by copy‐on‐write
40362:M 20 Jan 2023 07:35:27.950 * Background saving terminated with success
40362:M 20 Jan 2023 07:35:27.950 * Starting BGSAVE for SYNC with target:disk
40362:M 20 Jan 2023 07:35:29.263 * Background saving started by pid 11680
11680:C 20 Jan 2023 07:44:44.585 * DB saved on disk
11680:C 20 Jan 2023 07:44:45.811 * RDB: 2681 MB of memory used by copy‐on‐write
繼續看日誌,
40362:M 20 Jan 2023 07:48:03.104 * Synchronization with replica x.x.x.45:7000 succeeded
40362:M 20 Jan 2023 07:48:17.100 * FAIL message received from 8e2a54fbaac768a5cc0e717f4aa93c6be8683ffe about ccb7589e3240bc95557ffb282435afd5dc13e4c9
40362:M 20 Jan 2023 07:50:17.109 # Disconnecting timedout replica:x.x.x.45:7000
40362:M 20 Jan 2023 07:50:17.109 # Connection with replica x.x.x.45:7000 lost.
40362:M 20 Jan 2023 07:53:26.114 * Clear FAIL state for node ccb7589e3240bc95557ffb282435afd5dc13e4c9: replica is reachable again.
40362:M 20 Jan 2023 08:00:00.408 * Replica x.x.x.45:7000 asks for sync hronization
解決方案
本文關鍵字:#repl-timeout# #連線超時#
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024924/viewspace-2935742/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- redis cluster 叢集故障恢復操作思路Redis
- 一則資料庫無法啟動的奇怪案例分析資料庫
- 故障分析 | MySQL 異地從庫複製延遲案例一則MySql
- 一則資料庫無法重啟的案例分析資料庫
- 【故障恢復】因spfile修改錯誤導致資料庫無法啟動的恢復方法資料庫
- 【資料庫資料恢復】無法啟動MongoDB服務的資料恢復案例資料庫資料恢復MongoDB
- 故障分析 | MySQL 從機故障重啟後主從同步報錯案例分析MySql主從同步
- 資料庫資料恢復——Windows無法啟動MongoDB服務的資料恢復案例資料庫資料恢復WindowsMongoDB
- 【資料庫資料恢復】突然斷電造成Syabse資料庫無法啟動的資料恢復案例資料庫資料恢復
- redis cluster 故障後,主從位於不同節點的修復。Redis
- 【資料庫資料恢復】SqlServer資料庫無法讀取的資料恢復案例資料庫資料恢復SQLServer
- TSM單個資料庫無法備份故障一則資料庫
- 資料庫恢復狀態可能導致JOB無法自動執行資料庫
- 【資料庫資料恢復】Oracle ASM例項無法掛載的資料恢復案例資料庫資料恢復OracleASM
- 【伺服器資料恢復】同友儲存無法啟動的資料恢復案例伺服器資料恢復
- Oracle資料庫恢復:歸檔日誌損壞案例一則Oracle資料庫
- 恢復資料庫引數錯誤無法啟動資料庫
- 【伺服器資料恢復】VSAN故障導致虛擬機器無法訪問的資料恢復案例伺服器資料恢復虛擬機
- PostgreSQL 恢復大法 - 恢復部分資料庫、跳過壞塊、修復無法啟動的資料庫SQL資料庫
- 【儲存資料恢復案例】儲存斷電後無法成功重啟,虛擬機器無法啟動-資料恢復資料恢復虛擬機
- Oracle無法自動排程DBMS_JOB&DBMS_SCHEDULER案例分析Oracle
- MySQL資料庫故障恢復MySql資料庫
- mysql GTID主從複製故障後不停機恢復同步流程MySql
- 【北亞資料恢復】非物理故障導致的伺服器藍屏且無法重啟的資料恢復案例資料恢復伺服器
- 伺服器資料恢復—nas儲存硬碟出現故障離線導致無法訪問的資料恢復案例伺服器資料恢復硬碟
- 【伺服器資料恢復】RAID故障導致資料庫分割槽無法識別的資料恢復伺服器資料恢復AI資料庫
- 【伺服器資料恢復】nas儲存伺服器硬碟故障離線導致無法訪問的資料恢復案例伺服器資料恢復硬碟
- 故障分析 | ClickHouse 叢集分散式 DDL 被阻塞案例一則分散式
- ORA-04031 故障解決案例詳細分析一則
- 【Redis】Redis Cluster-叢集故障轉移Redis
- spfile誤修改導致資料庫無法啟動的另一種恢復方法資料庫
- Oracle資料庫故障恢復資料庫系統故障恢復效能優化指南大全Oracle資料庫優化
- 資料庫恢復案例大全資料庫
- redis cluster 故障後,主從位於相同節點的修復(丟失了部分資料)Redis
- 【伺服器資料恢復案例解讀】伺服器突然崩潰,重啟後無法進入系統故障的資料恢復伺服器資料恢復
- win10自動修復無法修復你的電腦 華碩win10自動修復無法開機Win10
- 【伺服器資料恢復】RAID5無法識別的資料恢復案例伺服器資料恢復AI
- 資料庫不同故障的恢復方式資料庫