第8回はMySQLの代表的なスケールアウト構成であるレプリケーション機能について解説します。
レプリケーションとは
データベースでのレプリケーションは,
MySQLサーバのレプリケーション機能は2000年5月にリリースされたMySQL 3.23.15から実装されており,
MySQLサーバのレプリケーション機能は,
同期型レプリケーションと非同期型レプリケーション
レプリケーションにはデータの複製のタイミングによって同期型と非同期型に分類することができます。同期型の場合は,
同期型では全ての複製先にデータが反映されたことを待つ必要がありますが,
MySQLのレプリケーションでは,
MySQLのレプリケーションのアーキテクチャ
MySQLのレプリケーション構成では,
また,
MySQLのデフォルトの非同期レプリケーションでは,
- 0) スレーブのIOスレッドがマスターに接続
- 1) アプリケーションがトランザクションをコミット
- 2) データとバイナリログ(Binlog)が同時に変更
- 3) MySQLサーバがアプリケーションにコミット完了の応答
- 4) IOスレッドがバイナリログの内容を受け取りスレーブのリレーログにコピー
- 5) スレーブのSQLスレッドがリレーログにコピーされた内容をデータに反映
非同期レプリケーションの設定方法
MySQLのレプリケーションを利用するうえで,
- マスターと各スレーブがそれぞれ異なるserver-idを持っていること
- [マスター]バイナリログが有効となっていること
- [マスター]スレーブのIOスレッドが接続するためのREPLICATION SLAVE権限を持つユーザが存在すること
- [スレーブ]IOスレッドがCHANGE MASTER TOコマンドで指定するマスターに接続可能であること
MySQL 5.6以降ではトランザクションを一意に識別するGTID(Global Transaction Identifiers)が利用可能となっているため,
GTIDを利用することで,