0

私はレプリケーションと呼びたいものを研究していますが、おそらく他の技術用語があるでしょう - 私が知る限り、「レプリケーション」は構造とそのデータをスレーブに完全に複製することです. 構造の複製のみが必要です。私の用語はおそらく間違っているため、自分で答えを見つけることができないようです。

変更、追加、または削除が行われたときにマスター構造を複数のローカル データベースに複製する mysql 環境をセットアップすることは可能ですか? 各ユーザーが独自の一意のデータを持つ独自のデータベース インスタンスを取得するが、テーブルの構造は同じであるソリューションを探しています。マスター構造を更新する場合、同じ手順を各ユーザー データベースで複製する必要があります。

たとえば、 user1.table1およびuser2.table1によって複製されるmaster.table1に列が追加されています。

私の最初のアイデアは、PHP で更新手順を作成することでしたが、これはデータベースに組み込まれている非常に基本的な関数のように感じました。なぜなら、私の結論は、より少ないデータでインデックス検索がはるかに高速になるからです (~ 合計データを で割った値)ユーザー) そしておそらくより安全です (不幸なリークはありません)。

4

2 に答える 2

1

この問題は、データベースの変更ごとに、year-month-day-description.sqlという名前のSQLスクリプトの単純なセットで解決しました。これは、辞書式順序で実行されます(そのため、日付で始まります)。

もちろん、毎回それらを実行する必要はありません。したがって、実行する必要のあるスクリプトを知るために、各スクリプトの最後に単純な挿入があり、スクリプトのファイル名をデータベースのテーブルに挿入します。したがって、アップデーターPHPスクリプトは、スクリプトのリストを作成し、テーブルからそれらを削除して、残りを実行するだけです。

このソリューションの良い点は、データ変換も含めることができることです。また、完全に自動化することもでき、スクリプトに問題がない限り、問題は発生しません。

于 2013-01-29T23:49:25.967 に答える
1

おそらく、RubyonRailsフレームワークで普及しているデータベース「移行」の使用を組み込むことを検討する必要があります。 このPHPデータベースの移行に関するGoogle検索は、あなたにとって出発点となる可能性があります。

概念は、アプリケーションを開発してスキーマを変更するときに、SQL移行スクリプトを作成して、スキーマの変更をロールフォワードまたはロールバックできるということです。これにより、データベーススキーマを簡単に「移行」して、特定のコードバージョンで動作するようになります(たとえば、それぞれ異なるバージョンのデータベースが必要な複数の環境で分岐コードを処理している場合)。

それはあなたが提案するように自動的に更新を行うことにはなりませんが、確かに正しい方向への一歩です。Toad for MySQLやNavicatのような、スキーマ同期をある程度サポートするツールもあります。ただし、これらは手動の比較/同期になります。

于 2013-01-29T23:21:18.637 に答える