今日はなにの日。

気になったこと勉強になったことのメモ。

今日は、MySQL InnoDB Cluster の座学メモの日。

目次

とある日

KubernetesMySQLオペレーターは、Kubernetesクラスター内のMySQLInnoDBクラスターのライフサイクルをサポートします。これは、TLS証明書とレプリケーションのセットアップの管理を含むMySQLサーバーとMySQLルーターインスタンスの展開を簡素化することから、それらの継続的な管理とバックアップのサポート(バックアップの1つであれスケジュールに従っている場合)にまで及びます。

MySQL Operator for Kubernetes Reaches General Availability!

触ってみたいと思いつつも、InnoDBクラスターって何ってなったので調べてみました。

あくまでも、個人的なメモです。

MySQL InnoDB Cluster とは?

MySQL テクノロジを組み合せて、MySQL の完全な統合高可用性ソリューションをデプロイおよび管理できる

MySQL :: MySQL 8.0 リファレンスマニュアル :: 21 InnoDB クラスタ

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 :: MySQL Shell 8.0 :: 6.1 MySQL AdminAPI

MySQL Group Replication

グループは、一度に 1 つのサーバーのみが更新を受け入れる自動プライマリ選択を使用して、単一プライマリモードで動作できます。 または、グループをマルチプライマリモードでデプロイすることもできます。このモードでは、更新が同時に発行されても、すべてのサーバーが更新を受け入れることができます。

MySQL :: MySQL 8.0 リファレンスマニュアル :: 18 グループレプリケーション

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

MySQL InnoDB Clusterの構築(by docker) - 41から始めました

MySQL InnoDB Cluster練習 - Qiita