Hier zijn enkele hints:Aurora heeft veel voorbeelden. De ene is "schrijver" (meester), andere zijn "lezer" (slaven).
Wanneer een schrijver niet werkt, wordt één slaaf gepromoveerd tot nieuwe meester, andere slaven zullen nu repliceren vanaf deze nieuwe meester (automatisch opnieuw opstarten). Als de oude meester weer naar boven komt, wordt het een slaaf.
Aurora heeft een DNS-eindpunt voor clusters zoals "xx.cluster-yy.zz.rds.amazonaws.com" die verwijzen naar de huidige master. Wanneer een failover optreedt, wordt DNS vernieuwd ... maar niet onmiddellijk.
Een "verbinding" met aurora betekent 2 onderliggende verbinding met instanties:één met master, één met slave. Het stuurprogramma gebruikt de onderliggende verbinding met master of slave volgens Connection.setReadonly().
Elke keer dat het stuurprogramma verbinding maakt met een instantie, zorgt het ervoor dat de huidige status wordt gecontroleerd door de globale variabele "innodb_read_only" (OFF =master).
Aurora-instanties kunnen worden toegevoegd, dus bij de eerste verbinding, met behulp van het eindpunt van het gebruikerscluster, wordt de huidige lijst met instanties opgehaald met information_schema.replica_host_status.
Om de 2 onderliggende verbindingen tot stand te brengen, zal de driver verbinding maken met een willekeurige host, als dit de huidige master is, goed dan zijn alle andere hosts slaven, zo niet, dan zal de driver de slave zijn huidige master vragen, zodat de volgende verbinding de host zal verbinden met informatie_schema. replica_host_status waar session_id ='MASTER_SESSION_ID' (betrouwbaarder dan het gebruik van DNS). Als de verbinding met een instantie mislukt, wordt deze instantienaam gedurende een bepaalde tijd op een zwarte lijst geplaatst (deze zwarte lijst wordt per jvm gedeeld) om hergebruik te voorkomen. Het stuurprogramma probeert opnieuw verbinding te maken met een willekeurige beschikbare host totdat er geen is die niet op de zwarte lijst staat, en kan het vervolgens enige tijd opnieuw proberen met een op de zwarte lijst geplaatste host (afhankelijk van de parameters). Als de verbinding succesvol is, wordt de instantie "van de zwarte lijst verwijderd".
Voor failover van de onderliggende slave-verbinding wordt dan de master-verbinding gebruikt, en een onderliggende pool van threads zal dan proberen om een slave-instantie op de achtergrond opnieuw te verbinden.