delete from hateblo.jp where 1=1;

タイトルに意味はありません。

MySQLのレプリケーションを開始する

初めに

前提条件
対象者

以下のような変人向けの資料です

レプリケーション先を用意する

レプリケーション先を準備しないと作業が進まないので、先に用意しておく。

  1. Windows をインストール(x86 or x64であるかは元と先で統一しておくこと)
  2. MySQLをインストール(レプリケーション元と一致させておくことを推奨)
  3. レプリケーション元とmy.ini の設定をあわせておく(server-id以外,下記のレプリケーション設定も)

レプリケーション元の準備をする

my.ini に各設定が行われていることを確認 or 追記する
log-bin
server-id=1
sync_binlog=1
innodb_support_xa=1

note:
上記設定でエラーが発生することが稀にあるので、先にレプリケーション先で設定反映を試してみると良い。
その場合、確認方法としては、設定して、サービスからMySQLを起動してみて、正常に起動できていれば問題ないので、MySQLを停止する。
稼働中のサービスでは絶対に反映させないといけないので、設定を保存した後、MySQLの再起動を行う。
ダウンタイムとしては1分以内(実際はかなり短い)。

レプリケーション元でユーザーを追加する

MySQLコマンドライン上でレプリケーションユーザー (replicateuser)を作成する。

GRANT REPLICATION SLAVE ON *.* TO replicateuser@'%' IDENTIFIED BY '<password>';

note:
レプリケーションサーバーIPアドレス制限をかけても良い。
レプリケーション先の設定で必要なので、IDとパスワードは覚えておくこと。

スナップショットを取れるように準備しておく
  1. Windows 2003の場合
    1. マイコンピュータを右クリックし、プロパティを開きます
    2. シャドウコピーのタブを開きます
  2. Windows 2008以降の場合
    1. スタート ボタンをクリックします。
    2. 管理ツール をポイントして、コンピュータの管理 をクリックします。
    3. コンソール ツリーで、共有フォルダ を右クリックし、すべてのタスク をクリックして、シャドウ コピーの構成 をクリックします。
  3. MySQLのデータファイルの保存されているドライブの次回実行時刻が無効になっている場合は有効にします

レプリケーションの準備を行う

レプリケーション元での操作
  1. シャドウコピーのタブを開いておきます
  2. MySQLコンソールを開きます
  3. 次のSQLを実行: FLUSH TABLES WITH READ LOCK;
  4. シャドウコピーのタブにて、該当のドライブが選択されていることを確認し、今すぐ作成をクリックします。
  5. 次のSQLを実行: SHOW MASTER STATUS;
    1. 表示された情報をコピーしておきます
  6. シャドウコピーのタブにて、バックアップが作成されていることを確認します。
  7. 次のSQLを実行: UNLOCK TABLES;
  8. MySQLのデータファイルの保存されているフォルダの共有を行います。

note:
FLUSH TABLES〜UNLOCK TABLES;までがDBへ一切書き込みができませんので、ご注意ください。

レプリケーション先での操作
  1. \\レプリケーションIPアドレス\データファイルの共有名 へアクセスします
  2. プロパティを表示します
  3. 以前のバージョン のタブを開きます
  4. 一番新しい日付の項目を選択し、表示をクリックします。
    1. しばらく待つとフォルダが表示されます
  5. レプリケーション先のデータフォルダを別名に変更し、元のフォルダ名と同じフォルダ名になるようにファイルをコピーします
  6. MySQLを起動します

レプリケーションの開始

.... 後はを参考にして下さい。(レプリケーションを行う準備 から先と同じ操作となります)