#topicpath ---- //ここにコンテンツを記述します。 MySQLには、他のデータベースサーバにネットワーク経由でデータを複製する、レプリケーションという機能があります。マスターというデータベースから、スレーブというN台のデータベースにデータをコピーして、負荷分散をはかることができます。 **マスターの設定 [#pc38c3d3] ***バイナリログとserver-idの設定。 [#k93ee47a] /etc/my.cnf (windowsだったら${install_root}/my.ini)に以下を追加 [mysqld] log-bin server-id=10 <- 系でUniqueにする サーバを再起動して、ログインして以下のコマンドで確認 mysql> show master status; +----------------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +----------------------------+----------+--------------+------------------+ | xxxxxxxxxxxxxxxxxxx.000001 | 98 | | | +----------------------------+----------+--------------+------------------+ 1 row in set (0.00 sec) mysql> show variables like 'server\_id'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | server_id | 10 | +---------------+-------+ 1 row in set (0.00 sec) ***レプリケーション用のユーザID追加 [#x439e516] スレーブがレプリケーションのために接続してくるため、専用のユーザIDを用意しておきます。 mysql> grant replication slave on *.* to repl@'192.168.10.0/255.255.255.0' identified by 'qa55wd'; Query OK, 0 rows affected (0.00 sec) mysql> **スレーブの設定 [#j6bdc915] ***マスターのデータをコピー [#n9d37f78] マスターのデータをごっそりコピーします。マスターがLinuxなら > cd /var/lib/mysql/ > tar cpf /var/tmp/mysql.tar . として、そのままスレーブの同じディレクトリに展開します。Windowsなら${install_root}/data/ ディレクトリが該当のディレクトリです。 ***マスターに接続する設定を記述 [#l20cdc9f] my.iniもしくはmy.cnfに以下を追加 master-host=192.168.10.10 <-マスターのIPアドレス、ノード名 master-user=repl <- マスタで作ったレプリケーション用ID master-password=qa55wd <-そのIDのパスワード server-idをマスターと違うモノにすることを忘れずに。。これでスレーブを再起動すると、エラーログに 051105 11:04:55 mysqld started 051105 11:04:55 InnoDB: Started; log sequence number 0 43655 051105 11:04:55 [Warning] Neither --relay-log nor --relay-log-index were used; so replication may break when this MySQL server acts as a slave and has his hostname changed!! Please use '--relay-log=kino-relay-bin' to avoid this problem. 051105 11:04:55 [Note] /usr/sbin/mysqld-max: ready for connections. Version: '5.0.15-max-log' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Edition - Experimental (GPL) 051105 11:04:55 [Note] Slave SQL thread initialized, starting replication in log 'FIRST' at position 0, relay log './kino-relay-bin.000001' position: 98 051105 11:05:00 [Note] Slave I/O thread: connected to master 'repl@192.168.10.10:3306', replication started in log 'FIRST' at position 4 などと表示されればOKです。マスター側で更新や削除などを行うと、スレーブのテーブルに即座に反映されます。 ***いろいろつぶやき [#c3be51fe] -レプリケーションするテーブル(かスキーマ)の範囲は? -スレーブ側にinsertとかしちゃうと、マスターでInsertしたときにキーがダブったり。。まあ当たり前か。 -何台までスレーブになれっかなあ。 -スナップショットとかいう用語が出てくるけど、なんなのかなあ。。 ***参考 [#jf188da0] [[WEB-DB PRESS Vol.22:http://www.amazon.co.jp/exec/obidos/redirect?tag=kinosite-22&creative=203&camp=23&link_code=st1&path=ASIN/4774120979]]を参考にさせていただきました。 ---- この記事は #vote(おもしろかった[2],そうでもない[0]) #vote(おもしろかった[3],そうでもない[0]) #comment #topicpath SIZE(10){現在のアクセス:&counter;}