MySQLのレプリケーションの方法 レプリケーションの方法については 株式会社翔泳社版 「MySQL徹底入門 第3版」(2011年8月)に詳しく記載がありますが、 現在では新しい版になっていますので記載内容が変わっているかもしれません。 MySQL(Ver3.25.51)のデータのバックアップ法の一つ、レプリケーションの方法は以下の通りです。 マスターはIPアドレス192.168.0.2のコンピュータ、 レプリケーションデータの作成先のコンピュータをスレーブとして、IPアドレスを 192.168.0.100と仮定しています。 (1)マスターでの作業(マスターは通常、サーバーである192.168.0.2のコンピュータです) winmysqladmin.exeを起動し、my.ini Setupタブの内容を変更します。 [mysqld]の部分に以下を追加します。 server-id=1     (server-id=数値) log-bin=mysql-bin  (log-bin=ファイル名) -------------------------------------------------------- 解説 @server-idは自然数であればなんでもいいですが、わかりやすくするために1にしています。 Alog-binの値はファイル名です。 値の設定はなんでもいいいですが、上記のようにmysql-binとすると、 MySQLのデータの内容が更新されたり、起動・シャットダウンの度に C:\mysql\data\に新しいファイルが作成され、名前は拡張子の001,002などがついて mysql-bin.001 mysql-bin.002 ・ となります。 B(1)の作業はC:\Windows\my.iniファイルの編集と同義ですので、 直接このファイルを編集しても結構です。 -------------------------------------------------------- (2)マスターでの作業の2 マスター上でコマンドプロンプト画面を起動し、以下を順に入力します。 1行入力したらENTERを押します。 このテキストを1行づつコピーしてマウスの右クリックで貼り付けすると能率的です。 cd c:\mysql\bin mysql> mysql -u root -p Enterpassword: mysql>grant file on *.* to 'rpl'@'192.168.0.100' identified by 'rpl'; ------------------------------------------------------ 解説 3行目はパスワードの設定があれば入力してください。設定がなければそのままENTERを押します。 4行目で192.168.0.100のコンピュータのファイル操作専門のユーザー<rpl>が パスワード<rpl>で作成されました。このユーザーはマスターのユーザーです。 ------------------------------------------------------ (3)スレーブでの作業(IPアドレスを192.168.0.100と仮定しています) WinMysqlAdminで、[mysqld]の内容の変更を以下のようにします。 [mysqld] server-id=2 ------------------------------------------------------- 解説 server-idはマスターのidと重複しないようにします。 このコンピュータをマスター兼用にするのであれば、 log-bin=mysql-bin などの記載が必要ですが、とりあえずここでは1行だけで結構です。 ------------------------------------------------------ (4)マスターとスレーブでの作業(マスターのデータベースのスレーブへのコピペ) @電子カルテ等が起動していればすべて終了します。 192.168.0.2のコンピュータの C:\mysql\data\ のなかのフォルダー(=データベース)のうち、mysqlを除くフォルダーをすべてコピーし、 192.168.0.100のコンピュータの C:\mysql\data\ の下に貼り付けます。 マスターとスレーブのデータベースの数とデータ内容(mysqlフォルダーを除いて)が一致するようにします。 Aマスター上でコマンドプロンプト画面を起動し cd c:\mysql\bin mysql> mysql -u root -p Enterpassword: mysql>show master status; と順に入力し、最後に画面に表示される表の中の、 Filem見出しの下のファイル名:ここではmysql-bin.002と仮定。これは(5)のmaster_log_file=の値になります。 Positionの下の数字:ここでは75と仮定します。これは(5)のmaster_log_pos =の値になります。 以上の2つの情報をメモしておきます。 この情報を得るために、他の簡単な方法として、かねやんを起動し、192.168.0.2に接続して かねやんのメニュー→サーバー→レプリケーションを選び、 表示される<レプリケーション>画面の中の サーバーのログファイル(=ファイル名)・ポジション(=Position)の値を見ると便利です。 (5)スレーブでの作業(IPアドレスを192.168.0.100と仮定) スレーブ上でコマンドプロンプト画面を起動し、以下を順に入力します。 1行入力したらENTERを押します。 cd c:\mysql\bin mysql> mysql -u root -p Enterpassword: >change master to ->master_host='192.168.0.2', ->master_user='rpl', ->master_password='rpl', ->master_log_file ='mysql-bin.002', ->master_log_pos =75; この後、しばらく時間をおいて、 Query OK, 0 rows affected (0.27 sec)などとなります。 最後に >SLAVE START; と入力します。 Query OK, 0 rows affected (0.00 sec)と表示されると レプリケーションが始まります。 ------------------------------------------------------- 解説 @入力の途中で, -> から抜け出せなくなったら、 \c と入力してください。 A何度か試行錯誤を繰り返していて、SLAVE STOPが必要云々というメッセージが出る場合は、 >SLAVE STOP; と入力後、再度 >change master to 以下を入力してください。 Bレプリケーションがうまくいっているかどうかをみるには マスター・スレーブそれぞれの C:\mysql\data\mysql.err をメモ帳などで開いて確認してください。 ファイルの末尾に、 マスターでは MySQL:Ready for connections. と表示されれば正常です。 スレーブでは、 Slave: connected to master,,,,と表示されれば正常です。 Cmysql.errが大きすぎて見にくい場合はデータベースをシャットダウン後削除すると、 新しいファイルが作成されます。 -------------------------------------------------------