Skip to content

MySQL replication support (Deprecated) JP

Takehiro YOSHIHAMA edited this page Jul 5, 2016 · 1 revision

MySQLレプリケーション

バージョン1.0.2から実験的にFlareからMySQLへのレプリケーションをサポートしています。現在MySQL 5.0.32をslaveにした場合のみテストしています(MySQL 4.0.xではおそらく動作しません)。

1. 設定ファイル

MySQLレプリケーションを行う場合は、flared.confに下記の行を追加します(--enable-mysql-replicationでconfigureされている必要があることに注意してください):

# MySQLレプリケーションスレッド起動(利用しない場合はコメントアウト)
mysql-replication = true
# MySQLレプリケーションポート
mysql-replication-port = 12122
# MySQLレプリケーションサーバID
mysql-replication-id = 16
# MySQLレプリケーションデータベース
mysql-replication-db = flare
# MySQLレプリケーションテーブル
mysql-replication-table = flare

以上の状態でflareを起動しておきます。

2. MySQL設定

まず上記設定合わせたデータベース、テーブルを準備します。

mysql> CREATE DATABASE flare;
Query OK, 1 row affected (0.00 sec)
mysql> use flare;
Database changed
mysql> CREATE TABLE flare
(k VARCHAR(255) NOT NULL,
 v MEDIUMBLOB,
 flag INT UNSIGNED,
 version BIGINT UNSIGNED,
 expire DATETIME,
 PRIMARY KEY(k)) CHARSET=binary;
Query OK, 0 rows affected (0.01 sec)

スキーマは上記のものである必要がありますが、カラム名はなんでもかまいません。

続いてCHANGE MASTERします。

mysql> CHANGE MASTER TO master_host='flare.example.com',
master_port=12122,
master_user='foo',
master_password='bar'; 

Flareのレプリケーションスレッドはクライアント認証を行わないので、master_user、master_passwordは何を設定しても問題ありません。

以上が完了したら

mysql> START SLAVE;

でレプリケーションを開始します。masterでsetコマンド等を実行するとデータがflare.flareテーブルに反映されていると思います。

注意点

  • 通常のMySQLのレプリケーションと異なりbinlogを利用していないため、「ポジション」という概念はありません~ レプリケーション開始以降にmasterへ発行されたクエリのみがレプリケーションされていきます(それ依存のデータについては手動でのdumpとinsertを行ってください)
  • Flareのレプリケーションスレッドはクライアント認証を行っていません
Clone this wiki locally