ローカルPCでmysqlを2つ動かしてレプリケーションする
大規模Webサイトなら負荷分散は必須ですよね。
私のプロジェクトでもかなり重要度が高いです。
そこで、今回は負荷分散技術のひとつである
DBレプリケーション機能を触ってみます。
特に本番環境と開発環境で環境が違っているのは致命的でもあったので、
まずはDBのレプリケーション機能をローカル開発環境にも整備してみました。
以下は手順です。
1. Mysqlを2つインストール A(マスター), B(スレーブ) 2. Aのmy.iniに以下を追加 server_id=1 log_bin 3. Bのmy.iniに以下を追加 server_id=2 4. Aにreplユーザー追加 mysql> GRANT REPLICATION SLAVE ON *.* TO repl@localhost IDENTIFIED BY 'password' 5. Aのバイナリログ状態を確認 mysql> FLUSH TABLES WITH READ LOCK; mysql> SHOW MASTER STATUS; mysql> UNLOCK TABLES; る。 6. Bにレプリケーションを設定 mysql> CHANGE MASTER TO MASTER_HOST='localhost', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='a-bin.000001', //5で確認 MASTER_LOG_POS=79; //5で確認 7. Bでレプリケーションを開始 mysql> START SLAVE;
これだけで結構簡単に整備することができました。
レプリケーションにバイナリログが必要な理由は何だろうと思っていましたが、どうやらレプリケーションの仕組みとして、バイナリログ (binlog)を利用してスレーブDBに書き込みを行っているみたいです。