2つのデータベース間のMysqlデータベースの同期


81

MySqlバックエンドを使用して、さまざまなショップでJava PoS(Point of Sale)アプリケーションを実行しています。ショップのデータベースをホストサーバーのデータベースと同期させたい。

ショップで変更が発生した場合は、ホストサーバーで更新する必要があります。どうすればこれを達成できますか?



簡単ですか?どれくらいかかると思いますか?
peedee 2011年

2
@peedeeMySQLレプリケーションは非常に簡単にセットアップできます。いくつかのコマンドと初期同期。初めて30分くらいかかりました。
ceejayoz 2011年

2
良い質問のスポットは、同じ目的のために同じことを疑問に思っていました]
codefreaK 2014年

あなたは、どちらかのMySQLのレプリケーション機能を使用することができるか、データベースの同期を行う可能ないくつかのツールがありますが、それらはここに記載されていますstackoverflow.com/questions/52583/...
ピーターVenderberghe

回答:


60

レプリケーションの作成はそれほど難しくありません。

ここにいくつかの良いチュートリアルがあります:

http://www.ghacks.net/2009/04/09/set-up-mysql-database-replication/

http://dev.mysql.com/doc/refman/5.5/en/replication-howto.html

http://www.lassosoft.com/Beginners-Guide-to-MySQL-Replication

ここで覚えておく必要のあるいくつかの簡単なルールがあります(もちろんもっとありますが、それが主な概念です):

  1. データを書き込むために1台のサーバー(マスター)をセットアップします。
  2. データを読み取るために1つ以上のサーバー(スレーブ)をセットアップします。

このようにして、エラーを回避できます。

例: スクリプトがマスターとスレーブの両方の同じテーブルに挿入されると、重複する主キーの競合が発生します。

「スレーブ」は、マスターと同じ情報を保持しているがデータを直接追加できない「バックアップ」サーバーとして表示できます。マスターサーバーの指示に従うだけです。

注:もちろん、マスターから読み取ることもスレーブに書き込むこともできますが、同じテーブル(マスターからスレーブおよびスレーブからマスター)に書き込まないように注意してください。

サーバーを監視して、すべてが正常であることを確認することをお勧めします。

さらにサポートが必要な場合はお知らせください


はい、ショップ=マスター、サーバー=スレーブ
Book Of Zeus

マスターを構成しました。1つのスレーブデータベースに接続します。これを行うと、マスターへの変更はスレーブに反映され、スレーブへの変更もマスターに反映されますか?
peedee 2011年

はい、セットアップが良ければすぐに!マスターにレコードを挿入し、スレーブで選択を実行してテストできます。そのパスがあれば、あなたは設定されています!
ゼウスの本

やあ、仲間...スレーブでエラー1045が発生しました。その理由は何でしょうか?あなたは何か考えがありますか?
peedee 2011年

エラー1045:ユーザーのアクセスが拒否されました: 'root @ localhost'(パスワードを使用:NO)およびdev.mysql.com/doc/refman/5.1/en/access-denied.html
Book Of Zeus

23

3つの異なるアプローチ:

  1. 従来のクライアント/サーバーアプローチ:ショップにデータベースを配置しないでください。アプリケーションにサーバーにアクセスさせるだけです。もちろん、VPNを設定する方が良いですが、単に接続をSSLまたはsshでラップするのが妥当です。プロ:それはデータベースが最初に考えられていた方法です。短所:待ち時間が長く、複雑な操作が遅くなる可能性がある場合は、ストアドプロシージャを使用して、ラウンドトリップの数を減らす必要があります。

  2. 複製されたマスター/マスター:@Book OfZeusが提案したように。短所:セットアップがやや複雑になり(特に複数のショップがある場合)、ショップマシンに侵入すると、システム全体が危険にさらされる可能性があります。長所:読み取り操作は完全にローカルであり、書き込み操作は非同期で伝播されるため、応答性が向上します。

  3. オフライン操作+同期ステップ:すべての作業をローカルで実行し、時々(1時間に1回、毎日、毎週など)、最後の同期操作からのすべての新規/変更されたレコードを含む要約を書き込み、サーバーに送信します。長所:ネットワークがなくても動作し、高速で、簡単に確認できます(要約が読みやすい場合)。短所:リアルタイムの情報がありません。


10
3番目のタイプのdbsync(オフライン操作+同期)をセットアップする必要があります。これについてもっと読みたいと思います。これをグーグルで検索することはできません。彼らの本/記事は私が参照できますか?
abhishek77in

10

SymmetricDSがその答えです。一方向または双方向の非同期データレプリケーションで複数のサブスクライバーをサポートします。Webおよびデータベーステクノロジを使用して、必要に応じてほぼリアルタイムでリレーショナルデータベース間でテーブルを複製します。

ニーズに合わせた包括的で堅牢なJavaAPI。


インターネットのない地域に別のデータベースを備えた内部サーバーがあり、データベースWebでオンライン購入者がホストされていて、内部データベース購入をライブに移行したい場合、2つの間の自動増分はどうなるかアドバイスしてください。両方が同じIDを予約している場合、それは厄介ですよね!?したがって(内部データベースで行われた操作を、IDの自動増分やテーブル間の関係に影響を与えることなくライブに同期する必要があります)
shareef 2018年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.