Aquí hay algunos consejos:Aurora tiene muchas instancias. Uno es "escritor" (Maestro), otros son "Lectores" (Esclavos).
Cuando un escritor está inactivo, un esclavo será ascendido a nuevo maestro, otros esclavos ahora se replicarán desde este nuevo maestro (reinicio automático). Si el viejo amo vuelve a subir, se convertirá en un esclavo.
Aurora tiene un extremo de DNS para el clúster como "xx.cluster-yy.zz.rds.amazonaws.com" que apunta al maestro actual. Cuando ocurre una conmutación por error, el DNS se actualiza... pero no inmediatamente.
Una "conexión" a aurora significa 2 conexiones subyacentes a instancias:una al maestro, otra al esclavo. El controlador utilizará la conexión subyacente como maestro o esclavo de acuerdo con Connection.setReadonly().
Cada vez que el controlador se conecta a una instancia, se asegurará de verificar el estado actual de la variable global "innodb_read_only" (APAGADO =maestro).
Se pueden agregar instancias de Aurora, por lo que en la conexión inicial, utilizando el punto final del clúster de usuario, la lista actual de instancias se recuperará mediante information_schema.replica_host_status.
Para establecer las 2 conexiones subyacentes, el controlador se conectará a un host aleatorio, si este es el maestro actual, entonces todos los demás hosts son esclavos, si no, el controlador le preguntará al esclavo su maestro actual, por lo que la próxima conexión conectará el host usando information_schema. replica_host_status donde session_id ='MASTER_SESSION_ID' (más confiable que usar DNS). Si falla la conexión a una instancia, el nombre de esta instancia se colocará en una lista negra durante un cierto período de tiempo (esta lista negra se comparte por jvm) para evitar su reutilización. El controlador intenta volver a conectar un host aleatorio disponible hasta que no haya ninguno que no esté en la lista negra, luego puede volver a intentarlo con uno en la lista negra durante algún tiempo (dependiendo de los parámetros). Si la conexión es exitosa, entonces la instancia "no está en la lista negra".
Para la conmutación por error de la conexión esclava subyacente, se usa la conexión maestra y algún grupo subyacente de subprocesos intentará volver a conectar una instancia esclava en segundo plano.