すべてのプロダクト
Search
ドキュメントセンター

:MySQL からのデータ同期のためのデータソースの設定

最終更新日:Jan 11, 2025

MySQL データベースのデータを Hologres に同期する場合、このトピックの操作を参照して、ネットワーク環境やデータソースのホワイトリストなどの設定を準備できます。

前提条件

データソースを設定する前に、以下の操作が実行されていることを確認してください:
  • データソースの準備: ソース MySQL データソースとデスティネーション Hologres データソースが作成されている。
  • リソースの計画と準備: Data Integration 専用のリソースグループが購入され、設定されている。 詳細については、「リソースの計画と設定」をご参照ください。
  • ネットワーク環境の評価と計画: データ統合を実行する前に、ビジネス要件に基づいてネットワーク接続方法を選択し、その方法を使用してデータソースを Data Integration 専用のリソースグループに接続する必要があります。 データソースと Data Integration 専用のリソースグループが接続された後、このトピックで説明されている操作を参照して、vSwitch やホワイトリストなどのアクセス設定を行うことができます。
    • データソースと Data Integration 専用のリソースグループが同じリージョンと仮想プライベートクラウド (VPC) に存在する場合、それらは自動的に接続されます。
    • データソースと Data Integration 専用のリソースグループが異なるネットワーク環境に存在する場合、VPN ゲートウェイなどの方法を使用して、データソースとリソースグループを接続する必要があります。
  • 次のステートメントを実行して、MySQL データベースのバージョンが MySQL 5.X または MySQL 8.X であるかどうかを確認します。
    select version();
    説明 MySQL データソースからのリアルタイムデータ同期は、MySQL バイナリログのリアルタイムサブスクリプションに基づいて実行されます。 MySQL からデータを同期するために使用されるリアルタイム同期ノードには、MySQL バージョンが V5.X または V8.X である ApsaraDB RDS for MySQL データソースのみ使用できます。 PolarDB for MySQL はサポートされていません。 ApsaraDB RDS for MySQL データベースの MySQL バージョンが V5.X または V8.X でない場合は、MySQL バージョンが V5.X または V8.X である ApsaraDB RDS for MySQL データベースを使用してください。 そうしないと、データ同期ノードは実行に失敗します。

背景情報

ソースからデスティネーションにデータを同期する前に、データソースと Data Integration 専用のリソースグループが接続されていることを確認してください。 さらに、アカウントを作成し、そのアカウントにデータソースへのアクセスを承認する必要があります。
  • データソースのホワイトリストの設定
    データソースと Data Integration 専用のリソースグループが同じ VPC に存在する場合、Data Integration 専用のリソースグループの CIDR ブロックをデータソースのホワイトリストに追加する必要があります。 これにより、Data Integration 専用のリソースグループを使用してデータソースにアクセスできるようになります。 VPC connection
  • アカウントの作成とアカウントへの権限の付与

    データ同期プロセス中に、データソースへのアクセス、ソースからのデータの読み取り、およびデスティネーションへのデータの書き込みに使用できるアカウントを作成する必要があります。

  • バイナリロギング機能の有効化

    ソースデータソースが MySQL データベースの場合、バイナリロギング機能を有効にする必要があります。 バイナリログは、すべてのテーブルスキーマの変更とテーブルデータの変更を記録します。 CREATE や ALTER などのステートメントを実行して、テーブルスキーマに対する操作を実行できます。 INSERT、UPDATE、DELETE などのステートメントを実行して、テーブルデータに対する操作を実行できます。 バイナリログを使用して、データベースの変更履歴の表示、増分データのバックアップとデータベース内のデータの復元、プライマリデータベースからセカンダリデータベースへのデータのレプリケーションを行うことができます。

    バイナリログの形式:
    • ステートメント: SQL ステートメントベースのレプリケーション。 この形式のバイナリログは、データエントリの変更に実行された SQL ステートメントを記録します。
    • 行: 行ベースのレプリケーション。 この形式のバイナリログは、行のデータエントリに関する変更の詳細のみを記録します。
    • 混合: 混合モードのレプリケーション。 このモードは、ステートメント形式と行形式を組み合わせたものです。 ほとんどの場合、ステートメント形式のバイナリログは、関数など、データエントリの変更に実行された SQL ステートメントを記録するために使用されます。 プライマリデータベースからセカンダリデータベースへのデータレプリケーションをこの形式のバイナリログを使用して実装できない場合は、行形式に切り替えます。 MySQL は、実行される各 SQL ステートメントに基づいて、使用する形式を決定します。

