DuckDB ベースの分析用プライマリインスタンスは、カラムナストレージ、Just-In-Time (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トランザクションが含まれている場合、レプリケーションにとって安全でない操作と見なされます。これにより、データ不整合が発生する可能性があります。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
UPDATEまたはDELETE文でORDER BYまたはLIMITを指定することはできません。データ同期中にソーステーブルのフィールドタイプを変更すると、同期ジョブはエラーを報告して停止します。この問題は手動で修正できます。詳細については、「フィールドタイプの変更による同期失敗の修正」をご参照ください。
データベースアカウントの権限
データベース | 必要な権限 |
RDS MySQL | 特権アカウントの使用を推奨します。標準アカウントを使用する場合、すべての同期オブジェクトに対して REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW、SELECT 権限が必要です。 |
DuckDB ベースの分析用プライマリインスタンス | 特権アカウントの使用を推奨します。標準アカウントを使用する場合、READ および WRITE 権限が必要です。 |
操作手順
Data Transmission Service (DTS) コンソールにログインします。左側のナビゲーションウィンドウで、データ同期を選択します。上部のナビゲーションバーで、リージョンを選択します。
データ同期ページで、タスクの作成をクリックして同期タスクを作成します。
ページで、同期タスクのソースデータベースとターゲットデータベースを設定します。
ソースインスタンス情報
設定
説明
データベースタイプ
接続タイプ
クラウドインスタンス
インスタンスリージョン
データ同期インスタンスを購入する際に選択したソースインスタンスのリージョンです。このパラメーターは変更できません。
クロスアカウント
クロスアカウントアクセスなし
インスタンス ID
ソース RDS インスタンスの ID を選択します。
データベースアカウント
ソース RDS インスタンスのデータベースアカウントを入力します。必要な権限については、「データベースアカウントの権限」をご参照ください。
データベースパスワード
データベースアカウントに対応するパスワードを入力します。
接続方法
必要に応じて 非暗号化接続 または SSL 暗号化接続 を選択します。SSL 暗号化接続 を選択する場合は、事前に RDS インスタンスで Secure Sockets Layer (SSL) 暗号化を有効にする必要があります。詳細については、「クラウド証明書を使用して SSL 暗号化を迅速に有効にする」をご参照ください。
重要現在、接続方法を設定できるのは、中国本土および中国 (香港) リージョンのみです。
宛先インスタンス情報
設定
説明
データベースタイプ
接続タイプ
クラウドインスタンス
インスタンスリージョン
データ同期インスタンスを購入する際に選択した宛先インスタンスのリージョンです。このパラメーターは変更できません。
クロスアカウント
単一アカウント
説明DTS 同期タスクは、リージョン間のデータ同期と移行をサポートしています。このトピックでは、データ整合性を確保する方法を説明するために、同じリージョンと VPC 内のインスタンス間のデータ同期を例として使用します。データ同期の詳細については、「データ同期シナリオの概要」をご参照ください。
RDS インスタンス ID
DuckDB インスタンスのインスタンス ID です。
データベースアカウント
DuckDB ベースの分析用プライマリインスタンスのデータベースアカウントを入力します。必要な権限については、「データベースアカウントの権限」をご参照ください。
データベースパスワード
データベースアカウントに対応するパスワードを入力します。
接続方法
必要に応じて 非暗号化接続 または SSL 暗号化接続 を選択します。SSL 暗号化接続 を選択する場合は、事前に RDS インスタンスで SSL 暗号化を有効にする必要があります。詳細については、「クラウド証明書を使用して SSL 暗号化を迅速に有効にする」をご参照ください。
重要現在、接続方法を設定できるのは、中国本土および中国 (香港) リージョンのみです。
接続をテストして次に進むをクリックします。
DTS サーバーに DB へのアクセスを許可ダイアログボックスで、接続テストをクリックします。
タスクオブジェクトを設定します。
オブジェクト設定ページで、同期するオブジェクトを設定します。
設定
説明
同期タイプ
完全同期のみを実行する必要がある場合は、スキーマ同期と完全同期の両方を選択することを推奨します。
ダウンタイムなしで同期を実行するには、スキーマ同期、完全同期、および増分同期を選択することを推奨します。
説明スキーマ同期を選択しない場合は、ターゲットデータベースにデータを受け取るデータベースとテーブルが含まれていることを確認してください。その後、必要に応じて選択済みオブジェクトボックスのテーブル名と列名のマッピング機能を使用できます。
増分同期を選択しない場合は、データ整合性を確保するために、データ同期中にソースインスタンスに新しいデータを書き込まないでください。
ソースデータベースのトリガー移行方法
必要に応じてトリガーを移行する方法を選択します。移行するオブジェクトにトリガーが含まれていない場合は、このパラメーターを設定する必要はありません。詳細については、「トリガーを同期または移行する方法の設定」をご参照ください。
説明このパラメーターは、同期タイプでスキーマ同期を選択した場合にのみ設定できます。
移行評価を有効にする
この機能は、インデックス長、ストアドプロシージャ、依存テーブルなど、ソースデータベースとターゲットデータベースのスキーマが要件を満たしているかどうかを評価します。必要に応じてはいまたはいいえを選択できます。
説明このパラメーターは、同期タイプでスキーマ同期を選択した場合にのみ設定できます。
はいを選択した場合、事前チェックに時間がかかることがあります。事前チェックフェーズ中に評価結果を表示できます。評価結果は事前チェックの結果には影響しません。
同期トポロジ
一方向同期を選択します。
宛先データベースに同名テーブルが存在する場合の処理モード
事前チェックしてエラーを報告:ターゲットデータベースに同名のテーブルが存在するかどうかをチェックします。同名のテーブルが存在しない場合、チェック項目は合格します。同名のテーブルが存在する場合、事前チェックフェーズでエラーが報告され、データ同期タスクは開始されません。
説明ターゲットデータベースの同名テーブルを削除または名前変更できない場合は、ターゲットデータベースのテーブル名を変更できます。詳細については、「テーブル名と列名のマッピング」をご参照ください。
無視して続行:ターゲットデータベースの同名テーブルのチェックをスキップします。
警告無視して続行を選択すると、データ不整合が発生し、ビジネスにリスクをもたらす可能性があります。例:
テーブルスキーマが一致し、ターゲットデータベースのレコードがソースデータベースのレコードと同じプライマリキー値を持つ場合:
完全同期中、DTS はターゲットクラスターのレコードを保持します。ソースデータベースのレコードはターゲットデータベースに移行されません。
増分同期中、DTS はターゲットクラスターのレコードを保持しません。ソースデータベースのレコードがターゲットデータベースのレコードを上書きします。
テーブルスキーマが一致しない場合、一部の列のデータのみが同期されるか、同期が失敗する可能性があります。注意して進めてください。
イベントの移行
必要に応じてソースデータベースからイベントを移行するかどうかを選択します。はいを選択した場合は、関連する要件に従い、後続の操作も実行する必要があります。詳細については、「イベントの同期または移行」をご参照ください。
宛先オブジェクト名の大文字/小文字の区別
宛先インスタンスで同期されるデータベース、テーブル、列の名前の大文字/小文字の区別ポリシーを設定できます。デフォルトでは、DTS デフォルトポリシーが選択されています。ソースまたはターゲットデータベースとポリシーを一致させることも選択できます。詳細については、「宛先オブジェクト名の大文字/小文字の区別」をご参照ください。
ソースオブジェクト
ソースオブジェクトボックスで、同期するオブジェクトを選択し、
をクリックして選択済みオブジェクトボックスに移動します。説明データベース、テーブル、列レベルでオブジェクトを選択できます。テーブルまたは列を選択した場合、ビュー、トリガー、ストアドプロシージャなどの他のオブジェクトはターゲットデータベースに同期されません。
選択済みオブジェクト
宛先インスタンスで単一の同期オブジェクトの名前を変更するには、選択済みオブジェクトボックスでオブジェクトを右クリックします。名前の設定方法については、「テーブル名と列名のマッピング」をご参照ください。
宛先インスタンスで複数の同期オブジェクトの名前を一括で変更するには、選択済みオブジェクトボックスの右上隅にある一括編集をクリックします。名前の設定方法については、「テーブル名と列名のマッピング」をご参照ください。
説明データベースまたはテーブルレベルで同期する SQL 操作を選択するには、選択済みオブジェクトボックスでオブジェクトを右クリックし、表示されるダイアログボックスで目的の SQL 操作を選択します。
データをフィルタリングするための WHERE 句を設定するには、選択済みオブジェクトボックスでテーブルを右クリックし、表示されるダイアログボックスでフィルター条件を設定します。フィルター条件の設定方法については、「フィルター条件の設定」をご参照ください。
次へ:詳細設定をクリックして、詳細パラメーターを設定します。
この例では、デフォルト設定が使用されます。必要に応じてパラメーターを設定することもできます。
次へ:データ検証をクリックして、データ検証タスクを設定します。
データ検証機能を使用するには、必要に応じてデータ検証方法を選択します。他のパラメーターはデフォルト設定のままにするか、必要に応じて設定できます。パラメーターの設定方法については、「データ検証の設定」をご参照ください。
説明スキーマ検証を選択した場合、スキーマが同期されていても、検証プロセスで「データ不整合」エラーが報告されることがあります。これは、過去の互換性の問題によるものです。このアラートは重大な問題を示すものではなく、実際の同期結果には影響しません。誤検知を避けるために、スキーマ検証を有効にしないことを推奨します。
次へ:タスクを保存して事前チェックをクリックして、同期タスクの事前チェックを実行します。
事前チェックが 100% のスコアで合格した後、次へ:購入をクリックします。
説明同期ジョブが開始される前に事前チェックが実行されます。ジョブは事前チェックに合格した後にのみ開始できます。
事前チェックが失敗した場合は、失敗したチェック項目の横にある
アイコンをクリックして詳細を表示します。原因に基づいて問題を修正し、再度事前チェックを実行できます。
アラート項目を修正する必要がない場合は、シールドを確認をクリックし、次にアラート項目を無視して事前チェックを再実行をクリックして、アラート項目をスキップして再度事前チェックを実行できます。
購入ページで、データ同期インスタンスの課金方法とリンク仕様を選択します。詳細については、次の表をご参照ください。
カテゴリ
パラメーター
説明
設定
課金方法
サブスクリプション:インスタンス作成時にお支払いいただきます。長期的なニーズに適しており、従量課金よりもコスト効率が高いです。サブスクリプション期間が長いほど、割引率が高くなります。
従量課金:時間単位で課金されます。短期的なニーズに適しています。使用後すぐにインスタンスをリリースしてコストを節約できます。
リソースグループ
インスタンスが属するリソースグループです。デフォルト値はデフォルトリソースグループです。詳細については、「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 にデータをコピーします。両方のテーブルのデータが一致していることを確認します。
失敗したテーブル A の名前を変更または削除し、テーブル B の名前を customer に変更します。
DTS コンソールで、データ同期ジョブを再開します。