sql >> Databáze >  >> RDS >> Mysql

mariadb konektor J Aurora Rychlá implementace převzetí služeb při selhání

Zde je několik tipů:Aurora má mnoho případů. Jeden je „spisovatel“ (Mistr), další jsou „čtenáři“ (Otroci).

Když je zapisovač mimo provoz, jeden slave bude povýšen na nového mastera, ostatní slave se nyní replikují z tohoto nového masteru (automatický restart). Pokud se starý pán znovu objeví, stane se otrokem.

Aurora má koncový bod DNS pro cluster jako „xx.cluster-yy.zz.rds.amazonaws.com“, který ukazuje na aktuální master. Když dojde k převzetí služeb při selhání, DNS se obnoví... ale ne okamžitě.

„Připojení“ k polární záři znamenají 2 základní připojení k instancím:jedno k master, jedno k slave. Ovladač použije základní připojení k master nebo slave podle Connection.setReadonly().

Pokaždé, když se ovladač připojí k instanci, zajistí kontrolu aktuálního stavu globální proměnné "innodb_read_only" (OFF =master).

Instance Aurora lze přidat, takže při počátečním připojení pomocí koncového bodu uživatelského clusteru bude aktuální seznam instancí načten pomocí information_schema.replica_host_status.

Pro navázání 2 základních připojení se ovladač připojí k náhodnému hostiteli, pokud je to aktuální hlavní hostitel, dobře, pak jsou všichni ostatní hostitelé podřízenými, pokud ne, ovladač se zeptá podřízeného na jeho aktuálního hlavního hostitele, takže další připojení připojí hostitele pomocí informačního schématu. replica_host_status kde session_id ='MASTER_SESSION_ID' (spolehlivější než použití DNS). Pokud selže připojení k instanci, bude tento název instance na určitou dobu umístěn na černou listinu (tato černá listina je sdílena na jvm), aby se předešlo jejímu opětovnému použití. Ovladač se pokusí znovu připojit náhodného dostupného hostitele, dokud žádný není na černé listině, pak to může nějakou dobu opakovat s hostitelem na černé listině (v závislosti na parametrech). Pokud je připojení úspěšné, instance je "un-blacklisted".

Pro převzetí služeb při selhání základního slave připojení se pak použije hlavní připojení a nějaký základní fond vláken se pak pokusí znovu připojit slave instanci na pozadí.




  1. Nejlepší způsob, jak ukládat a načítat synonyma v databázi mysql

  2. Výpočet, které body (zeměpisná šířka, délka) jsou v určité vzdálenosti v mysql?

  3. PDO::fetchAll vs. PDO::fetch ve smyčce

  4. Jak vložit více hodnot zaškrtávacích políček do databáze