操作シナリオ
クラウドデータベースのアカウント間インスタンスデータ同期とは、ソースデータベースとターゲットデータベースがどちらもTencent Cloudデータベースインスタンスに属しているが、異なるメインアカウントに属している場合の、これらのデータベースインスタンス間のデータ同期を指します。本章では、DTSデータ同期機能を使用して、他のアカウントのTencent Cloudデータベースインスタンスから現在のアカウントのクラウドデータベースインスタンスにデータを同期する方法について説明します。
サポート範囲
Tencent CloudデータベースインスタンスのMySQL/TDSQL MySQL/TDSQL-C MySQL/MariaDB/PostgreSQL間のアカウント間同期をサポートしています。詳細については、データ同期がサポートするデータベースの表情報のアカウント間同期列を参照してください。 前提条件
ターゲットデータベースインスタンスを作成しました。
注意事項
この操作では複数のアカウント情報設定が含まれます。以下に主要な設定ロジックを示しますので、ユーザーの理解と正しい設定に役立ててください。
データ同期方向:ソースデータベース(他のアカウントのデータベースインスタンス)> ターゲットデータベース(現在のアカウントのデータベースインスタンス)。
同期タスクを実行するアカウントは、ターゲットデータベースのメインアカウントでも、ターゲットデータベースのサブアカウントでもかまいません。
メインアカウントを使用して同期タスクを実行します。タスクを操作する前に、ソースデータが属するメインアカウントの所有者にロールの承認(ターゲットデータベースのメインアカウントに対して)を依頼し、ターゲットデータベースのメインアカウントがソースデータベースにアクセスできるようにする必要があります。
サブアカウントを使用して同期タスクを実行します。タスクを操作する前に、ソースデータが属するメインアカウントの所有者にロールの承認(ターゲットデータベースのメインアカウントに対して)を依頼し、ターゲットデータベースのメインアカウントがソースデータベースにアクセスできるようにする必要があります。その後、ターゲットデータベースが属するメインアカウントの所有者にポリシーの承認(ターゲットデータベースのサブアカウントに対して)を依頼し、ターゲットデータベースのサブアカウントがソースデータベースにアクセスできるようにする必要があります。
メインアカウントを使用して同期タスクを実行する場合は、手順1 - 6を操作してください。サブアカウントを使用して同期タスクを実行する場合は、手順1 - 11を操作してください。
1. ソースデータベースが属するTencent Cloudのメインアカウントを使用してCAMコンソールにログインします(サブアカウントにCAMとロール関連の権限がある場合は、サブアカウントでログインすることもできます)。 2. 左側のナビゲーションでロールをクリックし、ロール管理ページに入り、ロールの新規作成をクリックします。
3. ロールキャリアを選択するページで、Tencent Cloudアカウント方式を選択します。
4. ロールキャリア情報の入力ページで、関連情報を設定し、次のステップをクリックします。
クラウドアカウントタイプ:他のメインアカウントを選択します。
アカウントID:ターゲットデータベースが属するTencent CloudのメインアカウントIDを入力します。メインアカウントIDはアカウント情報で確認できます。ターゲットデータベースインスタンスがサブアカウントの名義である場合も、ここにはメインアカウントIDを入力します。 外部ID:状況に応じて、選択的に有効にできます。
説明
外部IDを使用した場合、ユーザー自身でそのIDを記録・保存してください。後続の設定で入力が必要です。
5. ロールポリシーの設定ページで、DTSポリシーとソースデータベースサービスに対応するポリシーを選択し、次のステップをクリックします。
DTSサービスポリシーで、QcloudDTSReadOnlyAccessを選択します。
ソースデータベースサービスに対応するポリシー。
ソースデータベースがTencentDB for MySQLの場合、QcloudCDBReadOnlyAccess(TencentDB for CDB関連リソースの読み取り専用アクセス権限)、QcloudCDBInnerReadOnlyAccess(CDBの読み取りリスト権限)を選択します。
ソースデータベースがTencentDB for MariaDBの場合、QcloudMariaDBReadOnlyAccess(TencentDB for MariaDB読み取り専用アクセス権限)を選択します。
ソースデータベースがTDSQL for MySQLの場合、QcloudTDSQLReadOnlyAccess(TDSQL for MySQL読み取り専用アクセス権限)を選択します。
ソースデータベースがTDSQL-C MySQLの場合、QcloudCynosDBReadOnlyAccess(TDSQL-C(CynosDB)読み取り専用アクセス権限)を選択します。
ソースデータベースがTencentDB for PostgreSQLの場合、QcloudPostgreSQLReadOnlyAccess(TencentDB for PostgreSQL読み取り専用アクセス権限)を選択します。
6. ロールタグを設定し、確認ページでロール名を設定して、完了をクリックすると、そのロールが作成されます。
説明
設定後にその名前を記録してください。後続で同期タスクを作成する際に入力が必要です。
説明
同期タスクを実行するアカウントがメインアカウントの場合、承認手順はここで終了します。サブアカウントの場合は、次のステップ7-11に進み、現在のメインアカウント所有者にサブアカウントへのポリシー承認を依頼する必要があります。
7. (オプション)ターゲットデータベースが属するTencent Cloudのメインアカウントを使用してCAMコンソールにログインし、左側のナビゲーションでポリシーをクリックし、右側でカスタムポリシーの新規作成をクリックし、ポリシー構文で作成を選択します。 8. (オプション)空白テンプレートを選択し、次へをクリックします。
9. (オプション)ポリシーを1つ作成します。ポリシーの名前と説明は必要に応じて入力できます。ポリシーの内容はサンプルコードをコピーした後、赤枠内の内容を対応する情報に置き換えます。
ポリシー構文の例:
{
"version": "2.0",
"statement": [
{
"effect": "allow",
"action": ["name/sts:AssumeRole"],
"resource": ["qcs::cam::uin/10*******8:roleName/DTS-role"]
}
]
}
10. (オプション)完了をクリックしてポリシーリストページに戻り、リストページでユーザー/グループの関連付けをクリックします。
11. (オプション)ターゲットデータベースインスタンスが属するサブアカウント(つまり同期タスクを実行するサブアカウント)を選択し、確定をクリックします。下図の通りです。
同期タスクの作成
1. ターゲットデータベースインスタンスが属するTencent Cloudアカウントを使用して、DTSコンソールにログインします。 2. データ同期 > 新しい同期タスクの作成を選択し、新しい同期タスクを購入します。
3. 購入完了後、データ同期リストに戻り、操作列の設定をクリックして、同期タスクの設定ページに進みます。
4. ソースとターゲットデータの設定ページで、ソースデータベースとターゲットデータベースの情報を設定します。以下では、MySQLからMySQLへの同期を例に説明します。
クロスアカウントの主要パラメータの設定は以下の通りです:
アクセスタイプ:クラウドデータベースを選択します。これは、ソースデータベースがTencent Cloudデータベースインスタンスに属していることを示します。
クロスアカウントかどうか:クロスアカウントを選択します。
Tencent CloudアカウントID:ソースデータベースが属するメインアカウントIDを入力します。
ロール外部ID:前述の認証アカウント手順4で外部IDを設定した場合、ここでは設定した内容に従って正しく入力する必要があります。そうしないと権限エラーが発生します。設定していない場合は入力不要です。 説明
上記の設定を完了した後、対応する所属地域を選択すると、クロスアカウントのインスタンスリストを取得できます。インスタンスの取得でエラーが発生した場合、設定ミスまたは未認可の可能性があります。よくあるご質問を参照して対処してください。 5. 同期オプションと同期オブジェクトの設定ページで、データ初期化オプション、データ同期オプション、同期オブジェクトオプションを設定します。設定が完了したら、保存して次へをクリックします。
6. 検証タスクページで、検証を完了し、すべての検証項目が合格した後、タスクを開始をクリックします。
検証タスクが合格しない場合は、検証不合格の対処方法を参照して問題を修正した後、検証タスクを再実行します。 7. データ同期タスクリストに戻り、タスクは実行中状態に入ります。
説明
操作列の詳細 > 終了を選択すると、同期タスクを終了できます。データ同期が完了したことを確認してからタスクを終了してください。
1. クロスアカウントでインスタンスリストを取得する際のエラー:role not exist[InternalError.GetRoleError]
Tencent CloudアカウントID(ソースデータベースのメインアカウントIDである必要があります)とクロスアカウント認証ロール名(認証アカウント手順6で作成したロール名である必要があります)の設定が正しいかどうかを確認してください。それでも取得できない場合は、ソースデータベースのサービス権限が認可されていない可能性があります(認証アカウントの手順5を参照)。 2. クラウドデータベースインスタンスリストの取得に失敗:InternalError:InternalInnerCommonError
ロールにソースデータベースが属するTencent Cloudサービスポリシーが承認されていません。アカウント承認の手順5を参照して承認してください。
エラー原因:現在同期タスクの作成に使用しているアカウントはサブアカウントであり、そのサブアカウントにはsts:AssumeRole権限がありません。
解決方法:
メインアカウントを使用して同期タスクを作成します。
ターゲットデータベースが属するメインアカウントの所有者に、認証アカウントを参照してサブアカウントに権限を付与するよう依頼し、ポリシー構文のresourceには、エラーボックス内の青いフィールド部分を入力します。 4. DTSタスク設定にロールの外部IDが未入力、または入力内容が誤っているため、権限エラーやデータベースインスタンスの取得に失敗します。
エラー原因:認証アカウントで外部IDを設定しましたが、DTSタスク設定で外部IDを入力していないか、入力が間違っているため、権限エラーまたはデータベースインスタンスの取得に失敗します。 解決策:認証アカウントで外部IDを設定した場合、DTSタスク設定時に正しく入力する必要があります。設定していない場合は入力不要です。