mysql:15925
From: "ochiai" <"ochiai" <s.ochiai@xxxxxxxxxx>>
Date: Wed, 13 Feb 2013 16:39:08 +0900
Subject: [mysql 15925] レプリケーション構築について(長文です)(質問)
既存データを運用中のサーバーAと新規にMySQLをインストールしたサーバーBとで、 運用中のサーバーAをマスターに、新規のサーバーBをスレーブにしたレプリケーションを行おうとしていますが、うまくできません。 どなたか、教えてください。 スレーブ上でマスター情報登録するCHANGE MASTER TOコマンドを実行すると、 ERROR 1201 (HY000): Could not initialize master info structures; more error messages can be found in the MySQL error log となって、レプリケーションが有効になりません。 なお、サーバーAはマスターとして動いているようです。 現在の環境と実行した結果は以下の通りです。(長文です) <作業環境> 1.サーバーA:マスターの環境 OS:Windows 7 Professional SP1(32bit) PC:DELL Vostro(Intel Core 2 Duo,CPU E7500 2.93GHz) RAM 2.00GB MySQLサーバ:バージョン5.5.25 (mysql-5.5.25-win32.msi) Workbench:バージョン5.2.39CE Revision 8757 (mysql-workbench-gpl-5.2.39-win32.msi) コンフィグレーション Configuration File: C:\Program Files\MySQL\MySQL Server 5.5\my.ini <iniファイルの内容> basedir="C:/Program Files/MySQL/MySQL Server 5.5/" datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/" 2.サーバーB:スレーブの環境 サーバマシンと同じ構成のPC コンフィグレーション Configuration File: C:\ProgramData\MySQL\MySQL Server 5.5\data\my.ini <iniファイルの内容> basedir="C:/Program Files/MySQL/MySQL Server 5.5/" datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/" <行った手順> 0.(マスター)(スレーブ) MySQL起動 1.(マスター)レプリケーション専用ユーザの登録 1-1.マスター上のMySQLに、スレーブからアクセスするレプリケーション用ユーザー(repli)を登録。 Workbench/Admin/Users and Privileges/ Server Access Management/Administrative Rolesタブで ReplicationAdmin権限を設定 Schema Privileges/ ですべてのスキーマに対してすべての権限を設定 1-2.(スレーブ)スレーブから1-1.で作成したアカウントでマスターへの接続確認 Workbench/New Connectionで Hostname = マスターのIPアドレス Port = 3306 Username = repli Password = 1-1.でrepliに対して設定したパスワード Default Schema = Nullのまま として「Test Connection」ボタンを押したところ、 「Connection parameters are correct.」 となり接続成功。 2.(マスター)コンフィギュレーション設定 2-1.マスター上のMySQLを停止 マスターのレプリケーション設定を行うためにマスター上のMySQLを停止 2-2.マスターのmy.iniファイル編集(WorkBench使用) [mysqld] log-bin = mysql-bin binlog-format = MIXED general-log auto_increment_increment = 1 server-id = 4 log-error = log-error show-slave-auth-info auto_increment_offset = 1 general_log_file = host_name.log sync_binlog = 1 log-bin-index = iniファイルが設定どおり更新されているか確認した。 3.(スレーブ)コンフィギュレーション設定 3-1.スレーブ上のMySQLを停止 スレーブの設定を行うためにスレーブ上のMySQLを停止 3-2.スレーブのmy.iniファイル編集(WorkBench使用) [mysqld] sync_binlog = 1 server-id = 6 log-slave-updates slave-load-tmpdir = /tmp report-host = Slave_Toshijoho report-port = 3306 skip-slave-start General slaveセクションで skip-slave-start をチェックし、スレーブサーバを起動したとき、自動でスレーブが起動しないようにした。 なお、下記のマスターの情報はWorkbenchで設定する場所がないので、my.iniファイルの[mysqld]セクションに追加した。 master-host='123.456.789.101'(マスターのIPアドレス) master-user='repli'(マスターに登録したレプリケーション用ユーザー名) master-password='password'(マスターに登録したレプリケーション用ユーザーのパスワード) master-port=3306 4.(マスター)レプリケーション情報の取得 マスターで、以下の処理を行う。マスターのMySQLは停止中 4-1.マスターのMySQLを起動 停止中のMySQLを起動。 4-2.データのフラッシュ mysql> FLUSH TABLES WITH READ LOCK; 4-2.マスターレプリケーション情報の取得 mysql> SHOW MASTER STATUS; File: mysql-bin.000004 Position: 597 5.(マスター)マスター上のデータをアーカイブ コマンドプロンプトでmysqldumpを実行 C:\......>mysqldump --host="localhost" --user="root" --password="????" --all-database --lock-all-tables > dbdump.db アーカイブが完了したら、ロックを解除する。 mysql> UNLOCK TABLES; 6.(スレーブ)スレーブにマスターのデータをインポート 6-1.スレーブサーバーのMySQLを起動 --skip-slaveオプションを使用してレプリケーションをスキップし、スレーブを立ち上げる。 (my.iniファイルにskip-slave-startオプションを設定済み) 6-2.インポート mysqldumpで作成したマスターのダンプファイルをコマンドプロンプトでインポートする。 C:\......>mysql --user="root" --password="???" < dbdump.db 7.(スレーブ)マスター情報登録 mysql> STOP SLAVE; mysql> CHANGE MASTER TO MASTER_HOST = '123.456.789.101', (マスターのIPアドレス) MASTER_PORT=3306, MASTER_USER = 'repli', (マスターに登録したレプリケーション用ユーザー名) MASTER_PASSWORD = 'password'(マスターに登録したユーザrepliのパスワード), MASTER_LOG_FILE = 'mysql-bin.000004', MASTER_LOG_POS = 107; ここで、下記のエラーが発生。 ERROR 1201 (HY000): Could not initialize master info structures; more error messages can be found in the MySQL error log 8.(スレーブ)スレーブ起動 mysql> START SLAVE; 7.がうまくいっていないので、ここでもERROR 1201 (HY000)がでて、スレーブは起動しません。 9.(マスター)マスターの確認 mysql> show master status\G エラーなし 1行リターン File: mysql-bin.000004 Position: 597 Binlog_Do_DB: Binlog_Ignore_DB: 10.(スレーブ)スレーブの確認 スレーブの状態を確認したところ、下記のようになっていて、動いていないようです。 mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Master_Host: 123.456.789.101 Master_User: repli Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000004 Read_Master_Log_Pos: 107 ....... Slave_IO_Running: No Slave_SQL_Running: No Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 107 Relay_Log_Space: 0 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Seconds_Behind_Master: NULL Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 0 1 row in set (0.00 sec) なお、CHANGE MASTER TOでのエラーメッセージにある”MySQL error log”を見る方法も教えていただけましたら、幸いです。 大変長文となりましたが、ぜひ解決方法を教えてください。
-> @ 15925 2013-02-13 16:39 ["ochiai" <s.ochiai@x] レプリケーション構築について(長文です)(質問) @ 15926 2013-02-14 09:14 ┗[Watanabe Tomoyuki <W] @ 15928 2013-02-15 10:50 ┗["ochiai" <s.ochiai@x] @ 15929 2013-02-15 14:54 ┗[Watanabe Tomoyuki <W] 15930 2013-02-15 15:02 ┣["yoku ts." <yoku0825] @ 15932 2013-02-15 16:48 ┃┗["ochiai" <s.ochiai@x] 15933 2013-02-15 18:47 ┃ ┗["yoku ts." <yoku0825] @ 15936 2013-02-20 11:31 ┃ ┗["ochiai" <s.ochiai@x] 15937 2013-02-20 15:24 ┃ ┗["yoku ts." <yoku0825] 15941 2013-02-27 12:28 ┃ ┗[Watanabe Tomoyuki <W] 15942 2013-02-27 13:03 ┃ ┗["yoku ts." <yoku0825] 15952 2013-03-13 15:17 ┃ ┗[ochiai <s.ochiai@xxx] Re: レプリケーション構築について(長文です)(質問)_解決まとめ 15953 2013-03-13 15:38 ┃ ┗["yoku ts." <yoku0825] 15954 2013-03-13 16:49 ┃ ┗[ochiai <s.ochiai@xxx] @ 15931 2013-02-15 16:35 ┗["ochiai" <s.ochiai@x] RE:[mysql 15929] Re: レプリケーション構築について(長文です)(質問) @ 15934 2013-02-15 19:06 ┗[Watanabe Tomoyuki <W] RE: [mysql 15931] RE:[mysql 15929] Re: レプリケーション構築について(長文です)(質問)