DBAtlas · Atlas für Datenbankbetrieb

MySQL Router für ein InnoDB Cluster bootstrappen

MySQLRouter & Proxy

Befehl

# Generates config from metadata and creates the router account; --user is required when run as root
mysqlrouter --bootstrap icadmin@db1:3306 --directory /etc/mysqlrouter/prod --account routeruser --account-create if-not-exists --name router01 --conf-bind-address 0.0.0.0 --user mysqlrouter
/etc/mysqlrouter/prod/start.sh
# Ports: 6446 RW, 6447 RO, 6450 RW split (classic); 6448 / 6449 X protocol
mysql -h app-host -P 6446 -u app -p -e "SELECT @@hostname"
mysql -h app-host -P 6447 -u app -p -e "SELECT @@hostname"
mysqlsh icadmin@db1:3306 -- cluster list-routers

Was es tut

Registriert Router in den Cluster-Metadaten und erzeugt Konto und Konfiguration; die Anwendung erreicht über den RW-Port die aktuelle Primary und über den RO-Port reihum die Secondaries.

Wann einsetzen

Wenn vor einem InnoDB Cluster / ClusterSet / ReplicaSet eine transparente Failover-Schicht gebraucht wird; typischerweise ein Router je Anwendungsserver.

Vorsicht

Router ist zustandslos; neben der Anwendung betrieben, vermeidet er einen Single Point of Failure, ein einzelner zentraler Router nicht. Das Bootstrap-Konto wird nur beim Bootstrap genutzt; Router liest Metadaten mit seinem eigenen Konto (routeruser). Topologieänderungen erfährt er über den Metadata Cache ohne erneutes Bootstrap. Der RW-Split-Port (6450) sendet Lesezugriffe innerhalb einer Transaktion an die Primary und andere an Secondaries; Vorsicht bei Anwendungen, die Read-your-Writes erwarten. Die Router-Version darf nicht älter sein als die MySQL-Server im Cluster.

In DBAtlas öffnen →

Verwandte Einträge