MySQL 8.0外壳/.../ MySQL路由器のブトストラップ

このペジは機械翻訳したものです。

6.4.1 MySQL路由器のブトストラップ

InnoDB ReplicaSetまたはInnoDBクラスタに対してMySQL路由器をブートストラップして,ルーティングを自動的に構成します。ブートストラッププロセスは,MySQL路由器を実行する特定の方法で,通常のルーティングは開始されず,かわりにメタデータに基づいてmysqlrouter.confファ邮箱ルが構成されます。コマンドラMySQL路由器ンでmysqlrouterコマンドの起動時に——引导オプションを渡し,メタデータからトポロジ情報を取得して,サーバーインスタンスへのルーティング接続を構成します。MySQL安装または,Windowsではを使用してMySQL路由器をブートストラップします。MySQL安装程序でのMySQL路由器の構成を参照してください。MySQL路由器がブートストラップされると,クライアントアプリケーションはパブリッシュするポートに接続します。MySQL路由器は着信ポートに基づいてクライアント接続をインスタンスに自動的にリダイレクトします。たとえば,6646 は、クラシック MySQL プロトコル を使用した読取り/書込み接続にデフォルトで使用されます。 たとえば、インスタンスに予期しない障害が発生したためにトポロジが変更された場合、MySQL Router はその変更を検出し、ルーティングを残りのインスタンスに自動的に調整します。 これにより、クライアントアプリケーションでフェイルオーバーを処理したり、基礎となるトポロジに注意する必要がなくなります。 詳細は、MySQL InnoDB集群路由を参照してください。

注記

サーバーインスタンスにリダイレクトするようにMySQL路由器を手動で構成しないでください。これにより,MySQL路由器はメタデ,タから構成を取得できるため,常に——引导オプションを使用してください。集群元数据和状态を参照してください。

MySQL路由器ユザの構成

MySQL路由器がInnoDBクラスタまたはInnoDB ReplicaSetに接続する場合,適切な権限を持つユーザーアカウントが必要です。MySQL路由器バジョン8.0.19からは,この内部ユザは——帐户オプションを使用して指定できます。以前のバージョンでは,MySQL路由器はクラスタのブートストラップごとに内部アカウントを作成したため,時間の経過とともに多数のアカウントが構築される可能性がありました。MySQL壳バージョン8.0.20から,AdminAPIを使用してMySQL路由器に必要なユーザーアカウントを設定できます。setupRouterAccount(用户、[选项])操作を使用してMySQLユーザーアカウントを作成するか,既存のアカウントをアップグレードし,MySQL路由器でInnoDBクラスタまたはInnoDB ReplicaSetの操作に使用できるようにします。これは,InnoDBクラスタおよびInnoDB ReplicaSetでMySQL路由器を構成するための推奨方法です。

変数testClusterによって参照されるInnoDBクラスタにmyRouter1という名前の新しいMySQL路由器アカウントを追加するには,次のコマンドを発行します:

