2009-04-27 14 views
4

これはシナリオです:MySQLデータベースのレプリケーション

  1. 私はデータベースとMySQLサーバを持っている、のは、consolidateddbそれを呼びましょう。このデータベース私は、元のデータベースと、これらのデータベースは、本番データベースであり、毎日更新され、別のMySQLサーバを持っている様々なデータベース
  2. から複数のテーブルを統合。
  3. 同社はconsolidateddbに対応するテーブルに本番データベースの各テーブルの上に/それぞれの更新/挿入をコピー、削除したいです。

はそれを達成複製しませんか?レプリケーションはデータベースへのデータベースでは行われますが、1つのターゲットデータベースに対して異なるデータベースに属するテーブルでは実行されません。

私の説明がはっきりしていれば幸いです。ありがとう。

編集:各データベースのすべてのテーブルを単一のスレーブに再帰コピーするかそれとも醜い解決策ですか?

+0

consoliddbがスレーブサーバ上の個別のdbsにすべてを格納するだけの理由はありますか? – Louis

答えて

0

Replicating Different Databases to Different Slavesをチェックし、それがどのような方法であなたを助けている場合参照してください。

+0

こんにちは、逆の言い方をすると、異なるマスターデータベースを異なるマスターデータベースのすべてのテーブルを含むスレーブに複製することです。なぜ、私はこのフリークを継承したのですか? – Moutaz

0

のMySQLステートメントベースレプリケーション(基本的なレプリケーション)が、スレーブのマスタ上で実行したとまったく同じ文を実行することによって動作します。これには、テーブルが入っていたデータベースに関する情報が含まれています。

MySQLは、データベース間でレプリケーションステートメントを移動するための組み込みの方法を提供しているとは思いません(「insert into db1.table1 ...」 - > db2.table1 ")。その場でレプリケーションログを手動で変更することでそれを騙すことができますが、それはout-of-the-bodのMySQLレプリケーションではありません。

0

でそれをやってのけることができるかもしれません。無料ダウンロードで、テーブルのアーカイブなどの最適化に特化したツールが多数あります。過去のプロジェクトで、特定のデータを別のDBなどに複製するために使用しました。時間やその他の要因に基づいて実行できます。レプリケーション(MySQLを4+)を設定することができ、私の知る限りとmy.cnfファイル内

0

は、特定のテーブルをスレーブのみプロセスのいずれか特定のテーブルを持っているか、マスターログを持って、あなたの問題を解決しますいずれかの方法。ここで

はいくつかのテクニックガイドです:

http://www.onlamp.com/pub/a/onlamp/2006/04/20/advanced-mysql-replication.html

私は、レプリケーションのセットアップと非常にいくつかの問題を持っている、すべての私の問題は

11
など、特に再起動後に、各DBを同期しようとして来ました

いくつかの問題を解決するために、現在のmysqlの習慣に合わせて名前を付けましょう。データベースはデータベースサーバーです。スキーマはデータベースインスタンスです。データベースサーバーは、複数のスキーマを持つことができます。テーブルはスキーマ内に存在します。

スキーマまたはテーブルをマスタ/プロダクションサーバのと定義して複製する場合は、複製が役に立ちます。レプリケーションは、マスター上で実行されるすべてのSQLステートメントのバイナリ・ログをスレーブに送信することによって機能し、スレーブは、スレーブ自身を順次実行するかのように実行します。

すべてのデータを複製するか、いくつかのスキーマを選択することも、一部のテーブルだけを選択することもできます。

異なるスキーマからテーブルを選択して1つのスキーマにレプリケートすることはできません。テーブルは特定のスキーマに属します。

ところで、重要なお知らせ。レプリケーションサーバは、を複数のマスタのスレーブにすることはできません。フェデレーテッド・テーブルを使用してこれを模倣することはできますが、データを統合サーバーにコピーすることはなく、異なるサーバーからのデータが1つのサーバーにあるかのように表示するだけです。

レプリケーションの特典は、統合サーバーが常にデータを更新することです。

2

各マスタからバイナリログを取得し、mysqlbinlogで解析してから、統合マシンに実行することができます。非常に約よう

何か:

mysqlbinlog [binary log files] | mysql -h consolidated 

あなたはロジックをラップする(私はあなたが必要な場合、それはbashで行うことができる疑いがある)単純なアプリケーションのいくつかの種類を必要とするだろう。

関連する問題