sql >> Databasteknik >  >> RDS >> Mysql

mariadb-kontakt J Aurora Snabb implementering av failover

Här är några tips:Aurora har många instanser. En är "författare" (Mästare), andra är "Reader" (slavar).

När en writer är nere kommer en slav att befordras till ny master, andra slavar kommer nu att replikera från denna nya master (automatisk omstart). Om den gamle mästaren kommer upp igen kommer den att bli en slav.

Aurora har en DNS-slutpunkt för kluster som "xx.cluster-yy.zz.rds.amazonaws.com" som pekar på nuvarande master. När en failover inträffar uppdateras DNS ... men inte omedelbart.

En "anslutning" till norrsken betyder 2 underliggande kopplingar till instanser:en till master, en till slav. Drivrutinen kommer att använda den underliggande anslutningen till master eller slav enligt Connection.setReadonly().

Varje gång drivrutinen ansluter till en instans kommer den att säkerställa aktuell statuskontroll av den globala variabeln "innodb_read_only" (OFF =master).

Aurora-instanser kan läggas till, så vid initial anslutning, med hjälp av användarklusterslutpunkt, kommer den aktuella listan med instanser att hämtas med information_schema.replica_host_status.

För att etablera de 2 underliggande anslutningarna kommer föraren att ansluta till en slumpmässig värd, om detta är den nuvarande mastern, bra då är alla andra värdar slavar, om inte kommer föraren fråga slaven sin nuvarande master så nästa anslutning kommer att ansluta värden med information_schema. replica_host_status där session_id ='MASTER_SESSION_ID' (mer tillförlitlig än att använda DNS). Om anslutningen till en instans misslyckas, kommer detta instansnamn att placeras i en svartlista under en viss tid (denna svarta lista delas per jvm) för att undvika återanvändning. Drivrutinen försöker återansluta en slumpmässig tillgänglig värd tills det inte finns någon som inte är svartlistad, och kan sedan försöka igen med en svartlistad en tid (beroende på parametrar). Om anslutningen lyckas är instansen "av-svartlistad".

För failover av underliggande slavanslutning används sedan masteranslutning, och någon underliggande pool av tråd kommer sedan att försöka återansluta en slavinstans i bakgrunden.




  1. Simulerar MySQL:s ORDER BY FIELD() i Postgresql

  2. PHP ignorerar ssl-certifikat vid anslutning till MySql

  3. Dynamisk MySQL-partitionering baserad på UnixTime

  4. Använder samma kolumn flera gånger i WHERE-satsen