[前][次][番号順一覧][スレッド一覧]

mysql:15601

From: Seiichirou Hiraoka <Seiichirou Hiraoka <flathill@xxxxxxxxxx>>
Date: Mon, 06 Jun 2011 10:56:48 +0900 (JST)
Subject: [mysql 15601] レプリケーション用スレーブの構築方法

平岡と申します。

2 台の MySQL でマスタ、スレーブ運用をしております。スレーブで何らかの問題
が起きて再度スレーブを構築する手順についてコメントを頂けますと幸いです。

- 環境
  
. server1 (マスタ)
  OS: CentOS 5.5 (共通)
  MySQL 5.5.12 (共通) (手動でコンパイル)
  /etc/my.cnf

server-id      = 1001

  レプリケーション用ユーザ repl を登録。

. server2 (スレーブ)
  /etc/my.cnf

server-id      = 1002

  レプリケーション用ユーザ repl を登録。

- 手順
  時間を短縮するため、mysqldump によるダンプリストアではなくディレクトリを直接
  コピーする方法で以下のようにテストを行っています。

1) スレーブ
  MySQL を停止。
    /etc/init.d/mysql top

2) マスタ
  FLUSH TABLES WITH READ LOCK;

3) マスタ
  Filename と Position を確認。
    SHOW MASTER STATUS;
  
4) スレーブ
  データベースディレクトリを削除。
    rm -Rf /usr/local/mysql/data

5) スレーブ
  バックアップをスレーブにコピー
    ssh master "(cd /usr/local/mysql; tar cvfp - data)" | (cd /usr/local; tar xvfp -)

6) マスタ
  UNLOCK TABLES;  

7) スレーブ
  不要なファイルを削除。
    rm /usr/local/mysql/data/*.err
    rm /usr/local/mysql/data/*.pid

8) スレーブ
  MySQL を起動。
    /etc/init.d/mysql start

9) スレーブ
  バイナリログの適用。                            ← (a)
    /usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/data/mysql-bin.0* | \
      /usr/local/mysql/bin/mysql -u root -p

10) スレーブ
  STOP SLAVE;
  CHANGE MASTER TO .... (上で確認した Filename と Position を指定)
  SET GLOBAL READ_ONLY = 1;
  START SLAVE;

このようにする事でうまく動いているように見えますが、上記 (a) の箇所に
ついてコメントを頂きたく思います。

(a) の箇所にて、バイナリログを適用する必要はあるのでしょうか。
バイナリログに記録されている内容は既にデータベースに反映されているので
あれば、二重に適用するようになってしまうと考えています。

その他手順中で問題と思われる箇所がありましたら、教えて下さい。

以上、よろしくお願いします。

- flathill


[前][次][番号順一覧][スレッド一覧]

->   15601 2011-06-06 10:56 [Seiichirou Hiraoka <] レプリケーション用スレーブの構築方法    
     15602 2011-06-06 14:02 ┗[Seiichirou Hiraoka <]