web-dev-qa-db-ja.com

2つのMySQLデータベースを2つの異なる場所で同期する

2つの同一のMySQLデータベースを1つは内部サーバーに、もう1つはWebホスティングサーバーに配置しています。内部サーバー上のデータベースを使用して、Webホスト上のデータベースを毎日更新したいと考えています。このプロセスを自動化する方法はありますか?また、これを手動で行う方法はありますか?手動で行う場合、内部サーバーでデータベースのSQLダンプを取得し、それをWebホストのデータベースにインポートする必要がありますか?誰かがアドバイスしてください。

24
ry12

いくつかのオプションがあります。

  1. サーバー間のMySQLレプリケーションをセットアップします。内部サーバーはマスターとして機能し、Webホストサーバーはスレーブとして機能します。マスター上で実行された更新は、すぐにスレーブに複製されます(接続が機能している場合)。これは、選択する最も簡単で効果的なオプションです。レプリケーションを使用するには、内部データベースにWebホストからネットワーク経由でアクセスできる必要があります。

    レプリケーションの詳細については、 ここ を参照してください。

  2. 毎日、内部サーバーでmysqldumpを実行し、ダンプファイルをウェブホストにアップロードして、データをインポートできます。これは完全なダンプなので、非常に大きなデータベースがある場合、これは実行できない可能性があります。必要に応じて、この手順をスクリプト化して、手動で実行する必要をなくすことができます。

  3. 内部サーバーに バイナリロギング を設定できます。次に、バイナリログをWebホストに送信してデータベースに適用し、その日に発生したすべてのトランザクションをWebサーバーで効果的に再生できます。実際、これはとにかくレプリケーションで発生することなので、ほとんどの場合、このオプションの代わりにレプリケーションを設定することになります。

2つのデータベース間に接続がない場合、毎日mysqldumpを取得するのが最も簡単な方法です。

24
Matt Healy

2つのデータベースの同期に役立つ symmetricDS のようなオプションを使用することもできます。これにより、インターネット帯域幅を節約できるように同期する必要があるテーブルを選択できます。これは、2つの場所の間に接続性がない場合のシナリオにも適しています。

4

MariaDBを使用してデータベースの複製を設定する方法:https://www.techrepublic.com/article/how-to-set-up -database-replication-with-mariadb /

2
Dylan B

Navicat を使用できます。それは主にdbマネージャーですが、自動化できるようにデータ転送とデータ同期機能、およびスケジューラーを備えています。無料ではありませんが、30の完全な機能トライアルがあります。

0
Josh A.