検証用にInnoDB Cluster(Group Replication + MySQL Shell + MySQL Router)の環境を作ってみましたので、その際の構築手順のメモ書きです。
月: 2017年5月
Ubuntu 16.04 LTSでMulti-PrimaryなMySQL Group Replication構築手順メモ
MySQLのレプリケーションは、あるMySQLデータベースから、別のMySQLデータベースへデータや操作(DDL)を反映して複製を作成します。
従来のレプリケーションはプライマリ・セカンダリの構成となり、特定の1つのMySQLデータベースサーバ(マスター)のデータを、1つまたは複数のMySQLデータベースサーバー(スレーブ)に複製することでした。データは非同期、または準同期でマスターからスレーブへコピーされます。通常、マスターとなるデータベースサーバは読み取り書き込み操作を行うことができ、スレーブとなるデータベースサーバは読み取りのみで通常はデータ書き込みを実行できませんでした。マスターは1つのみとなるため、マスターの冗長化を行う場合にはクラスタリングソフトウェアを使うなどのアプローチが必要でした。
MySQL 5.7.17 で取り入れられた Group Replication は、より柔軟で可用性の高いレプリケーション構成するためのMySQLのプラグインで、Group ReplicationはMySQL5.7.12で取り入れられた「Rapidプラグイン(新機能をプラグインとして提供するMySQL5.7.12からの仕組み)」として提供されているようです。
マスターデータベースの冗長化を目的とした機能で、マルチマスターのレプリケーション構成を行うための仕組みがMySQLの機能として実装されています。
グループ内で実行されたトランザクションを識別するためにGTIDを用いており、さらにXCOMと呼ばれる、Paxosという合意アルゴリズムをベースとした仕組みを用いて、グループ内のメンバーへのトランザクションのブロードキャストやメンバー間の認証の管理が行われているようです。
以下ではマルチマスタなGroupReplicationを構成するための基本的な手順を記載します。
続きを読む »