mysqlsh > testCluster.setupRouterAccount (myRouter1

この場合,ドメ邮箱ンは指定されないため,アカウントはワ邮箱ルドカ,ド()文字を使用して作成されるため、作成されたユ。example.comドメ邮箱ンからのみ接続できるようにアカウントを制限するには,次のコマンドを発行します:

mysqlsh > testCluster.setupRouterAccount (myRouter1@example.com

この操作では,パスワードの入力を求められ,適切な権限を持つMySQL路由器ユーザーが設定されます。InnoDBクラスタまたはInnoDB ReplicaSetに複数のインスタンスがある場合,作成されたMySQL路由器ユーザーはすべてのインスタンスに伝播されます。

MySQL路由器ユーザーがすでに構成されている場合(たとえば,8.0.20より前のバージョンを使用していた場合),setupRouterAccount ()操作を使用して既存のユザを再構成できます。この場合は,真に設定された更新オプションを渡します。たとえば,myOldRouterユザを再構成するには,次のように発行します:

mysqlsh > testCluster.setupRouterAccount (myOldRouter, {'update':1})

MySQL路由器のデプロ

MySQL路由器の推奨デプロメントは,アプリケションと同じホスト上にあります。サンドボックスデプロイメントを使用する場合,すべてが単一のホストで実行されるため,MySQL路由器を同じホストにデプロイします。本番デプロイメントを使用する場合は,クライアントアプリケーションのホストに使用する各マシンにMySQL路由器インスタンスをデプロイすることをお薦めします。アプリケーションインスタンスが接続する共通マシンにMySQL路由器をデプロイすることもできます。詳細は,安装MySQL路由器を参照してください。

InnoDBクラスタまたはInnoDB ReplicaSetに基づいてMySQL路由器をブートストラップするには,オンラインインスタンスへのURIのような接続文字列が必要です。mysqlrouterコマンドを実行し,——引导=实例オプションを指定します。ここで,实例はオンラereplicationンereplicationンスタンスへのuriのような接続文字列です。MySQL路由器はインスタンスに接続し、含まれているメタデータキャッシュプラグインを使用して、サーバーインスタンスアドレスとそのロールのリストで構成されるメタデータを取得します。 例:

Shell > mysqlrouter——bootstrap icadmin@ic-1:3306——user=mysqlrouter

MySQL路由器で使用するンスタンスパスワドおよび暗号化キの入力を求められます。この暗号化キーはMySQL路由器がクラスタへの接続に使用するインスタンスパスワードを暗号化するために使用されます。クラ邮箱アント接続に使用できるポ邮箱トも表示されます。ブトストラップ関連のその他のオプションは,引导选项を参照してください。

ヒント

この時点で,MySQL路由器は接続をルティングするために起動されていません。ブトストラップは別のプロセスです。

MySQL路由器ブトストラッププロセスでは,前述のicadmin@ic-1:3306の例で,——引导オプションに渡されたアドレスから取得されたメタデタに基づいて設定されたmysqlrouter.confファ邮箱ルが作成されます。MySQL路由器では,取得されたメタデ,タに基づいて,metadata_cacheセクションを含むmysqlrouter.confファ邮箱ルが自動的に構成されます。MySQL路由器8.0.14以降を使用している場合,——引导オプションは,dynamic_stateによって構成されたパスでアクティブなMySQLメタデータサーバーアドレスを追跡および格納するようにMySQL路由器を自動的に構成します。これにより,MySQL路由器の再起動時に,どのMySQLメタデータサーバーアドレスが最新であるかが確実に認識されます。詳細は,dynamic_stateのドキュメントを参照してください。

以前のMySQL路由器バージョンでは,メタデータサーバー情報はMySQL路由器の初期ブートストラップ操作中に定義され,クラスタ内のすべてのサーバーインスタンスのアドレスを含むbootstrap_server_addressesとして構成ファ邮箱ルに静的に格納されていました。例:

[metadata_cache:prodCluster] router_id=1 bootstrap_server_addresses=mysql://icadmin@ic-1:3306,mysql://icadmin@ic-2:3306,mysql://icadmin@ic-3:3306 user=mysql_router1_jy95yozko3k2 metadata_cluster=prodCluster ttl=300
ヒント

MySQL路由器8.0.13以前を使用している場合,MySQL路由器のブートストラップ後に別のサーバーインスタンスを追加してクラスタのトポロジを変更するときは,更新されたメタデータに基づいてbootstrap_server_addressesを更新する必要があります。——引导オプションを使用してMySQL路由器を再起動するか,mysqlrouter.confファ邮箱ルのbootstrap_server_addressesセクションを手動で編集してMySQL路由器を再起動します。

生成されたMySQL路由器構成により,クラスタへの接続に使用するTCPポートが作成されます。デフォルトでは,クラシックMySQLプロトコルとXプロトコルの両方を使用してクラスタと通信するためのポートが作成されます。Xプロトコルを使用するには,サーバーインスタンスにXプラグインがインストールおよび構成されている必要があります。これは,MySQL 8.0以降のデフォルトです。デフォルトで使用可能なTCPポトは次のとおりです:

  • 6446——MySQL路由器が受信接続をプライマリサーバーインスタンスにリダイレクトするクラシックMySQLプロトコル読取り/書込みセッションの場合。

  • 6447——MySQL路由器が受信接続をセカンダリサーバーインスタンスのいずれかにリダイレクトするクラシックMySQLプロトコル読取り専用セッションの場合。

  • 64460——MySQL路由器が受信接続をプライマリサーバーインスタンスにリダイレクトするXプロトコル読取り/書込みセッションの場合。

  • 64470——MySQL路由器が受信接続をセカンダリサーバーインスタンスのいずれかにリダイレクトするXプロトコル読取り専用セッションの場合。

MySQL路由器の構成によっては,ポ,ト番号が前述のものと異なる場合があります。たとえば,——conf-base-portオプションまたはgroup_replication_single_primary_mode変数を使用する場合です。MySQL路由器を起動すると,正確なポ,トがリストされます。

着信接続のリダレクト方法は,使用されている基礎となるトポロジによって異なります。たとえば,単一プライマリクラスタを使用している場合,MySQL路由器はデフォルトでXプロトコルおよびクラシックMySQLプロトコルポートを公開します。これらのポートは,クライアントが読取り/書込みセッションのために接続し,クラスタの単一プライマリにリダイレクトされます。マルチプライマリクラスタでは,読取り/書込みセッションはラウンドロビン方式でプライマリインスタンスのいずれかにリダイレクトされます。6446年たとえば,ポートへの最初の接続はic-1インスタンスにリダイレクトされ,ポート6446への次の接続はic-2インスタンスにリダイレクトされます。受信読取り専用接続の場合,MySQL路由器は接続をセカンダリインスタンスのいずれかにラウンドロビン方式でリダイレクトします。この動作を変更するには,routing_strategyオプションを参照してください。

ブトストラップして構成したら,MySQL路由器を起動します。——引导オプションを指定してシステム全体の邮箱ンスト邮箱ルを使用した場合は,邮箱次のコマンドを発行します:

壳> mysqlrouter &

——目录オプションを使用してMySQL路由器をディレクトリにインストールした場合は,インストール先のディレクトリにあるstart.shスクリプトを使用します。または,システムのブート時にMySQL路由器を自動的に起動するようにサービスを設定します。启动MySQL路由器を参照してください。前述のように,MySQL壳牌などのMySQLクライアントをいずれかの着信MySQL路由器ポートに接続し,クライアントがいずれかのサーバーインスタンスに透過的に接続される方法を確認できるようになりました。

Shell > mysqlsh——uri root@localhost:6442

実際に接続しているンスタンスを確認するには,港口ステタス変数に対してSQLクエリを発行します。

切换到sql模式…命令以;mysql-sql >选择@@port;+--------+ | @@ 港口  | +--------+ | 3310年  | +--------+

MySQL路由器でのreplicsetsの使用

MySQL路由器8.0.19以降を使用してInnoDB ReplicaSetに対してブートストラップできます。セクション6.4“MySQL路由器”を参照してください。生成されるMySQL路由器構成ファMySQL路由器構成ファMySQL路由器構成ファcluster_typeオプションの追加です。MySQL路由器がReplicaSetに対してブートストラップされると,生成される構成ファイルには次のものが含まれます:

cluster_type = rs

MySQL路由器をInnoDB ReplicaSetとともに使用する場合は,次の点に注意してください:

  • MySQL路由器の読取り/書込みポートは,クライアント接続をReplicaSetのプライマリインスタンスに転送

  • ReplicaSetのセカンダリインスタンスへのMySQL路由器ダイレクトクライアント接続の読取り専用ポート(ただし,プライマリに転送することもできます)

  • MySQL路由器はプライマリインスタンスからReplicaSetトポロジに関する情報を取得

  • プライマリインスタンスが使用できなくなり,別のインスタンスがに昇格されると,MySQL路由器は自動的にリカバリ

InnoDBクラスタとまったく同じ方法で,ReplicaSetに対してブートストラップされたMySQL路由器インスタンスを操作します。ReplicaSet.listRouters ()およびReplicaSet.removeRouterMetadata ()の詳細は,クラスタルタの操作を参照してください。