Tablestoreは、Alibaba Cloudによって開発されたマルチモデルのデータストレージサービスです。 Tablestoreは、複数のモデルを使用して大量の構造化データを保存でき、高速なデータクエリと分析をサポートします。 このトピックでは、data Transmission Service (DTS) を使用して、ApsaraDB RDS for MySQLインスタンスからTablestoreインスタンスにデータを同期する方法について説明します。 この手順に従って、自己管理型MySQLデータベースからTablestoreインスタンスにデータを同期することもできます。 データ同期機能を使用すると、データの転送と分析が簡単になります。
前提条件
Tablestoreインスタンスが作成されました。 詳細は、「インスタンスの作成」をご参照ください。
注意事項
最初の完全データ同期中、DTSはソースデータベースとターゲットデータベースの読み取りおよび書き込みリソースを消費します。 これは、データベースサーバの負荷を増加させる可能性がある。 データを同期する前に、ソースデータベースとターゲットデータベースのパフォーマンスに対するデータ同期の影響を評価します。 オフピーク時にデータを同期することを推奨します。
DTSはデータ定義言語 (DDL) 操作を同期しません。 データ同期中にソースデータベースのテーブルに対してDDL操作を実行する場合は、選択したオブジェクトからテーブルを削除し、Tablestoreインスタンスからテーブルを削除してから、選択したオブジェクトにテーブルを再度追加する手順を実行する必要があります。 詳細については、「データ同期タスクからのオブジェクトの削除」および「データ同期タスクへのオブジェクトの追加」をご参照ください。
最大64個のテーブルをTablestoreインスタンスに同期できます。 64を超えるテーブルをTablestoreインスタンスに同期する場合は、ターゲットTablestoreインスタンスの制限を無効にできます。
同期するテーブルと列の名前は、Tablestoreインスタンスの命名規則に準拠している必要があります。
テーブルまたはインデックスの名前には、英数字、およびアンダースコア (_) を使用できます。 名前は英字またはアンダースコア (_) で始める必要があります。
テーブルまたはインデックスの名前は、1 ~ 255文字である必要があります。
課金
同期タイプ | タスク設定料金 |
スキーマ同期と完全データ同期 | 無料です。 |
増分データ同期 | 有料。 詳細については、「課金の概要」をご参照ください。 |
初期同期タイプ
初期同期タイプ | 説明 |
初期スキーマ同期 | DTSは、ソースデータベースからターゲットデータベースにテーブルのスキーマを同期します。 警告 MySQLとTablestoreは異種データベースです。 DTSは、初期スキーマ同期後にソースデータベースとターゲットデータベースのスキーマが一貫していることを保証しません。 データ型変換がビジネスに与える影響を評価することを推奨します。 詳細については、「スキーマ同期のためのデータ型マッピング」をご参照ください。 |
完全データの初期同期 | DTSは、ソースデータベースのテーブルの履歴データをターゲットデータベースに同期します。 履歴データは、後続の増分データ同期の基礎となります。 |
初期増分データ同期 | DTSは、増分データをソースデータベースからターゲットデータベースにリアルタイムで同期します。 初期の増分データ同期中に、INSERT、UPDATE、およびDELETEのSQL操作を同期できます。 警告 ソースデータベースでDDLステートメントを実行しないことを推奨します。 そうしないと、データ同期が失敗する可能性があります。 |
始める前に
ターゲットデータベースを設定するときは、AccessKeyペアを指定する必要があります。 Alibaba CloudアカウントのAccessKeyペアを保護するために、RAMユーザーに権限を付与し、RAMユーザーのAccessKeyペアを作成することを推奨します。
RAMユーザーを作成し、TablestoreでAliyunOTSFullAccess権限をRAMユーザーに付与します。
RAMコンソールにログインします。
左側のナビゲーションウィンドウで、[ID] > [ユーザー] を選択します。
[ユーザー] ページでRAMユーザーを見つけ、[操作] 列の [権限の追加] をクリックします。
表示されるダイアログボックスで、検索ボックスにAliyunOTSFullAccessと入力し、ポリシー名をクリックして、選択したセクションにポリシーを追加します。
[OK] をクリックします。
[完了] をクリックします。
RAMユーザーのAccessKeyペアを作成します。 詳細については、「AccessKeyペアの作成」をご参照ください。
オプション: データ同期タスクをRAMユーザーとして設定する必要がある場合は、AliyunDTSDefaultRole権限をRAMユーザーに付与する必要があります。 詳細については、「DTSによるAlibaba Cloudリソースへのアクセス許可」をご参照ください。
説明Alibaba Cloudアカウントを使用してデータ同期タスクを設定する場合は、この手順をスキップしてください。
手順
データ同期インスタンスを購入します。 詳細については、「DTS インスタンスの購入」をご参照ください。
説明購入ページで、ソースインスタンスをMySQLに設定し、宛先インスタンスをTablestoreに設定し、同期トポロジを一方向同期に設定します。
にログインします。 Data Transmission Service (DTS) コンソール。
左側のナビゲーションウィンドウで、データ同期.
の上部にデータ同期タスクページで、ターゲットインスタンスが存在するリージョンを選択します。
データ同期タスクを見つけて、タスクの設定[アクション] 列に表示されます。
ソースデータベースとターゲットデータベースを設定します。
セクション
パラメーター
説明
N/A
同期タスク名
DTSが自動的に生成するタスク名。 タスクを簡単に識別できるように、わかりやすい名前を指定することをお勧めします。 一意のタスク名を使用する必要はありません。
ソースインスタンスの詳細
インスタンスタイプ
[RDSインスタンス] を選択します。
インスタンスリージョン
購入ページで選択したソースリージョン。 このパラメーターの値は変更できません。
インスタンス ID
ソースApsaraDB RDS for MySQLインスタンスのID。
データベースアカウント
ソースApsaraDB RDSインスタンスのデータベースアカウント。 アカウントには、同期するオブジェクトに対するSELECT権限と、REPLICATION CLIENT、REPLICATION SLAVE権限、およびSHOW VIEW権限が必要です。
説明ソースApsaraDB RDSインスタンスのデータベースエンジンがMySQL 5.5またはMySQL 5.6の場合、データベースアカウントまたはデータベースパスワードパラメーターを設定する必要はありません。
データベースパスワード
データベースアカウントのパスワードを設定します。
暗号化
[暗号化なし] または[SSL 暗号化] を選択します。 SSL暗号化を選択する場合、データ同期タスクを設定する前に、ApsaraDB RDSインスタンスのSSL暗号化を有効にする必要があります。 詳細については、次をご参照ください: クラウド証明書を使用してSSL暗号化を有効にします。
重要Encryptionパラメーターは、中国本土および中国 (香港) リージョン内でのみ使用できます。
ターゲットインスタンスの詳細
インスタンスタイプ
[Tablestore] を選択します。
インスタンスリージョン
購入ページで選択したターゲットリージョン。 このパラメーターの値は変更できません。
インスタンス ID
ターゲットTablestoreインスタンスのID。
AccessKeyId
AccessKey ID。 詳細については、「AccessKey の作成」をご参照ください。
AccessKeySecrect
AccessKeyシークレット。
ページの右下隅にあるをクリックします。ホワイトリストと次への設定.
、ソースまたはターゲットデータベースがAlibaba Cloudデータベースインスタンス (ApsaraDB RDS for MySQL、ApsaraDB for MongoDBインスタンスなど) の場合、DTSは自動的にDTSサーバーのCIDRブロックをインスタンスのIPアドレスホワイトリストに追加します。 ソースデータベースまたはターゲットデータベースがElastic Compute Service (ECS) インスタンスでホストされている自己管理データベースの場合、DTSサーバーのCIDRブロックがECSインスタンスのセキュリティグループルールに自動的に追加されます。ECSインスタンスがデータベースにアクセスできることを確認する必要があります。 自己管理データベースが複数のECSインスタンスでホストされている場合、DTSサーバーのCIDRブロックを各ECSインスタンスのセキュリティグループルールに手動で追加する必要があります。 ソースデータベースまたはターゲットデータベースが、データセンターにデプロイされているか、サードパーティのクラウドサービスプロバイダーによって提供される自己管理データベースである場合、DTSサーバーのCIDRブロックをデータベースのIPアドレスホワイトリストに手動で追加して、DTSがデータベースにアクセスできるようにする必要があります。 詳細については、「DTSサーバーのCIDRブロックをオンプレミスデータベースのセキュリティ設定に追加する」をご参照ください。
警告DTSサーバーのCIDRブロックがデータベースまたはインスタンスのホワイトリスト、またはECSセキュリティグループルールに自動的または手動で追加されると、セキュリティリスクが発生する可能性があります。 したがって、DTSを使用してデータを同期する前に、潜在的なリスクを理解して認識し、次の対策を含む予防策を講じる必要があります。VPNゲートウェイ、またはSmart Access Gateway。
同期ポリシーと同期するオブジェクトを設定します。
同期ポリシーを設定します。
パラメーター
説明
初期同期
[初期スキーマ同期] 、[初期フルデータ同期] 、および [初期増分データ同期] を選択します。 詳細については、「初期同期タイプ」をご参照ください。
競合テーブルの処理モード
事前チェックエラーとレポートエラー: ターゲットデータベースに、ソースデータベースのテーブルと同じ名前のテーブルが含まれているかどうかを確認します。 移行先データベースに、移行元データベースと同じ名前のテーブルが含まれていない場合は、事前チェックに合格します。 それ以外の場合、事前チェック中にエラーが返され、データ同期タスクを開始できません。
説明オブジェクト名マッピング機能を使用して、ターゲットデータベースに同期されるテーブルの名前を変更できます。 この機能は、ソースデータベースとターゲットデータベースに同じテーブル名が含まれていて、ターゲットデータベースのテーブルを削除または名前変更できない場合に使用できます。 詳細については、「同期するオブジェクトの名前変更」をご参照ください。
エラーを無視して続行: ソースデータベースとターゲットデータベースの同じテーブル名の事前チェックをスキップします。
警告[エラーを無視して続行] を選択すると、データの不整合が発生し、ビジネスが潜在的なリスクにさらされる可能性があります。
初期データ同期中、DTSはターゲットデータベースのデータレコードと同じ主キーを持つデータレコードを同期しません。 これは、ソースデータベースとターゲットデータベースが同じスキーマを持つ場合に発生します。 ただし、DTSは増分データ同期中にこれらのデータレコードを同期します。
ソースデータベースとターゲットデータベースのスキーマが異なる場合、初期データ移行が失敗する可能性があります。 この場合、特定の列のみが移行されるか、データ移行タスクが失敗します。
マージテーブル
はい: オンライントランザクション処理 (OLTP) シナリオでは、ビジネステーブルへの応答を高速化するためにシャーディングが実装されます。 同じスキーマを持つ複数のソーステーブルを1つのターゲットテーブルにマージできます。 この機能を使用すると、ソースデータベースの複数のテーブルのデータをTablestoreインスタンスの1つのテーブルに同期できます。
説明DTSは、
__dts_data_source
という名前の列をTablestoreインスタンスのターゲットテーブルに追加します。 この列は、データソースを記録するために使用されます。 この列のデータ型はVARCHARです。 DTSは、<データ同期インスタンスID >:< ソースデータベース名>.<ソーステーブル名>
の形式に基づいて列値を指定します。 このような列値により、DTSは各ソーステーブルを識別できます。 たとえば、dts ********:dtstestdata.customer1
は、ソーステーブルがcustomer1であることを示します。このパラメーターを [はい] に設定すると、タスクで選択されているすべてのソーステーブルがターゲットテーブルにマージされます。 特定のソーステーブルをマージする必要がない場合は、これらのテーブルに対して個別のデータ同期タスクを作成できます。
No: デフォルト値。
操作タイプ
ビジネス要件に基づいて同期する操作の種類。 すべての操作タイプがデフォルトで選択されています。
ダーティデータの処理ポリシー
データ書き込みエラーを処理するための処理ポリシー:
スキップ
ブロック
データ書き込みモード
[行の更新]: Tablestoreインスタンスの行を更新するには、PutRowChange操作を実行します。
行の上書き: UpdateRowChange操作を実行して、Tablestoreインスタンスの行を上書きします。
バッチ書き込み操作
Tablestoreインスタンスに複数行のデータを書き込むために使用される操作。
BulkImportRequest: データはオフラインで書き込まれます。
BatchWriteRowRequest: データはバッチで書き込まれます。
読み書きの効率を高め、Tablestoreインスタンスの使用コストを削減するために、BulkImportRequestを選択することを推奨します。
その他
└ キューサイズ
Tablestoreインスタンスにデータを書き込むためのキューの長さ。
スレッド数量
Tablestoreインスタンスにデータを書き込むためのコールバックスレッドの数。
Concurrency
Tablestoreインスタンスの同時スレッドの最大数。
└ バケット
増分および逐次書き込みの同時バケットの数。 同時書き込み機能を向上させるには、このパラメーターを比較的大きな値に設定します。
説明値は、同時スレッドの最大数以下である必要があります。
同期するオブジェクトを選択します。
設定
説明
同期するオブジェクトの選択
[使用可能] セクションから1つ以上のテーブルを選択し、アイコンをクリックして、[選択済み] セクションにテーブルを追加します。 最大64個のテーブルを選択できます。
デフォルトでは、オブジェクトがターゲットインスタンスに同期された後、オブジェクトの名前は変更されません。 オブジェクト名マッピング機能を使用して、ターゲットインスタンスに同期されるオブジェクトの名前を変更できます。 詳細については、「同期するオブジェクトの名前変更」をご参照ください。
警告手順8で [マージテーブル] を [はい] に設定し、複数のソーステーブルを選択した場合、オブジェクト名マッピング機能を使用して、Tablestoreインスタンスで同じテーブル名に名前を変更する必要があります。 DDL 操作を実行すると、データの不整合が発生する可能性があります。
[次へ] をクリックします。
オプション: [選択済み] セクションで、テーブルの上にポインターを移動し、[編集] をクリックします。 [テーブルの編集] ダイアログボックスで、Tablestoreインスタンスの各列のデータ型を設定します。
Tablestoreインスタンスに同期するテーブルの主キー列を設定します。
説明Tablestoreインスタンスの主キーの詳細については、「主キー」をご参照ください。
ページの右下隅にあるをクリックします。次へ: 事前チェックとスタートタスク.
説明データ同期タスクを開始する前に、DTSは事前チェックを実行します。 データ同期タスクは、タスクが事前チェックに合格した後にのみ開始できます。
タスクが事前チェックに合格しなかった場合は、失敗した各項目の横にあるアイコンをクリックして詳細を表示できます。 原因に基づいて問題をトラブルシューティングした後、再度事前チェックを実行します。
次のメッセージが表示されたら、[事前チェック] ダイアログボックスを閉じます。[事前チェックの合格] その後、データ同期タスクが開始されます。
最初の同期が完了し、データ同期タスクが同期状態になります。
[データ同期タスク] ページで、データ同期タスクのステータスを表示できます。