Sono sorpreso dalla mancanza di risposta a questo, ma capisco che l'argomento si trova a cavallo tra qualcosa come stackoverflow e qualcosa come lo scambio di stack. Sono anche sorpreso dalla mancanza di documentazione che sono riuscito a trovare sull'argomento.
Ho fatto alcuni test approfonditi in un ambiente di staging e poi sono passato alla nostra produzione e la procedura che ho seguito sembrava funzionare per la maggior parte:
-
L'aggiornamento da 3.0.6 a 5.0.5 nel nostro caso sembra funzionare senza intoppi. Come ho detto nel post originale, usiamo le basi in redis e non è cambiato molto dal punto di vista del cliente.
-
Sono andato avanti con l'aggiornamento in questo ordine:
- I primi due coetanei sentinella e poi la sentinella attualmente nel
leader
stato. - Ciascuno dei nodi redis elencati come
slaves
(ora noto comereplicas
).- Dopo che ogni nodo è stato aggiornato, vorrà copiare il suo
dump.rdb
dal maestro - Una sincronizzazione può essere eseguita su un nodo 5 da un nodo 3, ma una volta che un nodo 5 è il master, un nodo 3 non può sincronizzarsi, quindi una volta eseguito il failover su un nodo aggiornato, non puoi tornare indietro alla versione precedente.
- Dopo che ogni nodo è stato aggiornato, vorrà copiare il suo
- Infine, utilizza le sentinelle per eseguire il failover su un nodo aggiornato come master e aggiornare il precedente master
- I primi due coetanei sentinella e poi la sentinella attualmente nel
Speriamo che qualcuno possa trovarlo utile in futuro.