制限事項

  • MySQL からのデータのリアルタイム同期は、MySQL バイナリログのリアルタイムサブスクリプションに基づいて実行されます。 MySQL からのリアルタイムデータ同期は、MySQL 5.X または 8.X を実行する ApsaraDB RDS for MySQL データソースのみをサポートします。 MySQL からのリアルタイムデータ同期は、MySQL を実行する PolarDB-X 1.0 データソースをサポートしていません。 MySQL を実行する PolarDB-X 1.0 データソースからデータをリアルタイムで同期する場合は、「DRDS データソースの追加」を参照して、PolarDB-X 1.0 データソースを追加し、そのデータソースのリアルタイム同期ノードを設定できます。
  • リアルタイム同期機能を使用して、XA ROLLBACK ステートメントが実行されたデータを同期することはできません。 XA PREPARE ステートメントが実行されたトランザクションデータについては、リアルタイム同期機能を使用して、データをデスティネーションに同期できます。 後で XA ROLLBACK ステートメントがデータに対して実行された場合、データへのロールバックの変更はデスティネーションに同期できません。 同期するテーブルに XA ROLLBACK ステートメントが実行されたテーブルが含まれている場合は、XA ROLLBACK ステートメントが実行されたテーブルを削除し、削除したテーブルを再度追加して、ソースの完全なデータを初期化し、増分データを同期する必要があります。
  • 現在のワークスペースとは異なる Alibaba Cloud アカウントに属する ApsaraDB RDS for MySQL インスタンスを MySQL データソースとして DataWorks に追加し、その MySQL データソースのデータ同期ノードを設定する場合、Data Integration 専用のリソースグループのみを使用してノードを実行できます。 共有リソースグループ for Data Integration を使用してノードを実行する場合、リソースグループは MySQL データソースのデータにアクセスできません。

手順

  1. MySQL データベースのホワイトリストを設定します。
    専用リソースグループが存在する VPC の CIDR ブロックを MySQL データベースのホワイトリストに追加します。
    1. Data Integration 専用のリソースグループの Elastic IP アドレス (EIP) と CIDR ブロックを表示して記録します。
      1. DataWorks コンソールにログインします。
      2. 左側のナビゲーションペインで、[リソースグループ]をクリックします。
      3. [専用リソースグループ]タブで、Data Integration 専用のリソースグループを見つけ、[アクション] 列の [情報を表示]をクリックします。
      4. [専用リソースグループ] ダイアログボックスで、[eipaddress] パラメーターと [CIDR ブロック] パラメーターの値を表示して記録します。
      5. [専用リソースグループ]タブで、Data Integration 専用のリソースグループを見つけ、[アクション] 列の [ネットワーク設定]をクリックします。
      6. 表示されるページの [VPC バインディング]タブで、Data Integration 専用のリソースグループが関連付けられている [vswitch の CIDR ブロック]を表示して記録します。
    2. 専用リソースグループの EIP と CIDR ブロックを MySQL データベースのホワイトリストに追加します。
  2. アカウントを作成し、そのアカウントに権限を付与します。
    MySQL データベースにログインするためのアカウントを作成する必要があります。 アカウントに SELECT、REPLICATION SLAVE、REPLICATION CLIENT 権限を付与する必要があります。
    1. アカウントを作成します。
      詳細については、「MySQL データベースにアクセスするためのアカウントの作成」をご参照ください。
    2. アカウントに権限を付与します。
      次のコマンドを実行して、アカウントに権限を付与できます。 または、アカウントに SUPER 権限を付与することもできます。 特定のステートメントを実行するときは、データ同期用アカウントを作成済みアカウントに置き換えます。
      -- CREATE USER 'データ同期用アカウント'@'%' IDENTIFIED BY 'パスワード'; // データ同期に使用するアカウントを作成し、パスワードを設定して、ホストからデータベースにアクセスできるようにします。 % はホストを示します。
      GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'データ同期用アカウント'@'%'; // アカウントに SELECT、REPLICATION SLAVE、REPLICATION CLIENT 権限を付与します。 
      *.* は、同期アカウントにすべてのデータベースのすべてのテーブルに対する上記の権限が付与されていることを示します。 また、指定されたデータベースの指定されたテーブルに対する上記の権限を同期アカウントに付与することもできます。 たとえば、user テーブルの test データベースに対する上記の権限をアカウントに付与するには、次のステートメントを実行します: GRANT SELECT, REPLICATION CLIENT ON test.user TO 'データ同期用アカウント'@'%';
      説明 REPLICATION SLAVE 権限はグローバル権限です。 指定されたデータベースの指定されたテーブルに対するこの権限を同期アカウントに付与することはできません。
  3. MySQL データベースのバイナリロギング機能を有効にします。
    次の手順を実行して、バイナリロギング機能が有効になっているかどうかを確認し、バイナリログの形式をクエリします:
    • 次のステートメントを実行して、バイナリロギング機能が有効になっているかどうかを確認します:
      show variables like "log_bin";

      返された結果に ON が表示されている場合、バイナリロギング機能は有効になっています。

    • セカンダリデータベースを使用してデータを同期する場合は、次のステートメントを実行して、バイナリロギング機能が有効になっているかどうかを確認します:
      show variables like "log_slave_updates";

      返された結果に ON が表示されている場合、セカンダリデータベースのバイナリロギング機能は有効になっています。

    返された結果が上記の結果と異なる場合は、MySQL ドキュメントの説明に従ってバイナリロギング機能を有効にします。
    次のステートメントを実行して、バイナリログの形式を表示します:
    show variables like "binlog_format";
    返された結果:
    • ROW: バイナリログの形式は行です。
    • STATEMENT: バイナリログの形式はステートメントです。
    • MIXED: バイナリログの形式は混合です。

次のステップ

データソースが設定されると、ソース、デスティネーション、および Data Integration 専用のリソースグループが接続されます。 その後、Data Integration 専用のリソースグループを使用してデータソースにアクセスできます。 ソリューションを作成するときに、ソースとデスティネーションを DataWorks に追加し、それらをデータ同期ソリューションに関連付けることができます。

データソースを追加する方法の詳細については、「データソースの追加」をご参照ください。