1 要件の概要MySQL5.6本番データベースの複数のテーブルのデータは、Oracle11gデータウェアハウスにリアルタイムで同期されます。MySQL履歴データは700Gで、毎日平均約50Gのログファイルが生成されます。MySQLログスペースは50Gで、制限を超えるとログファイルがロールアウトされます。同期プロセス全体が MySQL のビジネス操作に影響を与えてはなりません。 2 技術原則LingBee データ統合ソフトウェア BeeDI は、MySQL データを Oracle にリアルタイムで同期し、ETL を通じて履歴データを完全に同期し、ログ分析を通じて増分データをリアルタイムで同期するために使用されます。 ログスペースの制限により、すべての履歴データを一度に同期すると、1 日以上かかります。完全同期プロセス中に生成されたログは削除され、リアルタイム ログ解析タスクのデータが欠落します。したがって、履歴データはバッチで同期する必要があります。基本的な操作は次のとおりです。 部分的なテーブルを完全に同期します。 b. 完全に同期されたテーブルをリアルタイム ログ解析タスクに追加し、タスクを開始します。MySQL と Oracle の対応するテーブル データが整合したら、ログ解析タスクを停止します。 すべてのテーブルがリアルタイム ログ解析タスクに追加されるまで、上記の手順 a と b を繰り返します。 3 MySQL環境の設定3.1 ユーザーを作成する メイン データベースに同期ユーザーを作成します。ユーザー同期を例にとると、ユーザーを作成して権限を割り当てるためのステートメントは次のようになります。 'sync'@'%' というユーザーを作成します ('xxxxx' によって識別されます)。 *.* に SELECT、PROCESS、SUPER、REPLICATION CLIENT、REPLICATION SLAVE 権限を 'sync'@'%' に付与します。 3.2 BinLogを有効にする メイン データベースのログのオープン状態とログ レコード形式を照会します。 'log_bin' のような変数を表示します。 「%binlog_format%」のような変数を表示します。 ログ ステータスが OFF の場合、またはログ形式が ROW でない場合は、my.ini ファイルを編集して次の項目を設定します。 log-bin="xxxxxx" --ログを開く binlog_format="ROW" --ログレコード形式 4 BeeDI同期操作4.1 完全同期タスクの設定 BeeDI で新しい ETL ジョブを作成し、ETL テンプレート プロパティ ダイアログ ボックスのマッピング プロパティで LOB ロードをバインドされたストレージに設定します。 [LOB ロード] は、Oracle LOB データのロード方法を指定するために使用されます。配置ストレージは、LOB ポインタを配置することによって LOB コンテンツを更新し、バインド ストレージは、パラメータ バインドによって LOB コンテンツを更新します。 データ抽出のパフォーマンスを最適化するには、抽出コンポーネントの [オプション] ダイアログボックスで [非同期] 抽出モードを設定することをお勧めします。 データの読み込みパフォーマンスを最適化するには、読み込みコンポーネントの [オプション] ダイアログ ボックスでバッチ読み込みモードを選択することをお勧めします。 完全同期タスクの構成は次のように完了します。 上記の方法に従って、それぞれが同期テーブルに対応する複数の ETL ジョブを作成します。 4.2 リアルタイムログ解析タスクの設定 リアルタイム分析タスクでは、同期するすべてのテーブルを指定するスクリプトジョブを使用します。スクリプトコードは次のとおりです。 4.3 完全同期タスクを実行する 実行する完全同期ジョブを選択し、ツールバーの[開始]ボタンをクリックします。本番ライブラリリソースとBeeDIが配置されているマシンリソースが十分であれば、複数の完全同期ジョブを同時に開始できます。 4.4 リアルタイムログ解析タスクを実行する すべての完全同期ジョブが終了したら、リアルタイム タスク スクリプトを編集し、変数 cdc_tables に完全同期されたテーブルを指定し、inquireLog 関数のパラメータにログ キャプチャ開始点を設定します。最初の完全同期ジョブの開始時刻をログ キャプチャ開始点として指定できます。ログ キャプチャ ポイントは、タスクを最初に実行するときに 1 回だけ設定する必要があります。ログ キャプチャ ポイントは、後でタスクを実行するときに自動的に管理されます。 スケジュール ウィンドウで、ショートカット メニューから [追加] をクリックして、実行するリアルタイム ログ解析ジョブを読み込みます。スケジュール ウィンドウでリアルタイム ジョブを選択し、ツールバーの [タイミング] ボタンをクリックして、タイミングを秒単位で設定し、実行サイクルを 1 秒に設定します。 リアルタイム タスクが実行されると、1 分ごとに読み取られるログ レコードと最新のログ解析時点を含む MySQL データベース ログ解析情報がログ ウィンドウに出力されます。 4.5 同期テーブルを追加する リアルタイムタスクに対応するジョブステータスにタイミングアイコンが頻繁に表示される場合、タスクがリアルタイム状態に入ったことを示します。この時点で、MySQL ソーステーブルと Oracle ターゲットテーブルのデータは一致しています。リアルタイムログ解析タスクを停止し、他のテーブルの完全同期タスクを構成します (4.1 および 4.3 を参照)。完全なタスクが完了したら、リアルタイム ログ解析タスクを編集し、完全に同期された他のテーブルを追加して、リアルタイム タスクを開始します (4.2 および 4.4 を参照)。 5. 同期データの一貫性を確認するソースデータベースとターゲットデータベースで順番に select count(*) from [table] を実行し、テーブルレコード数が等しいかどうかを比較します。 ソース データベースとターゲット データベースでそれぞれ select sum([数値列]) from [テーブル] を実行し、指定されたフィールドの算術合計が等しいかどうかを比較します。 これで、MySQL から Oracle へのリアルタイム同期ソリューションの詳細な説明に関するこの記事は終了です。MySQL から Oracle へのリアルタイム同期に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: マテリアルデザインで水滴アニメーションボタンを実現するための純粋なCSS
MySQL は、ユーザーごとに 2 つの異なるバージョンを提供します。 MySQL コミュニティ サ...
目次落とし穴充填方法何の穴ですか?要約する落とし穴最近、仕事で商品の割引価格を計算すると、いつも1セ...
目次1. アレイ重複排除2. 配列内のオブジェクトの重複排除3. 配列内の同じフィールドに基づいて別...
目次1. リストインターフェースとその他のモジュールの表示処理2. 従来のインターフェースコンポーネ...
序文今日はちょっとしたデモを書きました。左右にスワイプするロジックに関わる部分があります。当初はプラ...
目次1. 元の配列が変更されます1. プッシュ(): 2.ポップ(): 3. シフト(): 4.un...
勉強の計画は簡単に中断され、継続するのが困難です。先日、社内で事業の方向性を調整するための会議があり...
この記事では、具体的な例を使用して、CentOS 7 から CentOS 8 にアップグレードする方...
grubの起動時間を変更するためのオンライン検索は基本的に/etc/default/grubを変更す...
MySQL 一時テーブルは、一時的なデータを保存する必要がある場合に非常に便利です。一時テーブルは現...
1. 依存パッケージをインストールする yum -y インストール gcc-c++ ncurses-...
この記事では、主に実際のアプリケーションでよく使用されるMySQLの時刻と日付、および変換関数につい...
目次配列分割代入オブジェクトの分解代入分割割り当ての適用変数の値の交換関数から複数の値を返すマップ構...
1. CSS 方法論とは何ですか? CSS methodologiesデザイン パターンまたは CS...
矢が放たれる前に、弓は矢にささやきました。「お前の自由は私のものだ。」スキーマは矢のようなもので、弓...