質問

MySQLレプリケーションで何ができるかについて、かなり良い感触があります。レプリケーションをサポートしている他のデータベースと、MySQLや他のデータベースとの比較はどうですか?

いくつかの質問があります:

  1. レプリケーションは組み込まれていますか、それともアドオン/プラグインですか?
  2. レプリケーションはどのように機能しますか(高レベル)? MySQLは、ステートメントベースのレプリケーション(および5.1の行ベースのレプリケーション)を提供します。他のデータベースと比較する方法に興味があります。有線で出荷されるものは何ですか?変更はレプリカにどのように適用されますか?
  3. マスターとスレーブ間の整合性を確認するのは簡単ですか?
  4. 失敗したレプリカをマスターと同期させるのは簡単ですか?
  5. パフォーマンス? MySQLレプリケーションの嫌いな点の1つは、シングルスレッドであり、マスターは多くの更新を並行して実行できるが、レプリカはシリアルで実行する必要があるため、レプリカの維持が難しいことが多いことです。他のデータベースにこのような落とし穴がありますか?
  6. その他の興味深い機能...
役に立ちましたか?

解決

MySQLのレプリケーションは、完全なマスター/マスターサポートを得るために他の機能を犠牲にする必要があるため、弱いです(サポートされるバックエンドの制限のため)。

PostgreSQLのレプリケーションは、マスター/スタンバイのみがサポートされているため(ログシッピングを使用して)脆弱です。より強力なソリューション(SlonyやLondisteなど)にはアドオン機能が必要です。アーカイブログセグメントは、ネットワーク経由で出荷されます。これは、スタンドアロンデータベースが正常に動作し、クリーンでない起動時に一貫した状態であることを確認するために使用されるレコードと同じです。これは私が現在使用しているものであり、再同期(およびセットアップ、その他の機能)は完全に自動化されています。これらのアプローチはどれも完全に同期的ではありません。 PostgreSQL 8.5以降、より完全なサポートが組み込まれます。ログ配布では、データベースの同期が解除されないため、プロセスが同期ステータスをテストする必要はありません。 2つのデータベースを同期に戻すには、マスターにバックアップフラグを設定し、スレーブにrsyncし(データベースはまだ実行中です;これは安全です)、バックアップフラグを設定解除(およびスレーブプロセスを再起動)します。利用可能なバックアッププロセス。私の店では、このプロセス(他のすべての管理タスクと同様)が自動化されています。マスターは、他の作業に加えて、とにかくログセグメントを内部で再生する必要があるため、パフォーマンスは問題ではありません。したがって、スレーブは常にマスターよりも負荷が低くなります。

OracleのRAC(ストレージバックエンドが1つしかないため、適切に複製されませんが、負荷を共有する複数のフロントエンドがあり、その共有ストレージバックエンド自体に冗長性を構築できるため、ここで言及する価値があります)マルチマスターアプローチは他のソリューションよりもはるかに包括的ですが、 非常に 高価です。データベースの内容は「有線で出荷」されていません;代わりに、関連するすべてのシステムがアクセスできる共有バックエンドに保存されます。バックエンドは1つしかないため、システムは同期できなくなります。

Continuentは、上記の3つのデータベースすべてをサポートする完全に同期的なステートメントレベルのレプリケーションを実行するサードパーティソリューションを提供します。ただし、商業的にサポートされている製品のバージョンは、それほど安くはありません(非常に安価ですが、前回管理したとき、Continententのソリューションでは、クラスターを同期に戻すための手動の介入が必要でした。

他のヒント

海外のマージレプリケーションを使用したMS-SQL 2005(パブリッシャー)およびSQLEXPRESS(サブスクライバー)の使用経験があります。私のコメントは次のとおりです。

1-レプリケーションは組み込まれていますか、それともアドオン/プラグインですか?

組み込み

2-レプリケーションの仕組み     (高レベル)?

スナップショット(サブスクライバーレベルで静的データを提供)からトランザクションレプリケーション(各INSERT / DELETE / UPDATE命令はすべてのサーバーで実行されます)からレプリケートするさまざまな方法。マージレプリケーションは、最終変更のみをレプリケートします(レプリケーション中に同じレコードの連続したUPDATESが一度に行われます)。

3-マスターとスレーブ間の一貫性を確認するのは簡単ですか?

やったことのないこと...

4-失敗したレプリカをマスターと同期させるのは簡単ですか?

基本的な再同期プロセスは、ダブルクリックするだけです...しかし、64Kb接続で再初期化する4Goのデータがある場合、カスタマイズしない限り、長いプロセスになります。

5-パフォーマンス?

まあ...もちろん、接続パフォーマンス、データ量、または最終的にサーバーのパフォーマンスなど、どこかにボトルネックがあります。私の構成では、ユーザーはサブスクライバーのみに書き込みます。サブスクライバーはすべてメインデータベース=パブリッシャーで複製されます。このサーバーは最終ユーザーに決して要請されず、そのCPUは(複数のサーバーへの)データ複製とバックアップに厳密に専念します。サブスクライバーは、クライアントと1つのレプリケーション(パブリッシャー)に専念します。これは、最終ユーザーのデータ可用性に関して非常に興味深い結果をもたらします。パブリッシャーとサブスクライバー間のレプリケーションを一緒に起動できます。

6-その他の興味深い機能...

レプリケーションプロセスを停止することなくデータベースを開発し続けることが可能です。...テーブル(間接的な方法)、フィールドおよびルールは、サブスクライバーに追加およびレプリケートできます。

メインパブリッシャーと複数のサブスクライバーを使用した構成は、マージまたはトランザクションレプリケーションを実行している場合でも、サブスクライバー側で無料のSQLEXPRESSを使用できるため、非常に安価です(他の一部と比較すると...)

Sybase SQL Anywhere

を試してください。

SQL Serverのオプションに追加するだけです(特にSQL 2008には変更追跡機能があります)。考慮すべき点は、Microsoftの Sync Framework です。そこにはいくつかのオプションがあります。基本的なハブアンドスポークアーキテクチャから、単一の中央サーバーと時々接続されるクライアントがある場合に最適です。さらに、ピアツーピア同期により、さらに高度な機能を実現できます。複数の「マスター」データベースとの同期。

従来のレプリケーションの代わりにこれを検討する理由は、コードからより多くの制御ができるためです。たとえば、更新/更新、更新/削除、削除/更新、挿入の同期進行中にイベントを取得できるためです。 /競合を挿入し、ビジネスロジックに基づいてそれらを解決する方法を決定し、必要に応じて、手動または自動処理のために競合のデータの敗者を保存します。 このガイドをご覧ください。レプリケーションおよび/または同期のさまざまな方法。

熱心なプログラマーのために、同期フレームワークは十分にオープンであるため、クライアントをWCF経由でバックエンドデータストアを抽象化できるWCFサービスに接続させることができます(バックエンドとしてOracleを使用している人もいます) 。

私のチームは、WANおよびインターネット(場合によっては低速のダイヤルアップ接続)を介して中央のSQL Serverデータベースからデータのサブセットを同期する複数のSQL Expressデータベースを含む大規模プロジェクトのリリースを完了しました。

MS SQL 2005 Standard Edition以上には、優れたレプリケーション機能とツールがあります。ご覧ください:

http://msdn.microsoft.com/ en-us / library / ms151198(SQL.90).aspx

これは非常に優れています。 SQL Server Expressを読み取り専用サブスクライバーとして使用することもできます。

データベースがレプリケーションを呼び出すには、さまざまなものがあります。それらのすべてが実際に複製を伴うわけではなく、非常に異なる方法で機能するものもあります。一部のデータベースは、いくつかの異なるタイプをサポートしています。

MySQLは非同期レプリケーションをサポートしています。これはいくつかの点で非常に優れています。ただし、弱点があります。ステートメントベースのレプリケーションは、他のほとんどの(何か?)データベースが行うことと同じではなく、期待される動作を常にもたらすとは限りません。行ベースのレプリケーションは、本番環境以外のバージョンでのみサポートされます(ただし、他のデータベースが行う方法との整合性がより高くなります)。

各データベースには独自のレプリケーションがあり、一部には他のツールのプラグインが含まれます。

少し話題は異なりますが、Myatレプリケーションを支援するツールについてMaatkitを確認することをお勧めします。

すべての主要な商用データベースには適切な複製がありますが、一部は他のものよりも適切です。 IBM Informix Dynamic Server(バージョン11以降)は特に優れています。実際には2つのシステムがあります。1つは高可用性(HDR-高可用性データ複製)用で、もう1つはデータ配布(ER-エンタープライズ複製)用です。また、Mach 11の機能(RSS-リモートスタンドアロンセカンダリ、SDS-共有ディスクセカンダリ)も優れており、HDRペアのプライマリまたはセカンダリのいずれかに書き込むことができる11.50で二重になっています。

完全開示:Informix softareに取り組んでいます。

自分で試したことはありませんが、OpenBaseSQLを調べることもできます。OpenBaseSQLには、使いやすいレプリケーションが組み込まれているようです。

もう1つの方法は、仮想化環境で実行することです。このブログ記事のデータは面白いと思いました

http://chucksblog.typepad.com/chucks_blog/2008 /09/enterprise-apps.html

EMCの管理者によるものであるため、明らかに独立しているわけではありませんが、実験は再現可能である必要があります

これはOracle固有のデータです

http:/ /oraclestorageguy.typepad.com/oraclestorageguy/2008/09/to-rac-or-not-to-rac-reprise.html

編集:仮想化を実行する場合、複製を作成する方法があります

http://chucksblog.typepad.com/chucks_blog /2008/05/vmwares-srm-cha.html

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top