web-dev-qa-db-ja.com

スレーブが長期間オフラインであったマスターからの自動MySQL同期

スレーブがインターネットから長期間アクセスできなくなったときに2つのデータベースを同期するmysqlの組み込みレプリケーションを使用していないツールがあるかどうか、ここにいる誰かが知っていますか?

アイデアは、VMの電源を入れ、テスト/開発の目的で本番DBのスレーブから自動的にクローンを作成できるWeb開発者向けに仮想マシンベースをセットアップすることです。それらはすべて独自のDBを必要としますが、起動時にすべてマスターDBを複製する必要があります。

動作図:

本番DB->本番読み取り専用スレーブ->開発仮想マシン

1
Jharwood

私が考えることができる唯一のDBは Percona XtraDB Cluster(PXC)

クラスターノード全体をコピーする方法は2つあります

  • SST(状態スナップショット転送) は、あるノードから別のノードへのデータの完全なコピーです。新しいノードがクラスタに参加するときに使用され、既存のノードからデータを転送する必要があります。 Percona XtraDBクラスターで利用可能なSSTの3つの方法があります:mysqldump、rsync、およびxtrabackup(XtraDBクラスターをサポートするPercona XtraBackupはまもなくリリースされます。現在、ソースコードリポジトリを使用する必要があります)。 mysqldumpとrsyncの欠点は、データが1つのノードから別のノードにコピーされている間、クラスターが読み取り専用になることです(SSTはFLUSH TABLES WITH READ LOCKコマンドを適用します)。 Xtrabackup SSTは、同期プロセス全体でREAD LOCKを必要とせず、.frmファイルの同期のみを必要とします(通常のバックアップと同じ)。
  • IST(インクリメンタル状態転送) :状態スナップショット全体ではなく、欠落している書き込みセットを受信することでグループに追いつくことができる機能、ただし、書き込みセットがまだドナーの書き込みセットキャッシュにある場合のみ。

私は前にこれに対処しました

警告

データベース全体がInnoDBの場合、これは理想的なソリューションです。読み取り専用のMyISAMテーブルがある場合、MyISAMをすべてのノードに手動でコピーすれば問題ありません。 [〜#〜] sst [〜#〜] はMyISAMテーブルの完全なコピーを実行しますが、 PXCのマルチマスターレプリケーション機能 MyISAMデータはレプリケーションされません。

PXCについては、Amazon EC2で厳密にテストしましたが、夢のように機能します。 PXCは宣伝どおりに機能します。

更新2013-02-0616:40 EDT

drogart 次のコメントをしました:

実稼働クラスターの1つのノードを開発/テスト環境にするのは良い考えではないと思います。それは、開発者の書き込みトラフィックを製品データベースに戻すことを混合します。また、開発者が新しいノードを起動することにより、proddbクラスターに影響を与える可能性がある状況も発生します。

ここに非常に有効なポイントがあります。これに照らして、開発者がこれを行うことができることについては、非常に慎重で慎重に行ってください。

それでも、開発サーバーで本番環境の完全なコピーが必要になった場合は、オフピーク:

  • STEP01)新しいPXCサーバーをセットアップします
  • STEP02)wsrepオプションを構成する
  • STEP03)MySQLを起動します(SSTが開始されます)
  • STEP04)MySQLをシャットダウンします
  • STEP05)wsrepオプションをコメントアウトする
  • STEP06)MySQLを再起動します(実際のクラスターに接続されていない製品データでいっぱいです)

この開発サーバーをセットアップしたら、次の手順を実行して更新します。

  • STEP01)MySQLをシャットダウンします
  • STEP02)wsrepオプションのコメントを解除する
  • STEP03)rm -f /var/lib/mysql/galera.cache
  • STEP04)rm -f /var/lib/mysql/grastate.dat
  • STEP05)MySQLを起動します(SSTが開始されます)
  • STEP06)wsrepオプションをコメントアウトする
  • STEP07)MySQLを再起動します(実際のクラスターに接続されていない製品データでいっぱいです)

警告:オフピーク時にProd toDevのこのコピーを実行してください!!!

1
RolandoMySQLDBA