Ramdom Entry Pickup
- 「Ultimate Online」を追加 (2005年12月25日)
- 異次元の世界へようこそ(^^;)(BlogPet) (2005年11月20日)
- ディスク障害でサーバーダウン??(博識な方、教えてください(^^;)) (2006年11月04日)
- インテグラ、無事生還! (2005年01月20日)
- 実家の畑 (2005年05月22日)
« 「.htaccess」の親切で詳細なリファレンスを見つけました。 | メイン | 第3回 楽天アフィリエイト選手権にエントリー! »
ちょっと思うところあり、自宅のセカンダリーサーバーでもMySQLを走らせることにしました。
で、プライマリーサーバーのMySQLとセカンダリーサーバーのMySQLを同期させる方法はないかと探していたら、「レプリケーション」という機能を使えばそれが実現することを知りました。
以下、解説するやり方の前提として、
です。。。
まぁ、端的に言えば、スレーブMySQLを追加したい、という場合ですね。
前置きが長いですが、、、それでは設定方法です。
まず、
まずはマスターとなるMySQLに、mysqlコマンドを使って、レプリケーション用のMySQLユーザ−を追加します。
# /usr/bin/mysql -u root -p
# password:
> grant replication slave on *.* repl@'%' identified by '<password>';
上記のコマンドにより、「repl」というユーザーが追加され、レプリケーション権限が与えられました。
このユーザーは、後から出てくる、スレーブMySQLからの接続する時のユーザー・パスワードとなります。
次に、マスターとなるMySQLと、スレーブとなるMySQLの両方を停止します。
(停止方法はいろいろあるので割愛します(^^;))
そして、現在のマスターの状態をそのままスレーブマシンにコピーします。
コピーはスコープやrsyncなどを使ってコピーしましょう。
# cd /var/lib/mysql
# tar cpf /var/tmp/mysql.tar .
# scp /var/tmp/mysql.tar myslave:/var/tmp/mysql.tar
そして、コピーしたファイルをスレーブ側で展開し、マスターと同じ状態にします。
# cd /var/lib/mysql
# rm -fr *
# tar xpf /var/tmp/mysql.tar
続いて、マスターMySQLの設定ファイルである、「my.cnf」を設定します。
以下を追加します。
[mysqld]
log-bin
server-id=1
サーバーインストール等で、すでにMySQLが稼働している場合、マスター側ではすでに上記の記述が「my.cnf」に書かれている場合があります。
server-idはこの後設定するスレーブ側と一緒にならなければ、何でも良いと思います。一意な数値である必要があります。
ここでマスター側のMySQLを起動します。
以下のsqlコマンドで起動していることを確認できます。
次にスレーブ側の「my.cnf」を設定します。
以下の行を追加します。
[mysqld]
server-id = 2
master-host = sv1 (マスターマシンのホスト名)
master-user = repl (先述で追加したmysqlユーザー名)
master-password = password (先述で追加したユーザーのパスワード)
master-port = 3306 (マスターサーバーのポート番号)
これで、スレーブ側のMySQLを起動します。
これでレプリケーションが開始されます。
MySQLのログでレプリケーションを始まったことを確認します。
#cat /var/log/mysqld.log
061211 18:27:46 [Note] Slave I/O thread: connected to master 'repl@sv1:3306', replication started in log 'FIRST' at position 4
試しに、マスター側で、追加・更新等の操作をし、スレーブ側で同様に反映されるのを確認します。
私の場合、MySQLはMovableTypeでしか使っていないので、エントリーを追加したりで確認しました。
これでマスター側でSQL操作をしたら、スレーブ側での同様に反映され、同期がとれた状態になります。
あとの細かいコマンドなどは、上記参考URLを参照ください(^^;)

最高のMySQLリファレンス本
これ一冊あればOK
予想とは違っていましたが

MySQLの裏技集
もう少し分量があれば・・・
こんな技術解説書がもっと世にあればLink HTML:
トラックバックURL:
コメント
お久しぶりです!
DBのレプリケーションってまた趣味の割りには偉いもんに手を出しましたね~
(電気代が・・・)
トランザクションの負荷分散用かな?
Posted by: もかまたり | 2006年12月12日 22:30
>もかまたり さん
おひさしぶりです!
>トランザクションの負荷分散用かな?
そう!、その通り!!
さすが察しが早い(^^;)
ゆくゆくはロードバランサーを導入予定!
といっても、ソフトウェア的なロードバランサーだけど。。(^^;)
Posted by: showBOO
|
2006年12月12日 22:49