MySQLのレプリケーション
実際に関わる機会がなく今ひとつ理解が不十分だったものですから、
自宅の余剰PCにてMySQLのレプリケーションを試しました。
macのMySQLはportで入れた気がしますし、バージョンなど割と適当。
サーバ構成
* | OS* | MySQL* |
---|---|---|
master* | OSX 10.5.6* | MySQL 5.0.51a* |
slave* | ubuntu 7.10* | MySQL 5.1.30* |
マスターの設定
my.cnfの設定
sync_binlog=1
を追加した。
インスタンスの起動
$ sudo /etc/init.d/mysqld start
スレーブからの接続用アカウントの作成
grant replication slave on *.* to replication@slave-host identified by 'replpass';
スレーブの設定
my.cnfの設定
read_only
デフォルトに上記を追加した。SLAVE権限を持たないユーザからの更新を防ぐ。
スレーブのデータをリストアしてインスタンスを起動
$ tar -xvf /tmp/mysql-restore.txt
CHANGE MASTER TO文でマスターの接続設定
マスターのバイナリログの開始位置
mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000007 | 38748 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
スレーブのMASTER情報を設定する。
CHANGE MASTER TO MASTER_HOST='master-host',
MASTER_PORT=3306,
MASTER_USER='replication',
MASTER_PASSWORD='replpass',
MASTER_LOG_FILE='mysql-bin.000007',
MASTER_LOG_POS=38748;
CHANGE MASTER TO文を実行すると、データディレクトリに次のファイルが作成される。
- master.info
- relay-log.info
- slave-host-relay-bin.index
- slave-host-relay-bin.000001
mysql> start slave;
成功したっぽいログが出たので、マスターでCREATE TABLEしたテーブル。
同じテーブルがスレーブにも作られるのを確認。 おつかれさま。
現場で使える MySQL (DB Magazine SELECTION)
- 作者: 松信嘉範
- 出版社/メーカー: 翔泳社
- 発売日: 2006/03/17
- メディア: 単行本
- 購入: 9人 クリック: 103回
- この商品を含むブログ (45件) を見る