DuckDB ベースの分析プライマリインスタンス は、カラムストア、ジャストインタイム (JIT) コンパイル、ベクトル化実行、効率的なメモリ管理、並列処理などの機能をサポートしています。InnoDB ストレージエンジンと比較して、複雑なクエリのパフォーマンスを最大で 100 倍向上できます。Data Transmission Service (DTS) を使用して、RDS for MySQL インスタンスのデータベーススキーマおよびデータを DuckDB ベースの分析プライマリインスタンス に同期し、企業向けビジネスインテリジェンス (BI)、インタラクティブなクエリ、リアルタイムレポートシステムを迅速に構築できます。
前提条件
宛先の DuckDB ベースの分析プライマリインスタンス を作成済みです。詳細については、「DuckDB ベースの分析プライマリインスタンスの作成」をご参照ください。
宛先の DuckDB ベースの分析プライマリインスタンス のストレージ領域が、ソースデータベースの使用済みストレージ領域を超えることを確認してください。
注意事項
RDS for MySQL インスタンスから同期するテーブルには、プライマリキーが設定されている必要があります。
DTS がフルデータ同期を実行すると、ソースおよび宛先データベースの読み取り・書き込みリソースを消費し、ワークロードが増加します。両方のデータベースの CPU 使用率が 30 % 未満など、オフピーク時間帯にデータ同期を実行することを推奨します。
データ同期中に、gh-ost や pt-online-schema-change などのツールを使用してソースデータベースの同期対象オブジェクトに対してオンライン DDL 操作を実行しないでください。そうした場合、同期タスクが失敗します。
使用制限により、DuckDB ベースの分析プライマリインスタンス クラスターのノードのディスク領域使用率が 80 % を超えると、クラスターはロックされます。同期対象オブジェクトに必要な領域を事前に見積もり、宛先クラスターに十分なストレージ領域があることを確認してください。
データ同期はプレフィックスインデックスをサポートしていません。ソースデータベースでプレフィックスインデックスを使用している場合、タスクが失敗する可能性があります。
DTS タスクの実行中に宛先の DuckDB ベースの分析プライマリインスタンス のバックアップが実行されると、タスクは失敗します。
DuckDB ベースの分析プライマリインスタンス は、データ同期のソースデータベースとして使用できません。
DML文にLIMIT句、UUID()などの非決定性関数、またはXAトランザクションが含まれる場合、その操作はレプリケーションにおいてUnsafe(安全でない)と見なされます。これにより、ソースインスタンスと宛先インスタンス間でデータの不整合が発生する可能性があります。DuckDB ベースの分析プライマリインスタンスへのデータ同期時には、このような文の使用を避けてください。
課金
同期タイプ | 料金 |
スキーマ同期およびフルデータ同期 | 無料です。 |
増分同期 | 課金対象です。詳細については、「課金概要」をご参照ください。 |
サポートされるソースインスタンスタイプ
データ同期でサポートされるソース MySQL データベースインスタンスタイプは以下のとおりです。
RDS for MySQL
ECS インスタンス上の自己管理データベース
オンプレミスの自己管理データベース
本ドキュメントでは、設定手順の例として RDS for MySQL インスタンスを使用します。自己管理 MySQL データベースの場合も手順は同様です。
ソースデータベースが自己管理 MySQL データベースの場合、追加の準備が必要です。詳細については、「準備の概要」をご参照ください。
サポートされる SQL 操作
DDL 操作:CREATE TABLE、DROP TABLE、RENAME TABLE、TRUNCATE TABLE、ADD COLUMN、DROP COLUMN、MODIFY COLUMN
DML 操作:INSERT、UPDATE、DELETE
ORDER BY句およびLIMIT句は、UPDATE文またはDELETE文で指定できません。データ同期中にソーステーブルのフィールドタイプを変更すると、同期ジョブでエラーが発生し、中断されます。この問題は手動で解決できます。詳細については、「フィールドタイプ変更による同期失敗の修正」をご参照ください。
データベースアカウントの権限
データベース | 必要な権限 |
RDS for MySQL | 特権アカウントの使用を推奨します。標準アカウントを使用する場合は、すべての同期対象オブジェクトに対して REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW、SELECT 権限が必要です。 |
DuckDB ベースの分析プライマリインスタンス | 特権アカウントの使用を推奨します。標準アカウントを使用する場合は、READ および WRITE 権限が必要です。 |
操作手順
DTS コンソール にログインします。左側のナビゲーションウィンドウで [データ同期] を選択します。上部のナビゲーションバーで、ご利用のインスタンスが配置されているリージョンを選択します。
[データ同期タスク] ページで、[タスクの作成] をクリックします。
ページで、ソースデータベースと宛先データベースを設定します。
ソースインスタンス
パラメーター
説明
データベースタイプ
アクセスモード
クラウドインスタンス
インスタンスリージョン
ソースインスタンスのリージョンです。データ同期タスクの購入時に選択され、後から変更できません。
クロスアカウント同期
いいえ
インスタンス ID
ソース RDS インスタンスの ID を選択します。
データベースアカウント
ソース RDS インスタンスのデータベースアカウントです。必要な権限の詳細については、「データベースアカウントの権限」をご参照ください。
データベースパスワード
データベースアカウントのパスワードです。
接続方法
ビジネス要件に基づき、[暗号化なし接続] または [SSL 暗号化接続] を選択します。[SSL 暗号化接続] を選択する場合は、事前に RDS インスタンスで SSL 暗号化を有効にしておく必要があります。詳細については、「クラウドネイティブ証明書を使用した SSL 暗号化の有効化」をご参照ください。
重要現在、[暗号化] は中国本土および中国 (香港) リージョンでのみ設定可能です。
宛先インスタンス
パラメーター
説明
データベースタイプ
アクセスモード
クラウドインスタンス
インスタンスリージョン
データ同期インスタンスの購入時に選択した宛先インスタンスのリージョンです。このパラメーターは変更できません。
クロスアカウント同期
いいえ
説明DTS はクロスリージョンデータ同期をサポートしています。本ドキュメントでは、同一リージョンおよび VPC 内のインスタンス間でのデータ同期を例として説明します。データ同期シナリオの詳細については、「データ同期シナリオの概要」をご参照ください。
RDS インスタンス ID
宛先 DuckDB インスタンスの ID です。
データベースアカウント
DuckDB ベースの分析プライマリインスタンス のデータベースアカウントです。必要な権限の詳細については、「データベースアカウントの権限」をご参照ください。
データベースパスワード
データベースアカウントのパスワードです。
接続方法
ビジネス要件に基づき、[暗号化なし接続] または [SSL 暗号化接続] を選択します。[SSL 暗号化接続] を選択する場合は、事前に RDS インスタンスで SSL 暗号化を有効にしておく必要があります。詳細については、「クラウドネイティブ証明書を使用した SSL 暗号化の有効化」をご参照ください。
重要現在、[暗号化] は中国本土および中国 (香港) リージョンでのみ設定可能です。
[接続テストと次へ] をクリックします。
[DTS サーバーアクセス認可] ダイアログボックスで、[接続テスト] をクリックします。
同期オブジェクトおよび詳細設定を構成します。
[同期オブジェクトの設定] ページで、同期するオブジェクトを構成します。
パラメーター
説明
[同期タイプ]
フルデータ同期のみを実行する場合は、[スキーマ同期] および [フルデータ同期] の両方にチェックを入れます。
サービス中断せずにデータ同期を実行する場合は、[スキーマ同期]、[フルデータ同期]、および[増分データ同期] を選択します。
説明[スキーマ同期] を選択しない場合は、宛先データベースにデータを同期するデータベースおよびテーブルがすでに存在することを確認してください。その後、ビジネス要件に基づき、[選択済みオブジェクト] ボックス内のテーブルおよびカラムマッピング機能を使用します。
データ整合性を確保するため、[増分データ同期] を選択していない場合は、同期中にソースインスタンスに新しいデータを書き込まないでください。
移行の起動方法
ビジネス要件に基づき、トリガーを移行する方法を選択します。移行対象オブジェクトにトリガーが含まれない場合は、このパラメーターを設定する必要はありません。詳細については、「トリガーの同期または移行方法の設定」をご参照ください。
説明[スキーマ同期] を [同期タイプ] に選択した場合にのみ、このパラメーターを設定できます。
[マイグレーション評価の有効化]
この機能は、インデックス長、ストアドプロシージャ、依存テーブルなどのソースおよび宛先データベースのスキーマが要件を満たしているかどうかを評価します。ビジネス要件に基づき、[はい] または [いいえ] を選択できます。
説明[スキーマ同期] を [同期タイプ] に選択した場合にのみ、このパラメーターを設定できます。
[はい] を選択すると、事前チェックに時間がかかる場合があります。事前チェック中に [評価結果] を確認できます。評価結果は事前チェックの結果に影響しません。
[同期トポロジー]
[一方向同期] を選択します。
[既存テーブルの処理モード]
[事前チェックおよびエラー報告]:宛先データベースに同じ名前のテーブルが存在するかどうかをチェックします。同じ名前のテーブルが存在しない場合、チェック項目は合格します。同じ名前のテーブルが存在する場合、事前チェック中にエラーが報告され、データ同期タスクは開始されません。
説明宛先データベースで同じ名前のテーブルを削除または名前変更できない場合は、宛先データベース内のテーブル名を変更できます。詳細については、「テーブルおよびカラム名のマッピング」をご参照ください。
[無視して続行]:宛先データベース内の同じ名前のテーブルのチェックをスキップします。
警告[無視して続行] を選択すると、データの不整合が発生し、ビジネスにリスクをもたらす可能性があります。例えば、以下のようなケースがあります。
テーブルスキーマが一致しており、宛先データベースのレコードのプライマリキー値がソースデータベースのレコードと同じである場合。
フルデータ同期中、DTS は宛先クラスター内のレコードを保持します。ソースデータベースのレコードは宛先データベースに同期されません。
増分同期中、DTS は宛先クラスター内のレコードを保持しません。ソースデータベースのレコードが宛先データベースのレコードを上書きします。
テーブルスキーマが不一致である場合。この場合、一部のカラムのデータのみが同期されるか、同期が失敗する可能性があります。慎重に進めてください。
イベント移行
ソースデータベースからイベントを移行するかどうかを選択します。[はい] を選択する場合は、関連要件に従って後続の操作を実行する必要があります。詳細については、「イベントの同期または移行」をご参照ください。
[オブジェクト名の大文字小文字の区別]
宛先インスタンス内の同期データベース、テーブル、カラムの名前について、大文字小文字を区別するポリシーを設定できます。デフォルトでは、[DTS デフォルトポリシー] が選択されています。ソースまたは宛先データベースと一致するポリシーを選択することもできます。詳細については、「宛先データベースのオブジェクト名の大文字小文字の区別ポリシー」をご参照ください。
[ソースオブジェクト]
[ソースオブジェクト] ボックスで、同期するオブジェクトを選択し、
をクリックして [選択済みオブジェクト] ボックスに移動させます。説明データベース、テーブル、カラムレベルでオブジェクトを選択できます。テーブルまたはカラムのみを選択した場合、ビュー、トリガー、ストアドプロシージャなどの他のオブジェクトタイプは宛先データベースに同期されません。
[選択済みオブジェクト]
宛先インスタンス内で同期オブジェクトの名前を変更するには、[選択済みオブジェクト] ボックス内のオブジェクトを右クリックします。詳細については、「テーブルおよびカラム名のマッピング」をご参照ください。
複数の同期オブジェクトの名前を一括で変更するには、[選択済みオブジェクト] ボックスの右上隅にある [一括編集] をクリックします。詳細については、「テーブルおよびカラム名のマッピング」をご参照ください。
説明データベースまたはテーブルレベルで同期する SQL 操作を選択するには、[選択済みオブジェクト] ボックス内の同期オブジェクトを右クリックし、表示されるダイアログボックスで SQL 操作を選択します。
WHERE 句を使用してデータをフィルターするには、[選択済みオブジェクト] ボックス内のテーブルを右クリックし、表示されるダイアログボックスでフィルター条件を指定します。詳細については、「WHERE 句を使用したデータのフィルター」をご参照ください。
[次へ:詳細設定] をクリックして、詳細パラメーターを設定します。
本例では、デフォルト設定を使用します。ビジネス要件に基づいてパラメーターを設定することもできます。
[次へ:データ検証の設定] をクリックします。
データ検証機能を使用する場合は、ビジネス要件に基づいてデータ検証方法を選択します。他のパラメーターはデフォルト設定のままにするか、必要に応じて設定できます。詳細については、「データ検証タスクの設定」をご参照ください。
説明スキーマ検証を選択すると、スキーマが同期された後でも検証プロセスでデータの不整合エラーが報告される場合があります。これは過去の互換性の問題によるものです。このアラートは実質的な警告ではなく、実際の同期結果には影響しません。誤検知を防ぐため、データ検証中にスキーマ検証を有効にしないことを推奨します。
[次へ:タスクの保存と事前チェック] をクリックします。
[事前チェック合格率] が 100 % に達したら、[次へ:購入] をクリックします。
説明同期タスクを開始する前に、事前チェックが実行されます。事前チェックに合格した後でのみ、タスクを開始できます。
事前チェックが失敗した場合は、失敗した確認項目の横にある
アイコンをクリックして詳細を確認します。原因に基づいて問題を修正し、再度事前チェックを実行します。
警告をトリガーした項目を修正する必要がない場合は、[承認] をクリックした後、[無視して事前チェックを再実行] をクリックして、これらの項目をスキップし、再度事前チェックを実行します。
[購入] ページで、データ同期インスタンスの [課金方法] および [リンク仕様] を選択します。
カテゴリ
パラメーター
説明
[基本情報]
課金方法
サブスクリプション:インスタンスを使用する前に支払いを行う必要があります。長期利用に適しており、従量課金よりもコスト効率が高くなります。サブスクリプション期間が長いほど、割引率が高くなります。
従量課金:1 時間単位で課金されます。短期利用に適しています。コストを削減するために、いつでもインスタンスをリリースできます。
リソースグループ
インスタンスが属するリソースグループです。デフォルト値は [デフォルトリソースグループ] です。詳細については、「Resource Management とは」をご参照ください。
リンク仕様
DTS は、異なるパフォーマンスレベルを提供するリンク仕様を提供しています。リンク仕様は同期速度に影響します。ビジネスシナリオに基づいて仕様を選択できます。詳細については、「データ同期リンクの仕様」をご参照ください。
サブスクリプション期間
サブスクリプション課金方法を使用する場合は、サブスクリプション期間および購入するインスタンス数を選択します。サブスクリプション期間は 1 ~ 9 ヶ月または 1、2、3、5 年です。
説明このパラメーターは、[課金方法] が [サブスクリプション] に設定されている場合にのみ利用可能です。
[Data Transmission Service (従量課金) 利用規約] を読み、同意し、[購入して開始] をクリックした後、[確認] ダイアログボックスで [OK] をクリックします。
購入が完了すると、[データ同期タスク] ページにリダイレクトされます。新規タスクの ID をクリックして詳細ページに移動し、左側のナビゲーションウィンドウで [タスク管理] をクリックして、同期の進捗状況を確認します。
フィールドタイプ変更による同期失敗の修正
データ同期中にソーステーブルのフィールドタイプが変更されると、タスクは失敗します。以下の手順に従って、手動で問題を解決してください。
宛先インスタンスで、失敗したテーブル A (例:
customer) を基に新しいテーブル B (例:customer_new) を作成し、必要に応じてテーブル B のフィールドタイプを調整します。INSERT INTO SELECTコマンドを実行して、テーブル A のデータをテーブル B にコピーします。両方のテーブルのデータが一致していることを確認してください。元の失敗したテーブルを名前変更または削除し、新しいテーブルを元のテーブル名 (例:
customer) に名前変更します。DTS コンソールで、データ同期タスクを再起動します。