Řešení potíží se ztrátou dat ve službě Azure Managed Redis (Preview)
Tento článek popisuje, jak diagnostikovat skutečné nebo vnímané ztráty dat, ke kterým může dojít ve službě Azure Managed Redis (Preview).
Poznámka:
Několik kroků pro řešení potíží v této příručce obsahuje pokyny ke spuštění příkazů Redis a monitorování různých metrik výkonu. Další informace a pokyny najdete v článcích v části Další informace .
Částečná ztráta klíčů
Azure Managed Redis nesměšně neodstraní klíče po jejich uložení do paměti. Odebírá však klíče v reakci na zásady vypršení platnosti, zásady vyřazení a explicitní příkazy k odstranění klíčů. Tyto příkazy můžete spouštět prostřednictvím rozhraní příkazového řádku.
Klíče, které byly zapsány do primárního uzlu v instanci Azure Managed Redis, nemusí být na replice hned dostupné. Data se replikují z primárního uzlu do repliky asynchronně a bez blokování.
Pokud zjistíte, že klíče z mezipaměti zmizely, zkontrolujte následující možné příčiny:
Příčina | Description |
---|---|
Vypršení platnosti klíče | Klíče se odebírají kvůli nastaveným časovým limitům. |
Vyřazení klíče | Klíče se odebírají při zatížení paměti. |
Odstranění klíče | Klíče se odebírají explicitními příkazy k odstranění. |
Asynchronní replikace | Klíče nejsou k dispozici v replice kvůli zpoždění při replikaci dat. |
Vypršení platnosti klíče
Azure Managed Redis odebere klíč automaticky, pokud je klíč přiřazený k vypršení časového limitu a dané období uplynulo. Další informace o vypršení platnosti klíče Redis najdete v dokumentaci k příkazu EXPIRE . Hodnoty časového limitu lze nastavit také pomocí příkazů SET, SETEX, GETSET a dalších příkazů *STORE .
Pokud chcete získat statistiky o tom, kolik klíčů vypršelo, použijte příkaz INFO . V Stats
části se zobrazuje celkový počet klíčů, jejichž platnost vypršela. V Keyspace
části najdete další informace o počtu klíčů s časovým limitem a průměrné hodnotě časového limitu.
# Stats
expired_keys:46583
# Keyspace
db0:keys=3450,expires=2,avg_ttl=91861015336
Můžete se také podívat na diagnostické metriky vaší mezipaměti a zjistit, jestli nedošlo k korelaci mezi chybějícím klíčem a špičkou platnosti klíčů. Informace o používání oznámení nebo MONITOR
ladění těchto typů problémů najdete v dodatku ladění Redis Keyspace.keyspace
Vyřazení klíče
Azure Managed Redis vyžaduje pro ukládání dat paměťový prostor. Vyprázdní klíče, aby v případě potřeby uvolnila dostupnou paměť. Když se hodnoty used_memory nebo used_memory_rss v příkazu INFO blíží nakonfigurovanému nastavení maxmemory, azure Managed Redis začne vyřazuje klíče z paměti na základě zásad mezipaměti.
Počet vyřazených klíčů můžete monitorovat pomocí příkazu INFO :
# Stats
evicted_keys:13224
Můžete se také podívat na diagnostické metriky mezipaměti a zjistit, jestli nedošlo k korelaci mezi chybějícím klíčem a špičkou vyřazovaných klíčů. Informace o použití oznámení o prostoru klíčů nebo monitoru k ladění těchto typů problémů najdete v dodatku k ladění Chybných prostorů Redis.
Odstranění klíče
Klienti Redis můžou vydat příkaz DEL nebo HDEL , který explicitně odebere klíče ze spravovaného Redis Azure. Počet operací odstranění můžete sledovat pomocí příkazu INFO . Pokud se volaly příkazy DEL nebo HDEL , budou uvedené v Commandstats
části.
# Commandstats
cmdstat_del:calls=2,usec=90,usec_per_call=45.00
cmdstat_hdel:calls=1,usec=47,usec_per_call=47.00
Asynchronní replikace
Každá instance Azure Managed Redis s povolenou vysokou dostupností je nakonfigurovaná s primárním uzlem a alespoň jednou replikou. Data se kopírují z primární repliky asynchronně pomocí procesu na pozadí. Web redis.io popisuje, jak funguje replikace dat Redis obecně. Ve scénářích, kdy klienti zapisují do Redis často, může dojít k částečné ztrátě dat, protože replikace není zaručená okamžitě. Pokud například primární server po zápisu klíče do klienta přestane fungovat, ale před procesem na pozadí bude moct tento klíč odeslat do repliky, klíč se ztratí, když replika převezme nový primární klíč.
Větší nebo úplná ztráta klíčů
Pokud z mezipaměti zmizela většina klíčů nebo všechny klíče, zkontrolujte následující možné příčiny:
Příčina | Description |
---|---|
Vyprazdňování kláves | Klíče se vyprázdnily ručně. |
Selhání instance Redis | Server Redis není k dispozici. |
Vyprazdňování kláves
Klienti mohou volat příkaz FLUSHDB nebo FLUSHALL , který odebere všechny klíče z instance Redis. Pokud chcete zjistit, jestli byly klíče vyprázdněné, použijte příkaz INFO . Tato Commandstats
část ukazuje, jestli byl volána některý FLUSH
z těchto příkazů:
# Commandstats
cmdstat_flushall:calls=2,usec=112,usec_per_call=56.00
cmdstat_flushdb:calls=1,usec=110,usec_per_call=52.00
Selhání instance Redis
Redis je úložiště dat v paměti. Data se uchovávají na fyzických nebo virtuálních počítačích, které hostují mezipaměť Redis. Mezipaměti Azure Managed Redis nabízejí vysokou odolnost proti ztrátě dat tím, že ve výchozím nastavení poskytují odolné mezipaměti zóny. Když dojde k selhání primárního horizontálního oddílu v takové mezipaměti, horizontální oddíl repliky převezme data automaticky. Tyto virtuální počítače se nacházejí v samostatných doménách, aby se minimalizovalo riziko nedostupnosti obou z nich současně v případě selhání nebo aktualizace. Pokud dojde k výpadku velkého datového centra, virtuální počítače se ale můžou stále zpomalovat. V těchto výjimečných případech dojde ke ztrátě dat.
Zvažte použití trvalosti dat Redis a geografické replikace ke zlepšení ochrany dat před těmito selháními infrastruktury.
Další informace
V těchto článcích najdete další informace o tom, jak se vyhnout ztrátě dat: