web-dev-qa-db-ja.com

MySQLにはChange Data Captureのバージョンがありますか?

古いシステムを段階的に廃止し、新しいシステムに移行しています。前回、古いシステムを段階的に廃止したとき、両方のシステムを並行して実行し、すべてが私たちの分野で完全に移行されるまで、両方のシステム間でデータを統合しました。その過程で、レガシーシステムと、SQL Serverの変更データキャプチャを利用して変更を追跡し、それらを段階的に統合する新しいシステムとの統合を構築することができました。

この次の移行では、段階的に廃止するレガシーシステムは、SQL ServerではなくMySQL v5.1.69に基づいています。私はMySQLに精通しておらず、現在のバージョンまたは移行する価値がある新しいバージョンのMySQLで活用できるCDCに類似したテクノロジーがあるかどうか疑問に思っていましたか?

6
njkroes

LinkedInは、MySQLをサポートするCDCツール Databus をオープンソース化しています。 MySQLをサポートする方法については、プロジェクトのwikiで読むことができます: Databus for MySQL ブログの説明はこちら: Open sourceing Databus:LinkedInの低遅延変更データキャプチャシステム

ただし、いくつかの制限があることに注意してください。

現在の実装は完全に機能していますが、概念実証と見なす必要があります。その主な目的は、データバス用のMySQLフェッチャーを作成する方法を示すことです。フェッチャーの基本機能はテスト済みですが、実稼働環境にはデプロイされていません。 LinkedInでは、カスタムパッチを適用したMySQLに依存する少し異なる実装を実行しています。

別のオープンソースCDCツールは FlexViews プロジェクトの一部として作成されたFlexCDC(PHPで実装)です。

[...] RBRロギングに基づいてMySQLに柔軟なCDCレイヤーを提供することを目的とするFlexCDC、およびFlexCDCを使用してマテリアライズドビューを増分的に維持するために必要な変更を収集するFlexviews。

From: MySQL 5.1の(その他の)変更データキャプチャユーティリティがないのはなぜですか?

5
Bill Karwin

Debezium オープンソースのCDCプラットフォーム、特に MySQLをサポート をご覧になることをお勧めします。

Debeziumを使用して変更をApache Kafkaにストリーミングできますが、その 組み込みモード を使用して、DebeziumコネクターをJavaアプリケーションで簡単にライブラリとして使用することもできますデータの変更をKinesisなどの他のストリーミングAPIに伝達する.

免責事項:私はDebeziumプロジェクトのリーダーです。

4
Gunnar

最近、MySQLでCDCを使用する必要がある学術プロジェクトがありました。市場にはいくつかのツールがあります。 Maxwell CDCを使用してPOCを作成できました。

Maxwellのユニークな機能は、DDLステートメントも解析できることです。マクスウェルのページへのリンクはこちら http://maxwells-daemon.io

ここにすべてのCDCの準拠リストがあります: https://github.com/wushujames/mysql-cdc-projects/wiki

4
Anurag Kale

データベースプロキシを使用してもかまわない場合は、 MariaDB MaxScale AVROルーター を使用してbinlogイベントをAVROに変換する MariaDB MaxScaleのCDCプロトコル を参照してください。ファイル。 CDCプロトコルは、登録されたクライアントが変更データキャプチャイベントを使用できるようにします。 (MaxScaleはMySQL、または少なくとも古いMySQLバージョンと互換性がある必要があります。)

0
dbdemon

トリガーに基づいて何かを抽出することを試みることができます(挿入、削除、更新後)。ターゲットシステムに依存すると思います。 CDCはどのように機能しましたか?すべてのデータと構造をMySQLデータベースに伝播しましたか?

トリガーを使用して一種のワークキューを埋めることができるため、テーブルAのエントリEntryARownrXが変更された場合、その情報(テーブルA、行nr X、更新/挿入/削除)をテーブルをキューに入れ、その変更を新しいシステムに変換します(データの実際の値をAから直接読み取って挿入または更新します)。

0
flaschenpost