事業再編やアカウント統合などの理由により、Alibaba Cloud アカウント間で Redis データを移行またはマージする必要がある場合、Data Transmission Service (DTS) を使用して、異なる Alibaba Cloud アカウントが所有する 2 つの Tair (Redis OSS 互換) インスタンス間で一方向データ同期を設定できます。
概要
この設定では、以下の順序で 2 つのアカウントが連携します:
| ステップ | アカウント | 操作 |
|---|---|---|
| 1. クロスアカウントアクセスの許可 | アカウント A(ソース所有者) | RAM ロールを作成し、アカウント B を信頼済みアカウントとして設定して、DTS がアカウント A のリソースを読み取れるように権限付与します。 |
| 2. 同期タスクの構成 | アカウント B(宛先所有者) | DTS コンソールにログインし、ステップ 1 で作成した RAM ロールを参照してデータ同期タスクを作成します。 |
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
すでに作成済みの宛先 Tair (Redis OSS 互換) インスタンス
宛先インスタンスに十分なストレージ容量 — 利用可能な空き容量は、ソースインスタンスの全データサイズを超える必要があります
互換性のあるインスタンスバージョン — 古いバージョンから新しいバージョンへの同期、または同一バージョン間での同期のみサポートされます
サポートされているインスタンスのバージョンについては、「データ同期ソリューションの概要」をご参照ください。
課金
| 同期タイプ | 料金 |
|---|---|
| スキーマ同期および完全データ同期 | 無料 |
| 増分データ同期 | 課金済み。詳細については、「課金概要」をご参照ください。 |
制限事項
開始前
タスクの構成を開始する前に、以下の制約事項を確認してください。
バージョン互換性:古いバージョンから新しいバージョンへのみ同期可能です。新しいバージョンから古いバージョンへの同期は、互換性の問題を引き起こす可能性があります。
クラスタ構成のソース — シングルキー命令のみ:ソースがクラスタアーキテクチャを使用している場合、同期中はシングルキー命令のみ実行してください。異なるスロットに属するキーを対象とする命令は、
CROSSSLOT Keys in request don't hash to the same slotエラーを発生させ、同期リンクを切断します。永続メモリを使用する Tair Enterprise Edition:ソースインスタンスが永続メモリを記憶媒体として使用する Tair Enterprise Edition インスタンスである場合、開始前に
appendonlyパラメーターをyesに設定してください。「操作手順」をご参照ください。トランスポート層セキュリティ (TLS):ソースまたは宛先インスタンスで TLS が有効になっている場合、DTS で SSL 暗号化 接続を使用してください。TLSv1.3 はサポートされていません。TLS が有効な Tair インスタンスは、DTS で Alibaba Cloud インスタンス タイプとして接続できません。
透過的データ暗号化 (TDE):いずれかのインスタンスで TDE が有効になっている場合、DTS を使用した同期はできません。
レプリケーションバックログサイズ:安定した同期リンクを確保するため、
repl-backlog-sizeパラメーターの値をredis.confファイル内で増加させてください。自己管理型 Redis ソース — レプリケーションタイムアウト:
config set repl-timeout 600を実行して、レプリケーションタイムアウトを 600 秒に設定してください。ソースに大量のデータが含まれる場合は、さらに値を増加させてください。
同期中
タスク実行中に以下の制約事項に注意してください。
宛先への他ソースからの書き込みは禁止です。 他ソースから宛先へデータを書き込むと、ソースと宛先の間でデータの不整合が発生します。
送信先メモリポリシー: デフォルトでは、Tair (Redis OSS 互換) インスタンスはデータのエビクションに
volatile-lruを使用します。送信先がメモリ不足状態になると、タスクを停止することなくデータが警告なしにエビクションされ、不整合が発生する可能性があります。警告なしのデータ損失を防ぐには、送信先でmaxmemory-policyをnoevictionに設定します。メモリが不足した場合、データのエビクションではなくタスクが失敗します。詳細については、「デフォルトの立ち退きポリシーとは何ですか?」をご参照ください。宛先クラスターのメモリ不足 (OOM):宛先クラスターのシャードがメモリ制限に達した場合、または宛先のストレージ容量が不足している場合、OOM により同期タスクが失敗します。
有効期限切れのキー:ソースで有効期限が切れたキーは、宛先で即座に削除されない場合があります。宛先のキー数はソースのキー数より少なくなることがあります。キー数を確認するには、
infoコマンドを実行してください。DTS ハートビートキー:DTS は、更新タイムスタンプを追跡するために、ソースデータベースに
DTS_REDIS_TIMESTAMP_HEARTBEATで始まるキーを挿入します。ソースデータベースがクラスタアーキテクチャを使用している場合、DTS はこのキーを各シャードに挿入します。このキーは同期時にフィルター処理され、タスク終了時に有効期限が切れます。遅延レポート:ソースが読み取り専用インスタンスである場合、または DTS アカウントに SETEX 権限がない場合、報告される遅延が不正確になる可能性があります。
エンドポイントの変更:同期中にソースまたは宛先のエンドポイントが変更された場合(例:インスタンス移行またはフェールオーバーによる変更)、タスクが再試行されたり、遅延が発生したり、失敗したり、データの不整合が発生したりする可能性があります。タスクのステータスを速やかに確認し、必要に応じて再構成してください。
ソースのスケーリング:同期中にソースのスケーリング(シャードの追加または削除)またはメモリの拡張が行われた場合、タスクを再構成してください。整合性を維持するため、再構成前に宛先のデータをクリアしてください。
宛先のプライマリ/レプリカフェールオーバー:宛先でフェールオーバーが発生した場合、データがメモリにのみ書き込まれ、レプリカに永続化されないため、データ損失が発生する可能性があります。
完全再同期のトリガー:以下のイベントにより、すべてのデータが宛先に再同期され、一時的なデータ不整合が発生する可能性があります。
一時的な切断により、タスクがブレークポイントから再開できなくなった場合
ソースまたは宛先インスタンスでプライマリ/レプリカフェールオーバーが発生した場合
ソースまたは宛先インスタンスのエンドポイントが変更された場合
DTS インスタンスの同期オブジェクトが変更されました
DTS インスタンスの障害回復: インスタンスに障害が発生した場合、DTS ヘルプデスクは 8 時間以内にインスタンスの回復を試みます。回復には、DTS インスタンスの再起動またはそのパラメーターの調整が含まれる場合があります (データベースパラメーターは変更されません)。変更される可能性のあるパラメーターについては、「インスタンスパラメーターの変更」をご参照ください。
完全同期および増分同期の再起動:完全同期および増分同期の両方を実行する DTS インスタンスが再起動された場合、両方のタスクが最初から再開されます。
増分同期でサポートされるコマンド
Tair (Redis OSS 互換) Open-Source Edition
APPEND、BITOP、BLPOP、BRPOP、BRPOPLPUSH、DECR、DECRBY、DEL、EVAL、EVALSHA、EXEC、EXPIRE、EXPIREAT、GEOADD、GETSET、HDEL、HINCRBY、HINCRBYFLOAT、HMSET、HSET、HSETNX、INCR、INCRBY、INCRBYFLOAT、LINSERT、LPOP、LPUSH、LPUSHX、LREM、LSET、LTRIM、MOVE、MSET、MSETNX、MULTI、PERSIST、PEXPIRE、PEXPIREAT、PFADD、PFMERGE、PSETEX、RENAME、RENAMENX、RESTORE、RPOP、RPOPLPUSH、RPUSH、RPUSHX、SADD、SDIFFSTORE、SELECT、SET、SETBIT、SETEX、SETNX、SETRANGE、SINTERSTORE、SMOVE、SPOP、SREM、SUNIONSTORE、SWAPDB\*、UNLINK\*、XADD、XAUTOCLAIM、XCLAIM、XDEL、XGROUP CREATECONSUMER、XTRIM、ZADD、ZINCRBY、ZINTERSTORE、ZREM、ZREMRANGEBYLEX、ZUNIONSTORE、ZREMRANGEBYRANK、ZREMRANGEBYSCORE
\* SWAPDB および UNLINK は、ソースエンジンバージョンが Redis 4.0 の場合のみサポートされます。
Tair (Redis OSS 互換) Enterprise Edition
APPEND、BITOP、BLPOP、BRPOP、BRPOPLPUSH、DECR、DECRBY、DEL、EVAL、EVALSHA、EXEC、EXPIRE、EXPIREAT、GEOADD、GETSET、HDEL、HINCRBY、HINCRBYFLOAT、HMSET、HSET、HSETNX、INCR、INCRBY、INCRBYFLOAT、LINSERT、LPOP、LPUSH、LPUSHX、LREM、LSET、LTRIM、MOVE、MSET、MSETNX、MULTI、PERSIST、PEXPIRE、PEXPIREAT、PFADD、PFMERGE、PSETEX、RENAME、RENAMENX、RPOP、RPOPLPUSH、RPUSH、RPUSHX、SADD、SDIFFSTORE、SELECT、SET、SETBIT、SETEX、SETNX、SETRANGE、SINTERSTORE、SMOVE、SPOP、SREM、SUNIONSTORE、UNLINK、XADD、XAUTOCLAIM、XCLAIM、XDEL、XGROUP CREATECONSUMER、XTRIM、ZADD、ZINCRBY、ZINTERSTORE、ZREM、ZREMRANGEBYLEX、ZUNIONSTORE、ZREMRANGEBYRANK、ZREMRANGEBYSCORE
特殊な動作を示すコマンド
| コマンド | 動作 |
|---|---|
| PUBLISH | 同期できません。 |
| EVAL、EVALSHA | DTS は Lua スクリプトが宛先で実行されたかどうかを確認できません — 増分同期中、宛先は明示的な実行結果を返しません。 |
| SYNC、PSYNC(LIST 型) | DTS は同期前に宛先の既存 LIST データをクリアしません。宛先には重複レコードが存在する可能性があります。 |
ステップ 1:クロスアカウントアクセスの許可(アカウント A)
ソース Tair インスタンスを所有するアカウント(アカウント A)で、Alibaba Cloud 管理コンソール にログインします。RAM ロールを作成し、宛先インスタンスを所有するアカウント(アカウント B)を信頼済みアカウントとして設定して、RAM ロールがアカウント A のクラウドリソースにアクセスできるよう権限付与します。
この機能はクロスサイト通信をサポートしており、中国本土(中国サイト)アカウントと国際サイトアカウント間の通信を可能にします。
手順に従った操作手順については、「クロスアカウント DTS タスクの RAM 認可の設定」をご参照ください。
ステップ 2:同期タスクの構成(アカウント B)
宛先 Tair インスタンスを所有するアカウント(アカウント B)でログインし、以下の手順を完了してください。
データ同期ページに移動
DTS コンソール
DMS コンソール
実際の操作手順は、お使いの DMS コンソールのモードとレイアウトによって異なる場合があります。詳細については、「シンプルモード」および「DMS コンソールのレイアウトとスタイルをカスタマイズする」をご参照ください。
タスクの作成および構成
タスクの作成 をクリックします。
(任意)右上隅の 新規構成ページ をクリックします。
前のバージョンに戻る ボタンが既に表示されている場合は、このステップをスキップしてください。新規および以前の構成ページではパラメーターが異なる場合があります — 新しいバージョンをご利用ください。
ソースおよび宛先データベースを構成します。
警告ソースおよび宛先データベースを構成した後、次に進む前に画面上に表示される 使用制限 を必ずご確認ください。これをスキップすると、タスクの失敗またはデータの不整合が発生する可能性があります。
ソースデータベース
パラメーター 値 タスク名 DTS が自動的に生成します。識別しやすいように説明的な名前を指定してください。名前は一意である必要はありません。 既存の接続を選択 ソースインスタンスが既に DTS に登録されている場合は、ドロップダウンリストから選択してください — DTS が残りのフィールドを自動的に埋めます。そうでない場合は、以下のフィールドを構成してください。 データベースタイプ Tair/Redis を選択します。 アクセス方法 Alibaba Cloud インスタンス を選択します。 インスタンスリージョン ソース Tair インスタンスのリージョンを選択します。 Alibaba Cloud アカウント間でのデータ複製 はいアラート通知設定 Alibaba Cloud アカウント ソースインスタンスを所有する Alibaba Cloud アカウント(プライマリアカウント)の ID を入力します。 RAM ロール名 ステップ 1 で作成した RAM ロールの名前を入力します。 インスタンス ID ソース Tair インスタンス ID を選択します。 認証方法 要件に応じて選択します。この例では、[パスワードログイン]を使用します。 [パスワードなしのログイン]を選択する場合は、ソースインスタンスでパスワードなしのアクセスが有効になっていることを確認してください。 「パスワードなしのアクセスを有効化する」をご参照ください。 データベースパスワード 読み取り権限を持つ認証情報を入力してください。カスタムアカウントの場合は、 <account>:<password>の形式(例:testaccount:Test1234)を使用してください。デフォルトアカウント(ユーザー名がインスタンス ID と一致)の場合は、パスワードを直接入力してください。パスワードが設定されていない場合は、空白のままにしてください。パスワードをリセットするには、「パスワードの変更またはリセット」をご参照ください。暗号化 非暗号化 または SSL 暗号化 を選択します。自己管理型 Redis インスタンスで SSL 暗号化 を選択する場合、CA 証明書 をアップロードし、CA キー を入力してください。 宛先データベース
パラメーター 値 既存の接続を選択 宛先インスタンスが既に DTS に登録されている場合は、ドロップダウンリストから選択してください。そうでない場合は、以下のフィールドを構成してください。 データベースタイプ Tair/Redis を選択します。 アクセス方法 Alibaba Cloud インスタンス を選択します。 インスタンスリージョン 宛先 Tair インスタンスのリージョンを選択します。 Alibaba Cloud アカウント間でのデータ複製 いいえ を選択します — クロスアカウント設定はソース側でのみ適用されます。 インスタンス ID 宛先 Tair インスタンス ID を選択します。 認証方法 要件に基づいて選択します。この例ではパスワードログインを使用します。[パスワードなしのログイン]を選択した場合は、パスワードなしのアクセスが有効になっていることを確認してください。詳細については、「パスワードなしのアクセスを有効にする」をご参照ください。 データベースパスワード 読み取りおよび書き込み権限を持つ認証情報を入力してください。カスタムアカウントの場合は、 <account>:<password>の形式を使用してください。デフォルトアカウントの場合は、パスワードを直接入力してください。パスワードをリセットするには、「パスワードの変更またはリセット」をご参照ください。暗号化 非暗号化 または SSL 暗号化 を選択します。 接続テストと続行 をクリックします。
DTS サーバーの CIDR ブロックを、ソースインスタンスおよび宛先インスタンスのセキュリティのホワイトリストに追加する必要があります。これは自動的または手動で行うことができます。詳細については、「DTS サーバーの IP アドレスをホワイトリストに追加する」をご参照ください。いずれかのインスタンスがセルフマネージドの場合(アクセス方法が [Alibaba Cloud インスタンス] ではない場合)、[DTS サーバーの CIDR ブロック] ダイアログボックスで [接続テスト] をクリックします。
同期対象オブジェクトを構成します。オブジェクトの構成 ステップで、以下のパラメーターを設定します。
パラメーター 説明 同期タイプ デフォルトでは、完全データ同期 および 増分データ同期 の両方が選択されています。もし 増分データ同期 を選択する場合は、必ず 完全データ同期 も選択してください。完全同期が先に実行され、増分同期のベースラインを提供します。 同期トポロジー 単方向同期 を選択します。このパラメーターは、ソースおよび送信先の両方が Tair (Enterprise Edition) インスタンスである場合にのみ利用可能です。 競合テーブルの処理モード 事前チェックを行い、エラーを報告:送信先に既にデータが存在する場合、事前チェックが失敗します。エラーを無視して続行:送信先のデータ存在チェックをスキップします。 警告エラーを無視して続行 を選択すると、データ損失が発生する可能性があります — 同じキーを持つソース側のレコードが、送信先側のレコードを上書きします。
ソースオブジェクト ソースオブジェクト リストから 1 つ以上のデータベースを選択し、矢印アイコンをクリックして 選択済みオブジェクト に移動します。同期対象として選択できるのはデータベースのみであり、個別のキーは選択できません。 選択済みオブジェクト 選択済みオブジェクト 内のデータベースを右クリックし、スキーマの編集オブジェクト名のマッピングフィルター条件の指定 を選択することで、DB 0–255 のマッピングやキープレフィックスによるフィルター設定が可能です。詳細については、「」および「」をご参照ください。オブジェクト名のマッピングは一括で実行できません。 次へ:高度な設定 をクリックし、高度なパラメーターを構成します。
パラメーター 説明 タスクスケジューリング用の専用クラスター デフォルトでは、DTS はタスクを共有クラスターにスケジュールします。安定性を向上させるには、専用クラスターを購入してください。「DTS 専用クラスターとは」をご参照ください。 失敗した接続の再試行時間 DTS がタスクを停止するまで、失敗した接続を再試行する時間です。有効範囲:10~1,440 分。デフォルト:720 分。30 分を超える値を設定してください。複数のタスクが同じソースまたは宛先を共有する場合、最も短い再試行時間が適用されます。再試行中は DTS インスタンスに対して課金されます — 要件に応じてこの値を設定し、ソースまたは宛先がリリースされた場合は、速やかに DTS インスタンスをリリースしてください。 その他の問題の再試行時間 DTS が失敗した DDL または DML 操作を再試行する時間です。有効範囲:1~1,440 分。デフォルト:10 分。10 分を超える値を設定してください。この値は、失敗した接続の再試行時間 よりも小さくする必要があります。 完全データ同期のスロットリング有効化 完全同期中の読み取り/書き込みリソース使用量を制限して、両インスタンスへの負荷を軽減します。ソースデータベースへのクエリ毎秒数 (QPS)、完全データ移行の RPS、および 完全移行のデータ移行速度 (MB/s) を構成します。完全データ同期 が選択されている場合にのみ利用可能です。 増分データ同期のスロットリング有効化 増分同期中のリソース使用量を制限します。増分データ同期の RPS および 増分同期のデータ同期速度 (MB/s) を構成します。 宛先データベースキーの有効期限延長 宛先に同期されるキーの TTL を指定した秒数だけ延長します。EXPIRE、PEXPIRE、EXPIREAT、PEXPIREAT などの有効期限ベースのコマンドを使用する場合に構成します。 説明分散ロックのシナリオでは、TTL の延長によりロック解放が遅れる可能性があります。
環境タグ DTS インスタンスを識別するラベルです。任意項目です。 ETL の構成 ETL 処理を有効にするかどうかを指定します。[はい] を選択して、コードエディタで ETL を設定します。詳細については、「ETL をデータ移行またはデータ同期タスクで設定する」をご参照ください。[いいえ] を選択してスキップします。概要については、「ETL とは? モニタリングとアラート 同期タスクに対してアラートを設定するかどうかを指定します。[はい] を選択すると、アラートのしきい値と通知先連絡先を設定できます。タスクが失敗した場合、またはレイテンシがしきい値を超えた場合にアラートがトリガーされます。「DTS タスクを作成するときにモニタリングとアラートを設定する」をご参照ください。 [次へ:データ検証] をクリックして、データ検証の設定を行います (任意)。詳細については、「データ検証タスクの設定」をご参照ください。
タスクを保存し、事前チェックを実行します。
このタスク構成の API パラメーターをプレビューするには、次へ:タスク設定の保存および事前チェック にカーソルを合わせ、OpenAPI パラメーターのプレビュー をクリックします。
次へ:タスク設定の保存および事前チェック をクリックします。
DTS はタスク開始前に事前チェックを実行します。事前チェックが成功した場合にのみタスクが開始されます。 - 事前チェックが失敗した場合は、各失敗項目の横にある 詳細の表示 をクリックし、問題を修正して再び事前チェックを実行してください。 - 事前チェックで無視可能なアラートが生成された場合は、アラート詳細の確認 をクリックし、ダイアログボックスで 無視 をクリックしてから、再び事前チェック をクリックしてください。アラートを無視すると、データの不整合が発生する可能性があります。
インスタンスを購入します。
成功率 が 100% に達するまで待ち、その後 次へ:インスタンスの購入 をクリックします。
購入ページで、課金およびインスタンス設定を構成します。
パラメーター 説明 課金方法
サブスクリプション:前払い方式。長期利用に適しています。従量課金:時間単位で課金されます。不要になった時点でインスタンスをリリースすることで、課金を回避できます。
リソースグループ設定
同期インスタンスのリソースグループ。デフォルト: [デフォルト リソースグループ]。詳細については、「Resource Managementとは?」をご参照ください。
インスタンスクラス
必要な同期速度に基づいてクラスを選択します。詳細については、「データ同期インスタンスのインスタンスクラス」をご参照ください。
サブスクリプション期間
サブスクリプション 課金方法でのみ利用可能です。選択肢:1~9 か月、1 年、2 年、3 年、または 5 年です。
Data Transmission Service(従量課金)サービス利用規約 をお読みになり、同意してください。
購入および開始 をクリックします。確認ダイアログボックスで OK をクリックします。タスクは データ同期 ページに表示されます。完全同期および増分同期の両方が構成されている場合、完全同期が完了すると、現在のステータスとして 増分データ同期 が表示されます。
次のステップ
同期タスクが実行中になった後:
データ同期 ページで、タスクのステータスおよび遅延をモニタリングします。
タスクが失敗した場合や遅延がしきい値を超えた場合に通知を受けるために、アラートを設定します。「モニタリングとアラートの設定」をご参照ください。
データ検証機能を使用して、ソースと送信先のデータ整合性を検証します。 詳細については、「データ検証タスクを設定する」をご参照ください。