6.2 MySQL InnoDB クラスタ
6.2.2 本番 InnoDB クラスタ のデプロイ
本番環境で作業している場合、InnoDB クラスタ を構成する MySQL サーバーインスタンスは、セクション
6.5「AdminAPI MySQL サンドボックス」 で説明されているように、単一のマシンではなく、ネットワークの一部と して複数のホストマシンで実行されます。 これらの手順に進む前に、サーバーインスタンスとしてクラスタに追加す る各マシンに必要なソフトウェアをインストールする必要があります。コンポーネントのインストール を参照してく ださい。
次の図は、このセクションで使用するシナリオを示しています:
本番 InnoDB クラスタ のデプロイ
図 6.2 本番デプロイメント
このページは機械翻訳したものです。
本番 InnoDB クラスタ のデプロイ
重要
すべてのインスタンスがローカルにデプロイされるサンドボックスデプロイメントとは異な り、AdminAPI がローカルファイルアクセス権を持ち、構成の変更を永続化できるマシンで は、本番デプロイメントでインスタンスの構成の変更を永続化する必要があります。 これを 行う方法は、インスタンスで実行されている MySQL のバージョンによって異なります。設 定の永続化 を参照してください。
サーバー接続情報を AdminAPI に渡すには、URI のような接続文字列またはデータディクショナリを使用しま す。URI 類似文字列またはキーと値のペアを使用したサーバーへの接続 を参照してください。 このドキュメントで は、URI のような文字列を示します。
このセクションでは、次のことを前提としています:
• インスタンスへ MySQL コンポーネントがインストールされている
• MySQL Shell がインストールされ、およびインスタンスを指定して接続できる
• 適切な管理ユーザーが作成されている
6.2.2.1 新しい本番 InnoDB クラスタ のデプロイ
次の各セクションでは、新しい本番 InnoDB クラスタ をデプロイする方法について説明します。
• 本番インスタンスの構成
• クラスタの作成
• クラスタへのインスタンスの追加
• InnoDB クラスタによって作成されたユーザーアカウント
• InnoDB クラスタ ポートの構成
本番インスタンスの構成
AdminAPI には、インスタンスが InnoDB クラスタ 使用のために適切に構成されているかどうかをチェック し、InnoDB クラスタ と互換性のない設定が見つかった場合にインスタンスを構成する dba.configureInstance() 関 数が用意されています。 インスタンスに対して dba.configureInstance() コマンドを実行すると、インスタンスを InnoDB クラスタ の使用に使用できるようにするために必要なすべての設定がチェックされます。 インスタンスで構 成の変更が不要な場合は、インスタンスの構成を変更する必要はなく、dba.configureInstance() コマンド出力によっ て、インスタンスで InnoDB クラスタ を使用する準備ができていることが確認されます。 インスタンスを InnoDB ク ラスタ と互換性を持たせるために変更が必要な場合は、互換性のない設定のレポートが表示され、コマンドでインス タンスオプションファイルを変更できます。 MySQL Shell のインスタンスへの接続方法およびインスタンスで実行さ れている MySQL のバージョンに応じて、これらの変更をリモートインスタンスオプションファイルに永続化するこ とで永続化できます。設定の永続化 を参照してください。 構成変更の永続化をサポートしていないインスタンスで は、インスタンスをローカルに構成する必要があります。dba.configureLocalInstance() でのインスタンスの構成 を参 照してください。 または、インスタンスオプションファイルを手動で変更することもできます。詳細は、オプション ファイルの使用 を参照してください。 構成の変更方法に関係なく、構成の変更が検出されるように、MySQL の再起 動が必要になる場合があります。
dba.configureInstance() コマンドの構文は次のとおりです:
dba.configureInstance([instance][, options])
ここで、instance はインスタンス定義で、options は操作を構成するための追加オプションを含むデータディクショナ リです。 このコマンドは、操作結果に関する説明テキストメッセージを返します。
instance 定義はインスタンスの接続データです。URI 類似文字列またはキーと値のペアを使用したサーバーへの接続
を参照してください。 ターゲットインスタンスがすでに InnoDB クラスタ に属している場合、エラーが生成され、プ ロセスは失敗します。オプションディクショナリには次のものを含めることができます:
•
mycnfPath - インスタンスの MySQL オプションファイルのパス。
本番 InnoDB クラスタ のデプロイ
•
outputMycnfPath - インスタンスの MySQL オプションファイルを書き込む代替出力パス。
•
password - 接続で使用されるパスワード。
•
clusterAdmin - 作成する InnoDB クラスタ 管理者ユーザーの名前。 サポートされているフォーマットは、標準の
MySQL アカウント名フォーマットです。 ユーザー名およびホスト名の識別子または文字列をサポートします。 デ フォルトでは、引用符で囲まれていない場合、入力は文字列であるとみなされます。 管理用のユーザーアカウント の作成を参照してください。
•
clusterAdminPassword - clusterAdmin を使用して作成される InnoDB クラスタ 管理者アカウントのパスワード。 こ
のオプションを使用して指定できますが、これは潜在的なセキュリティリスクです。 このオプションを指定せずにclusterAdmin オプションを指定すると、対話型プロンプトでパスワードの入力を求められます。
• 非推奨であり、将来のバージョンでの削除がスケジュールされています
clearReadOnly - super_read_only をオフに設定する必要があることを確認するために使用されるブール値。スー
パー読取り専用およびインスタンス を参照してください。•
interactive - ユーザーにプロンプトが表示されず、確認プロンプトが表示されないように、コマンド実行で対話型
ウィザードを無効にするために使用されるブール値。
•
restart - 操作を終了するためにターゲットインスタンスのリモート再起動を実行する必要があることを示すブール
値。
接続パスワードはインスタンス定義に含めることができますが、これはセキュアではないためお薦めしません。
MySQL Shell セクション4.4「プラガブルパスワードストア」 を使用して、インスタンスパスワードを安全に格納し ます。
インスタンスに対して dba.configureInstance() が発行されると、このコマンドはインスタンス設定が InnoDB クラス タ の使用に適しているかどうかをチェックします。 InnoDB クラスタ で必要な設定を示すレポートが表示されます。
インスタンスの設定を変更する必要がない場合は、InnoDB クラスタ で使用でき、クラスタの作成 に進むことができ ます。 インスタンス設定が InnoDB クラスタ の使用に対して有効でない場合、dba.configureInstance() コマンドは変 更が必要な設定を表示します。 インスタンスを構成する前に、次の情報を含むテーブルに示されている変更を確認す るよう求められます:
•
Variable - 無効な構成変数。
•
Current Value - 無効な構成変数の現在の値。
•
Required Value - 構成変数に必要な値。
続行方法は、インスタンスが永続化設定をサポートしているかどうかによって異なります。設定の永続化 を参照 してください。 MySQL Shell が現在実行されている MySQL インスタンス (つまり、ローカルインスタンス) に 対して dba.configureInstance() を発行すると、インスタンスの自動構成が試行されます。 リモートインスタン スに対して dba.configureInstance() が発行されたときに、インスタンスが構成変更の永続化を自動的にサポー トしている場合は、これを選択できます。 リモートインスタンスが、InnoDB クラスタ で使用できるように構 成するための変更の永続化をサポートしていない場合は、インスタンスをローカルに構成する必要があります。
dba.configureLocalInstance() でのインスタンスの構成を参照してください。
一般に、dba.configureInstance() でオプションファイルを構成した後にインスタンスを再起動する必要はありません が、特定の設定によっては再起動が必要になる場合があります。 この情報は、dba.configureInstance() の発行後に 生成されるレポートに表示されます。 インスタンスが RESTART ステートメントをサポートしている場合、MySQL Shell はインスタンスを停止してから起動できます。 これにより、インスタンスオプションファイルに加えられた変 更が mysqld によって確実に検出されます。 詳細は、RESTART を参照してください。
注記
RESTART ステートメントを実行すると、インスタンスへの現在の接続が失われます。 自動
再接続が有効な場合、サーバーの再起動後に接続が再確立されます。 それ以外の場合は、接 続を手動で再確立する必要があります。dba.configureInstance() メソッドは、クラスタのメンバー間の接続に使用される適切なユーザーがクラスタの使用に
使用できることを検証します。管理用のユーザーアカウントの作成 を参照してください。このページは機械翻訳したものです。
本番 InnoDB クラスタ のデプロイ
クラスタを管理するユーザーを指定しない場合は、対話型モードでウィザードを使用して次のいずれかのオプション を選択できます:
• root ユーザーのリモート接続を有効にします。本番環境ではお薦めしません
• 新規ユーザーの作成
• ユーザーを手動で作成する必要がある自動構成はありません ヒント
インスタンスに super_read_only=ON がある場合は、AdminAPI で super_read_only=OFF を 設定できることを確認する必要がある場合があります。 詳しくはスーパー読取り専用および インスタンスをご覧ください。
クラスタの作成
インスタンスを準備したら、MySQL Shell が接続されているインスタンスをクラスタのシードインスタンスとして使 用して、dba.createCluster() 関数を使用してクラスタを作成します。 シードインスタンスは、クラスタに追加した他 のインスタンスにレプリケートされ、シードインスタンスのレプリカになります。 この手順では、ic-1 インスタンス がシードとして使用されます。 dba.createCluster(name) MySQL Shell を発行すると、MySQL Shell の現在のグロー バルセッションに接続されているサーバーインスタンスへの クラシック MySQL プロトコル セッションが作成されま す。 たとえば、testCluster というクラスタを作成し、返されたクラスタを cluster という変数に割り当てるには、次 のようにします:
mysql-js> var cluster = dba.createCluster('testCluster') Validating instance at icadmin@ic-1:3306...
This instance reports its own address as ic-1 Instance configuration is suitable.
Creating InnoDB cluster 'testCluster' on 'icadmin@ic-1:3306'...
Adding Seed Instance...
Cluster successfully created. Use Cluster.addInstance() to add MySQL instances.
At least 3 instances are needed for the cluster to be able to withstand up to one server failure.
返されたクラスタを変数に割り当てるこのパターンを使用すると、Cluster オブジェクトメソッドを使用してクラスタ に対してさらに操作を実行できます。 返された Cluster オブジェクトは、MySQL Shell グローバルセッションから独 立した新しいセッションを使用します。 これにより、MySQL Shell グローバルセッションを変更した場合、Cluster オブジェクトはインスタンスへのセッションを維持します。
クラスタを管理できるようにするには、必要な権限を持つ適切なユーザーがいることを確認する必要があります。 推 奨される方法は、管理ユーザーを作成することです。 インスタンスの構成時に管理ユーザーを作成しなかった場合 は、Cluster.setupAdminAccount() 操作を使用します。 たとえば、変数 cluster に割り当てられた InnoDB クラスタ を 管理できる icadmin という名前のユーザーを作成するには、次のように発行します:
mysql-js> cluster.setupAdminAccount(icadmin)
クラスタ管理ユーザーの詳細は、AdminAPI のユーザーの構成 を参照してください。
dba.createCluster() 操作では、MySQL Shellinteractive オプションがサポートされます。 interactive がオンの場合、プ
ロンプトは次の状況で表示されます:• クラスタに属するインスタンスで実行され、adoptFromGr オプションが false の場合、既存のクラスタを採用する かどうかを尋ねられます
•
force オプションが使用されていない (true に設定されていない) 場合、マルチプライマリクラスタの作成を確認す
るよう求められます 注記
メタデータにアクセスできないというエラーが発生した場合は、ループバックネットワーク インタフェースが構成されている可能性があります。 InnoDB クラスタ を正しく使用するに は、ループバックインタフェースを無効にします。
クラスタが作成されたことを確認するには、クラスタインスタンスの status() 関数を使用します。 Cluster.status() に よるクラスタステータスの確認を参照してください。