DBAtlas · データベース運用アトラス

InnoDB Clusterに対してMySQL Routerをブートストラップ

MySQLRouterとプロキシ

コマンド

# 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

概要

Routerをクラスタのメタデータに登録し、アカウントと構成を生成する。アプリケーションはRWポートで現在のプライマリに、ROポートでセカンダリにラウンドロビンで到達する。

使用する場面

InnoDB Cluster / ClusterSet / ReplicaSetの前段に透過的なフェイルオーバー層を置くときに。一般的にはアプリケーションサーバーごとに1つのRouter。

注意

Routerはステートレスであり、アプリケーションの隣で実行すれば単一障害点を避けられるが、単一の集中Routerではそうはならない。ブートストラップ用アカウントはブートストラップ中にのみ使用され、Routerは独自のアカウント(routeruser)でメタデータを読み取る。トポロジの変更は再ブートストラップなしでメタデータキャッシュを通じて認識する。RW分割ポート(6450)はトランザクション内の読み取りをプライマリに、それ以外をセカンダリに送る。read-your-writesを期待するアプリケーションには注意する。RouterのバージョンはクラスタのMySQLサーバーより古くてはならない。

DBAtlas で開く →

関連項目