sql >> Database teknologi >  >> RDS >> Mysql

mariadb-stik J Aurora Hurtig failover-implementering

Her er nogle tip:Aurora har mange forekomster. Den ene er "skribent" (mester), andre er "læser" (slaver).

Når en writer er nede, vil en slave blive forfremmet til ny master, andre slaver vil nu replikere fra denne nye master (automatisk genstart). Hvis den gamle herre kommer op igen, bliver den en slave.

Aurora har et DNS-endepunkt for klynge som "xx.cluster-yy.zz.rds.amazonaws.com", der peger på den nuværende master. Når en failover opstår, opdateres DNS ... men ikke med det samme.

En "forbindelse" til aurora betyder 2 underliggende forbindelse til instanser:en til master, en til slave. Driveren vil bruge den underliggende forbindelse til master eller slave i henhold til Connection.setReadonly().

Hver gang driveren opretter forbindelse til en instans, vil den sikre den aktuelle tilstandskontrol af den globale variabel "innodb_read_only" (OFF =master).

Aurora-forekomster kan tilføjes, så ved indledende forbindelse, ved hjælp af brugerklyngeslutpunkt, vil den aktuelle liste over forekomster blive hentet ved hjælp af information_schema.replica_host_status.

For at etablere de 2 underliggende forbindelser, vil chaufføren oprette forbindelse til en tilfældig vært, hvis dette er den nuværende master, godt så er alle andre værter slaver, hvis ikke, vil chaufføren spørge slaven om sin nuværende master, så næste forbindelse vil forbinde værten ved hjælp af information_schema. replica_host_status hvor session_id ='MASTER_SESSION_ID' (mere pålideligt end at bruge DNS). Hvis forbindelsen til en instans mislykkes, vil dette instansnavn blive sat på en sortliste i et vist tidsrum (denne sortliste deles pr. jvm) for at undgå genbrug. Driveren prøver at genoprette en tilfældig tilgængelig vært, indtil der ikke er nogen, der ikke er sortlistet, og kan derefter prøve igen med en sortlistet i nogen tid (afhængigt af parametre). Hvis forbindelsen lykkes, er instansen "ikke-sortlistet".

Til failover af underliggende slaveforbindelse, bruges masterforbindelsen, og en underliggende pool af tråd vil så forsøge at genoprette en slaveforekomst i baggrunden.




  1. Forskellen mellem multi-sætning tabel-værdisatte funktioner og inline tabel-værdi-funktioner i SQL Server

  2. SQLite Node.js

  3. omdanne tabelrækker til kolonner i mysql

  4. Hvordan kommer jeg i top 1 i Oracle?