レプリケーションの設定をする
前提
マスタ機: オリジナルのデータベース(マスタ)が稼働するホストです。
スレーブ機: マスタと同じ内容のデータベースが作られるホストです。このホストのデータは読み取り専用になります(書き込みをしてしまうと、同期が壊れます)。
以下のSQLで生成されるtestという名前のデータベースがマスタ機にのみ存在する状態を想定しています。
CREATE DATABASE test DEFAULT CHARACTER SET 'utf8';
USE test;
CREATE TABLE t (v VARCHAR(255));
INSERT INTO t VALUES ('foo'),('bar');
マスタ機のTCP/3306ポートにスレーブ機から接続できる状態にします。下記はローカルIPからの接続をまとめて許可してしまう場合の設定例です。環境に応じて適切な設定をして下さい。
# iptables -I INPUT 4 -s 192.168.0.0/24 -j ACCEPT
設定(マスタ機)
my.cnfを編集します。
/etc/my.cnf
server-id=1000
log-bin=master-bin
MySQLを再起動し、レプリケーション用のユーザを作成します。
# service mysqld restart
# mysql -uroot
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'pass';
以下のようなオプションを指定して、ダンプファイルを生成します。
# mysqldump -uroot --master-data --single-transaction test > test.sql
生成されたtest.sqlをスレーブ機に転送して下さい。
設定(スレーブ機)
my.cnfを以下のように編集します。
/etc/my.cnf
server-id=1001
replicate-wild-do-table=test.%
MySQLを再起動し、先ほど転送したダンプファイルを使用して同一構成のデータベースを作成します。
# service mysqld restart
# mysql -uroot
mysql> CREATE DATABASE test DEFAULT CHARACTER SET 'utf8';
mysql> USE test;
mysql> SOURCE test.sql;
マスタサーバを設定し、同期をスタートします。
mysql> CHANGE MASTER TO master_host='192.168.0.1(マスタ機のIP)',master_port=3306,master_user='repl',master_password='pass';
mysql> START SLAVE;
以下のコマンドでスレーブの稼働状態を確認できます。
mysql> SHOW SLAVE STATUS\G
同期がうまくいかない場合、Slave_IO_Running, Slave_SQL_Runningが共にYesになっているか、Last_IO_Errorにメッセージが出力されていないか等を確認すると良いでしょう。
参考URL
Chapter 1. Replication. MySQL Admin Cookbook, 9781847197962
この記事は役に立ちましたか?
- EnglishWorm.com
- SinglesFan.com
- LmLab.net
- サイトマップ
- 運営者について