これらの回答は、何らかの理由で、標準のレプリケーションがオプションではないことを前提としています。
bash
次のオプションは、よく知られている手動データ同期の既存の方法であり、必要に応じて特定のテーブルを指定するロジックを使用して、必要に応じて cronjob などのスクリプト言語にラップするときに組み合わせるとよいでしょう。安全であることを保証します。プロダクションボックスで負荷などを考慮して実行します。
オプション 1: pt-table-sync
pt-table-sync
Percona MySQL ツールキットのツールを使用すると、既存のレプリケーション スキームでオンデマンドでマスター - マスター、マスター - スレーブの同期を行うことができます。または、関係のない 2 つのサーバーを同期するために使用できます。
Percona のドキュメントはこちら
例に従って、一方向の同期を行います。
pt-table-sync --execute h=sourcehost1,u=msandbox,p=msandbox h=desthost d=yourdb t=yourtables
さらに、次の機能が存在します。
- ドライラン モード (--dry-run) - プログラムは接続し、同期を計画し、競合を分析し、同期を解決する方法を通知します。これは、この強力なツールを正しく使用するための鍵です。
- 競合分析 - データがどのように比較されるかを確認します。これをスクリプトにフィードバックして潜在的な問題を検出するか、違いがない場合は時間を節約するために同期を実行しないでください。
私が理解しているように、マスターとスレーブの関係は必ずしも存在する必要はありませんが、データの比較により効率的なチェックサムアルゴリズムを使用できるため、存在する場合は同期がより効率的になります。
オプション 2: XtraDb を使用したホット/ストリーミング バックアップ
または、ホスト モードで無料の Percona XtraBackup などを使用streaming
して、バックアップ ファイルを同期させ、必要に応じて開発ボックスに復元することもできます。
XtraBackup は、Percona Server、MySQL、MariaDB、および Drizzle のすべてのバージョンの MySQL ホット バックアップを作成します。ストリーミング、圧縮、および増分の MySQL バックアップを実行します。
オプション C: LVM スナップショット
LVM スナップショットは、短時間のロック/IO の問題により、何らかの頻度で取得する必要がある場合、実稼働ボックスにはおそらく最適なオプションではありませんが、それでもここでは、LVM スナップショットを使用した MySQL バックアップを説明します。
これらのツールはすべて、一方向または双方向でデータを移動します。そのため、データの損失を防ぐには、ツールの使用方法を完全に理解することが重要です。