Data Transmission Service (DTS) は、Tair (Redis OSS-Compatible) Enhanced Edition インスタンス間の双方向データ同期をサポートしています。この機能は、アクティブジオ冗長性やディザスタリカバリなどのユースケースに最適です。本トピックでは、同期タスクの構成方法について説明します。
前提条件
ソースインスタンスおよび宛先インスタンスは、Redis 5.0 を実行する Tair (Redis OSS-Compatible) Enhanced Edition インスタンスである必要があります。
-
Tair (Redis OSS-Compatible) Enhanced Edition (ESSD/SSD ベース) インスタンスは、ソースインスタンスではなく、宛先インスタンスとしてのみ構成できます。
-
Tair (Redis OSS-Compatible) Enhanced Edition の永続メモリインスタンスをソースインスタンスとして構成する場合、appendonly パラメーターを有効にする必要があります。
-
このタスクは、クラスター、標準、または 読み書き分離 アーキテクチャを使用するインスタンスをサポートしています。
注意事項
-
双方向同期の場合、フォワード同期タスクは完全データと増分データの両方を同期します。リバース同期タスクは増分データのみを同期します。
警告データの不整合を防ぐため、双方向同期タスクの実行中は、両方のインスタンスで同じキーを変更または書き込まないでください。
-
完全データ同期中、DTS はソースインスタンスおよび宛先インスタンスのリソースを消費し、サーバーロードが増加します。データベースのワークロードが重い場合やスペックが低い場合は、ロードの増加によりパフォーマンスへの影響やサービス中断が発生する可能性があります。タスク開始前にパフォーマンスへの影響を評価し、オフピーク時間帯に同期タスクを実行することを推奨します。
-
データ同期中に、ソースインスタンスで
FLUSHDBコマンドまたはFLUSHALLコマンドを実行しないでください。これらのコマンドを実行すると、ソースインスタンスと宛先インスタンス間でデータの不整合が発生します。 -
宛先データベースのメモリが不足し、エビクションがトリガーされた場合、ソースと宛先の間でデータが不整合になる可能性があります。これは、Tair (Redis OSS-Compatible) のデフォルトのエビクションポリシー (maxmemory-policy) が volatile-lru であるためです。ただし、これはタスクの正常な動作には影響しません。
この問題を回避するには、宛先データベースのエビクションポリシーを noeviction に設定することを推奨します。このポリシーでは、宛先のメモリが不足した場合、書き込み操作が失敗し、タスクが停止するため、エビクションによるデータ損失は発生しません。
説明エビクションポリシーの詳細については、「Redis のエビクションポリシー」をご参照ください。
-
ソースデータベースが一部のキーに対して有効期限ポリシーを使用している場合、宛先データベースのキー数が少ないと表示されることがあります (
infoコマンドなどによる報告)。これは、ソースデータベースで期限切れのキーが即座に削除されない場合があるためです。説明有効期限が設定されていないキー、またはまだ期限切れになっていないキーの数は、ソースデータベースと宛先データベースで同一です。
-
宛先 Redis インスタンスでダイレクト接続が有効になっていない場合、DTS はプロキシ経由でインスタンスにデータを書き込みます。
説明ダイレクト接続の有効化方法の詳細については、「ダイレクト接続の有効化」をご参照ください。
-
同期中にソースインスタンスまたは宛先インスタンスのスケーリング (シャードの追加または削除など) やスペック変更 (メモリの増加など) を行った場合、タスクを再構成する必要があります。データ整合性を確保するため、タスクを再構成する前に両方のインスタンスからすべての同期済みデータをクリアすることを推奨します。
-
同期中にソースまたは宛先 Redis インスタンスの接続エンドポイントが変更された場合 (ゾーン移行やクラシックネットワークから Virtual Private Cloud (VPC) へのネットワーク切り替えなど)、タスクを再構成する必要があります。
-
スタンドアロン Redis インスタンスからクラスターモード Redis インスタンスへのデータ同期を行う場合、次の制限が適用されます。Redis クラスターでは、コマンドが同じスロット内にあるキーに対してのみ操作を実行できます。ソースデータベースで複数のスロットにまたがるキーに対してマルチキー操作を実行すると、次のエラーが発生します:
CROSSSLOT Keys in request don't hash to the same slotタスクの中断を防ぐため、データ同期中はシングルキー操作のみを実行することを推奨します。
- 宛先インスタンスがクラスターアーキテクチャを使用している場合、いずれかのシャードがメモリ上限に達するか、インスタンスのストレージ容量が不足すると、DTS タスクはメモリ不足エラーで失敗します。
-
ソースインスタンスまたは宛先インスタンスで TDE (透過的データ暗号化) が有効になっている場合、DTS を使用してデータを同期することはできません。
-
双方向同期タスクには、フォワード同期タスクとリバース同期タスクが含まれます。タスクを構成またはリセットする際、一方のタスクの宛先オブジェクトが他方のタスクの同期オブジェクトと一致する場合:
-
完全データおよび増分データを同期できるのは 1 つのタスクのみです。もう一方のタスクは増分同期のみをサポートします。
-
現在のタスクのソースからのデータは、現在のタスクの宛先にのみ同期されます。他方のタスクのソースデータとしては使用されません。
-
課金
同期タイプ | 料金 |
スキーマ同期および完全データ同期 | 無料です。 |
増分データ同期 | 課金対象です。詳細については、「課金概要」をご参照ください。 |
サポートされる同期コマンド
-
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、ZADD、ZINCRBY、ZINTERSTORE、ZREM、ZREMRANGEBYLEX、ZUNIONSTORE、ZREMRANGEBYRANK、および ZREMRANGEBYSCORE
-
SWAPDB (ソースまたは宛先インスタンスがクラスターアーキテクチャを使用している場合、このコマンドはサポートされません。)
-
PUBLISHコマンドはサポートされていません。 -
EVALまたはEVALSHAを使用して Lua スクリプトを呼び出す場合、宛先が実行結果を明示的に返さないため、DTS は増分データ同期中の成功実行を保証できません。 -
List データの型の場合、
syncまたはpsyncを使用した再送は上書きではなく追加でデータを挿入するため、重複エントリが作成される可能性があります。
データベースアカウントの権限
|
データベース |
権限および権限付与 |
|
ソースインスタンス |
読み取りおよび書き込み権限が必要です。権限の付与方法の詳細については、「アカウントの作成と管理」をご参照ください。 |
|
宛先インスタンス |
操作手順
-
DTS インスタンスを購入します。詳細については、「購入ガイド」をご参照ください。
重要購入ページで、ソースインスタンスタイプを Redis、宛先インスタンスタイプを Redis、同期トポロジを 双方向同期 に設定します。
-
Data Transmission Service (DTS) コンソール にログインします。
説明Data Management (DMS) コンソールに自動的にリダイレクトされる場合、右下の
アイコンをクリックしてから
をクリックし、従来の DTS コンソールに戻ることができます。 -
左側のナビゲーションウィンドウで、データ同期 をクリックします。
-
同期タスク ページの上部で、ご利用の宛先インスタンスのリージョンを選択します。
-
フォワード同期タスクを構成します。
-
購入したデータ同期インスタンスを見つけ、最初の同期タスクの 操作 列で、[同期リンクの構成] をクリックします。
重要双方向同期インスタンスには 2 つの同期タスクが含まれており、それぞれ個別に構成する必要があります。リバース同期タスクを構成するには、2 番目のタスクを見つけ、操作 列で [同期リンクの構成] をクリックします。

