目次
とある日
KubernetesのMySQLオペレーターは、Kubernetesクラスター内のMySQLInnoDBクラスターのライフサイクルをサポートします。これは、TLS証明書とレプリケーションのセットアップの管理を含むMySQLサーバーとMySQLルーターのインスタンスの展開を簡素化することから、それらの継続的な管理とバックアップのサポート(バックアップの1つであれスケジュールに従っている場合)にまで及びます。
触ってみたいと思いつつも、InnoDBクラスターって何ってなったので調べてみました。
あくまでも、個人的なメモです。
MySQL InnoDB Cluster とは?
MySQL :: MySQL 8.0 リファレンスマニュアル :: 21 InnoDB クラスタ
関連用語まとめ
ところどころMySQL用語があり、なんのことかわからないのでメモ。
MySQL Shell
MySQL Shell は、MySQL の高度なクライアントおよびコードエディタです。 このドキュメントでは、MySQL Shell のコア機能について説明します。 mysql と同様の提供される SQL 機能に加えて、MySQL Shell は JavaScript および Python のスクリプト機能を提供し、MySQL を操作するための API を備えています。
AdminAPI
MySQL Shell には、dba グローバル変数とそれに関連付けられたメソッドを介してアクセスする AdminAPI が含まれています。 dba 変数メソッドは、InnoDB クラスタ および InnoDB ReplicaSet のデプロイ、構成および管理を可能にする操作を提供します。 たとえば、dba.createCluster() メソッドを使用して InnoDB クラスタ を作成します。 また、AdminAPI では、InnoDB クラスタ と InnoDB ReplicaSet の統合を可能にするユーザーの作成や更新など、一部の MySQL Router 関連タスクの管理がサポートされています。
MySQL Group Replication
グループは、一度に 1 つのサーバーのみが更新を受け入れる自動プライマリ選択を使用して、単一プライマリモードで動作できます。 または、グループをマルチプライマリモードでデプロイすることもできます。このモードでは、更新が同時に発行されても、すべてのサーバーが更新を受け入れることができます。
MySQL Router
MySQLルーターはInnoDBクラスターの一部であり、アプリケーションとバックエンドMySQLサーバー間の透過的なルーティングを提供する軽量ミドルウェアです。データベーストラフィックを適切なバックエンドMySQLサーバーに効果的にルーティングすることで高可用性とスケーラビリティを提供するなど、さまざまなユースケースに使用できます。プラグ可能なアーキテクチャにより、開発者はカスタムユースケース用にMySQLルーターを拡張することもできます。
MySQL :: MySQL Router 8.0 :: 1.1MySQLInnoDBクラスターのルーティング
bootstrapping
InnoDB ReplicaSet または InnoDB クラスタ に対して MySQL Router をブートストラップして、ルーティングを自動的に構成します。 ブートストラッププロセスは、MySQL Router を実行する特定の方法で、通常のルーティングは開始されず、かわりにメタデータに基づいて
mysqlrouter.conf
ファイルが構成されます。 コマンドラインで MySQL Router を強化するには、mysqlrouter コマンドの起動時に--bootstrap
オプションを渡し、メタデータからトポロジ情報を取得して、サーバーインスタンスへのルーティング接続を構成します。 または、Windows では、MySQL Installer を使用して MySQL Router をブートストラップします。MySQL Installer での MySQL Router の構成 を参照してください。 MySQL Router がブートストラップされると、クライアントアプリケーションはパブリッシュするポートに接続します。MySQL Router は、着信ポートに基づいてクライアント接続をインスタンスに自動的にリダイレクトします。たとえば、6646 は、クラシック MySQL プロトコル を使用した読取り/書込み接続にデフォルトで使用されます。 たとえば、インスタンスに予期しない障害が発生したためにトポロジが変更された場合、MySQL Router はその変更を検出し、ルーティングを残りのインスタンスに自動的に調整します。 これにより、クライアントアプリケーションでフェイルオーバーを処理したり、基礎となるトポロジに注意する必要がなくなります。 詳細は、Routing for MySQL InnoDB Clusterを参照してください。
create MySQL Router users
MySQL Router が InnoDB クラスタ または InnoDB ReplicaSet に接続する場合、適切な権限を持つユーザーアカウントが必要です。 MySQL Router バージョン 8.0.19 からは、この内部ユーザーは --account オプションを使用して指定できます。 以前のバージョンでは、MySQL Router はクラスタのブートストラップごとに内部アカウントを作成したため、時間の経過とともに多数のアカウントが構築される可能性がありました。 MySQL Shell バージョン 8.0.20 から、AdminAPI を使用して MySQL Router に必要なユーザーアカウントを設定できます。 setupRouterAccount(user, [options]) 操作を使用して、MySQL ユーザーアカウントを作成するか、既存のアカウントをアップグレードし、MySQL Router で InnoDB クラスタ または InnoDB ReplicaSet の操作に使用できるようにします。 これは、InnoDB クラスタ および InnoDB ReplicaSet で MySQL Router を構成するための推奨方法です。
MySQL Clone
クローンプラグインを使用すると、ローカルまたはリモートの MySQL サーバーインスタンスからデータをクローニングできます。 クローンデータは、スキーマ、テーブル、テーブルスペースおよびデータディクショナリメタデータを含む、InnoDB に格納されているデータの物理スナップショットです。 クローンデータは完全に機能するデータディレクトリで構成され、MySQL サーバープロビジョニングにクローンプラグインを使用できます。
〆
Cloudみたいな話だなと思いつつ。
概要について把握できたので、実際に構築をしてみようかなと思ってます。
その記事は今後作成予定です。
参考記事
MySQL 8.0.19 と docker-compose 環境下で Single-Primary InnoDB Cluster を構築する - それが僕には楽しかったんです。
MySQL :: MySQL 8.0 リファレンスマニュアル :: 21 InnoDB クラスタ
MySQL 8.0.13 で MySQL InnoDB Cluster を構築する | スマートスタイル TECH BLOG