レプリケーション環境を作るための同一データ移植の方法

  • 2016-5-23
  • レプリケーション環境を作るための同一データ移植の方法 はコメントを受け付けていません。

レプリケーションを組む際は、レプリケーション同期をとるデータベース内のデータが完全に一致していることが必要です。
いくつか方法はありますので、今回はそれをご紹介していきます。

▼スレーブサーバーを増やしてサイズアップを図りたい場合
1.マスタサーバーで取得したフルバックアップをスレーブサーバーに適用する
mysqldump、xtrabuckupなどのツールを使ってマスタサーバーからフルバックアップを取得してそれをスレーブサーバーにインポートして同一環境を構築するプランです。
ぱっと思いつきやすく比較的誰でもできるプランではありますが、バイナリベースで違っていたりする万が一のリスクを考えると後者のプランのほうがお勧めです。

・コマンド例
スレーブサーバーで以下を実行
mysqldump --opt --single-transaction --user={ユーザー名} --password={パスワード} --host={マスタサーバーのIPアドレス} {DB名} > /tmp/dump.sql
mysql -u{ユーザー名} -p {DB名} < /tmp/dump.sql

2.マスタサーバーのデータを圧縮してスレーブサーバーに転送後、解凍して移植する こちらのほうがより確実性の高いプランでしょうか、マスタサーバー内にあるファイル一式を圧縮して新しいスレーブサーバーに送り、それを解凍後しかるべディレクトリに上げるというプランです。 バイナリベースで完全に一致したデータが出来上がりますから、レプリケーション失敗するリスクが少ないです。 よほど手の込んだカスタマイズをしていなければ、MySQLならば/var/lib/mysql配下にあるデータを一式圧縮すればよいでしょう。

・コマンド例(圧縮してスレーブサーバーに転送するまで)
マスタサーバーで以下を実行
tar cfvz archive.tar.gz /var/lib/mysql/
cat archive.tar.gz | ssh {SSHログインユーザー名}@{スレーブサーバーのIPアドレス} "cat > /tmp/archive.tar.gz"

※この方法でMariaDBでレプリケーションを組んだときの経験ですが、スレーブサーバーのバイナリログはexpire_logs_daysでは消えないみたいです。
PURGE MASTER LOGSで消してやる必要があるようです。

▼新たにマスタ・スレーブ環境を構築する場合には以下のプランが追加で考えられます。
3.最初からレプリケーションを開始してマスタにデータを注入する
これは、スレーブサーバーへのレプリケーションが終わるまでメンテナンスを入れていられる、スレーブサーバーはホットスタンバイやバックアップ用途のため、本番サービスに影響しない場合に有効なプランです。

関連記事

コメントは利用できません。

ページ上部へ戻る