-
ソースインスタンスおよび宛先インスタンスを構成します。
セクション
パラメーター
説明
該当なし
同期タスク名
DTS が自動的にタスク名を生成します。識別しやすくするため、わかりやすい名前を付けることを推奨します。名前に一意性は必要ありません。
ソースインスタンスの詳細
インスタンスタイプ
Redis インスタンス を選択します。
インスタンスリージョン
DTS インスタンス購入時に選択したソースインスタンスのリージョンです。このパラメーターは変更できません。
インスタンス ID
ソース Redis インスタンスの ID を選択します。
重要リバース同期タスクを構成する場合、フォワードタスクで構成した宛先インスタンスの ID を選択します。
データベースパスワード
Redis インスタンスのデータベースアカウントのパスワードを入力します。アカウントの権限の詳細については、「データベースアカウントの権限」をご参照ください。
重要パスワードは <ユーザー>:<パスワード> 形式である必要があります。たとえば、ユーザー名が
adminでパスワードがRp829dlwaの場合、admin:Rp829dlwaと入力します。宛先インスタンスの詳細
インスタンスタイプ
Redis インスタンス を選択します。
インスタンスリージョン
DTS インスタンス購入時に選択した宛先インスタンスのリージョンです。このパラメーターは変更できません。
インスタンス ID
宛先 Redis インスタンスの ID を選択します。
重要リバース同期タスクを構成する場合、フォワードタスクで構成したソースインスタンスの ID を選択します。
データベースパスワード
Redis インスタンスのデータベースアカウントのパスワードを入力します。アカウントの権限の詳細については、「データベースアカウントの権限」をご参照ください。
重要パスワードは <ユーザー>:<パスワード> 形式である必要があります。たとえば、ユーザー名が
adminでパスワードがRp829dlwaの場合、admin:Rp829dlwaと入力します。 -
ページ下部で、[ホワイトリストの設定と次へ] をクリックします。
説明-
ソースまたは宛先インスタンスが Alibaba Cloud データベースインスタンス (ApsaraDB RDS for MySQL や ApsaraDB for MongoDB など) または ECS インスタンス上の自己管理データベースである場合、DTS は自動的に DTS サーバーの CIDR ブロックをインスタンスのホワイトリストまたは ECS インスタンスのセキュリティグループルールに追加します。手動で追加する必要はありません。詳細については、「DTS サーバーの CIDR ブロック」をご参照ください。
-
DTS タスクが完了またはリリースされた後は、DTS サーバーの CIDR ブロックを手動で削除することを推奨します。
-
-
同期ポリシーおよびオブジェクトを構成します。
セクション
パラメーター
説明
同期ポリシー
競合解決ポリシー
上書き:競合が発生した場合、DTS は宛先インスタンスの競合レコードを上書きします。
同じキーを持つデータレコードの値が異なるために競合が発生した場合、更新時刻が新しいレコードが他のレコードを上書きします。
既存のターゲットテーブルでの処理モード
-
エラーの事前チェックと報告:宛先インスタンスが空かどうかをチェックします。空の場合は事前チェックを通過します。空でない場合は、タスクが停止し、エラーが報告されます。
-
エラーを無視して続行:空の宛先データベースのチェックをスキップします。
警告エラーを無視して続行 を選択した場合、初期化中にソースインスタンスのデータが同じキーを持つ宛先インスタンスのデータを上書きします。このオプションは慎重に使用してください。
同期オブジェクトの選択
該当なし
-
ソースオブジェクト ボックスで、同期するデータベースをクリックし、 アイコンをクリックして 選択中のオブジェクト ボックスに移動させます。
-
同期できるのはデータベース全体のみで、個別のキーは同期できません。
データベースおよびテーブルの名前変更
該当なし
この機能はサポートされていません。
DMS がソーステーブルでオンライン DDL 操作を実行する際に、一時テーブルを宛先データベースにコピーするかどうかを指定
該当なし
ソースデータベースが Data Management (DMS) を使用してオンライン DDL 変更を実行する場合、オンライン DDL 変更によって生成された一時テーブルのデータを同期するかどうかを選択できます。
-
○:オンライン DDL 操作によって生成された一時テーブルのデータを同期します。
説明オンライン DDL 操作中に一時テーブルに大量のデータが生成された場合、データ同期タスクが遅延する可能性があります。
-
いいえ:一時テーブルのデータを同期しません。ソースデータベースの元の DDL データのみを同期します。
説明このオプションは、宛先データベースでテーブルロックを引き起こす可能性があります。
接続失敗時の再試行時間を構成
該当なし
DTS がソースまたは宛先データベースに接続できない場合、デフォルトで 720 分 (12 時間) 再試行します。カスタムの再試行時間を指定することもできます。指定された時間内に DTS がデータベースに再接続できた場合、データ同期タスクは自動的に再開します。それ以外の場合は、タスクが失敗します。
説明接続再試行期間中も DTS インスタンスの料金が発生します。ビジネス要件に基づいてカスタムの再試行時間を指定するか、ソースおよび宛先データベースインスタンスをリリースした後は速やかに DTS インスタンスをリリースすることを推奨します。
-
-
上記の構成を完了したら、次へ をクリックします。
-
初期化オプションを構成します。
同期タイプは 完全データ + 増分データを含む に固定されています。DTS はまずソースから宛先インスタンスへの完全データ同期を実行し、その後増分データを同期します。
重要-
リバース同期タスクを構成する場合、オブジェクトがすでに宛先インスタンスで初期化されている場合は、増分データのみが同期されます。
-
バージョン関連のエラーメッセージが表示された場合は、指示に従ってソース Redis インスタンスを指定されたバージョンにアップグレードしてください。詳細については、「メジャーバージョンのアップグレード」および「マイナーバージョンおよびプロキシバージョンのアップグレード」をご参照ください。
-
-
ページ右下隅で、[事前チェックと開始] をクリックします。
説明-
DTS は同期タスク開始前に事前チェックを実行します。このチェックに合格した場合にのみ、タスクを開始できます。
-
事前チェックに失敗した場合、失敗した項目の横にある
アイコンをクリックして詳細を表示します。-
原因に基づいて問題を修正し、再度事前チェックを実行します。
-
アラート項目を修正する必要がない場合は、無視 または [無視して再事前チェック] をクリックしてアラート項目をスキップし、再度事前チェックを実行します。
-
-
-
事前チェック ダイアログボックスに 事前チェック完了 と表示されたら、事前チェック ダイアログボックスを閉じると、フォワード同期タスクが開始されます。
-
-
フォワードタスクの初期化が完了し、同期中 状態になるまで待ちます。
データ同期 ページで、データ同期タスクのステータスを確認できます。
-
リバース同期タスクを構成します。
-
2 番目の同期タスクを見つけ、[同期チャネルの構成] をクリックします。
-
手順 5 のサブステップを繰り返して、リバース同期タスクを構成します。
-
結果
しばらく時間が経過すると、両方の同期タスクのステータスが 同期中 になります。