Data Transmission Service (DTS) を使用して Redis インスタンス間の一方向データ同期を構成します。一方向同期は、アクティブ地理的冗長性やジオディザスタリカバリのシナリオに適しています。
タスクの構成後、ソースデータベースまたは宛先データベースのアーキテクチャタイプを変更しないでください。たとえば、マスター/レプリカからクラスターアーキテクチャに切り替えると、タスクが失敗します。
前提条件
-
サポートされているソースおよび宛先の Redis バージョンについては、同期ソリューションをご参照ください。
説明バージョン間の同期は、古いバージョンから新しいバージョンへの方向でのみサポートされています。まず互換性を確認してください。たとえば、テスト用に従量課金の Redis インスタンスを作成し、その後解放するか、サブスクリプション課金に切り替えます。
-
宛先 Redis インスタンスには、ソース Redis インスタンスの使用済みストレージ容量よりも大きいストレージ容量が必要です。
-
ソース Tair (Redis OSS-Compatible) インスタンスが Enterprise Edition (永続メモリ最適化) インスタンスの場合、appendonly パラメーターを有効にする必要があります。
-
Tair (Redis OSS-Compatible) Enterprise Edition (容量ストレージ) インスタンスは、宛先データベースとしてのみ使用でき、ソースデータベースとしては使用できません。
注意事項
-
初期完全データ同期により、ソースと宛先の両方の負荷が増加します。データベースのトラフィック量が多い場合、または低スペックのサーバーで実行されている場合、同期によってサービスが中断される可能性があります。パフォーマンスへの影響を評価し、オフピーク時にタスクを実行してください。
-
移行元データベースに有効期限ポリシーを持つキーがある場合、
infoなどのコマンドで確認すると、移行先データベースのキー数が少なく報告されることがあります。これは、有効期限が切れたキーがすぐに削除されない場合があるためです。説明有効期限ポリシーがない、または有効期限が切れていないキーの数は、移行元と移行先のデータベースで同じです。
-
同期中にソースデータベースで
FLUSHDBまたはFLUSHALLを実行しないでください。これにより、ソースと宛先の間でデータの不整合が発生します。 -
宛先のメモリが不足すると、データエビクションによってソースと宛先の間でデータの不整合が発生する可能性があります。Tair (Redis OSS-Compatible) のデフォルトの maxmemory-policy は volatile-lru で、タスクの動作に影響はありませんが、データがエビクションされる可能性があります。
データ損失を防ぐため、宛先のエビクションポリシーを noeviction に設定してください。このポリシーでは、メモリが不足すると書き込み操作が失敗してタスクは停止しますが、データはエビクションされません。
説明Redis のデータエビクションポリシーをご参照ください。
-
同期中にソース Redis インスタンスをスケーリング (シャードの追加または削除) するか、仕様を変更する場合は、タスクを再構成してください。データ整合性を確保するため、再構成前に宛先から同期済みのすべてのデータを削除してください。
-
同期中にソース Redis インスタンスの接続アドレスが変更された場合 (たとえば、アベイラビリティーゾーンの変更や、クラシックネットワークから VPC への切り替えなど)、タスクを再構成してください。
スタンドアロンからクラスター Redis インスタンスへの同期では、Redis クラスターが単一のコマンドで操作できるのは単一のスロットのみであるという制限があります。ソースで複数のキーを操作し、それらのキーが同じスロットに属していない場合、次のエラーが返されます。
CROSSSLOT Keys in request don't hash to the same slotDTS 同期中にタスクが中断されないようにするには、単一キー操作のみを実行してください。
- 宛先インスタンスがクラスターアーキテクチャを使用しており、そのシャードの 1 つがメモリ制限に達した場合、または宛先インスタンスのストレージ容量が不足した場合、DTS タスクはメモリ不足 (OOM) エラーで失敗します。
-
ソースインスタンスまたは宛先インスタンスで透過的データ暗号化 (TDE) が有効になっている場合、DTS を使用してデータを同期することはできません。
-
ソースが自己管理型の Redis の場合、
config set repl-timeout 600を実行して、レプリカとマスター間の repl-timeout を少なくとも 600 秒に設定してください。ソースデータベースが大規模な場合は、repl-timeout の値をより大きく設定してください。
サポートされている同期トポロジ
-
1 対 1 の一方向同期
-
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、RESTORE、RPOP、RPOPLPUSH、RPUSH、RPUSHX
-
SADD、SDIFFSTORE、SELECT、SET、SETBIT、SETEX、SETNX、SETRANGE、SINTERSTORE、SMOVE、SPOP、SREM、SUNIONSTORE
-
ZADD、ZINCRBY、ZINTERSTORE、ZREM、ZREMRANGEBYLEX、ZUNIONSTORE、ZREMRANGEBYRANK、ZREMRANGEBYSCORE
-
SWAPDB、UNLINK (ソース Redis インスタンスがバージョン 4.0 以降の場合のみサポート)
-
XADD、XCLAIM、XDEL、XAUTOCLAIM、XGROUP CREATECONSUMER、XTRIM
-
PUBLISHコマンドは同期されません。 -
EVALまたはEVALSHAで呼び出される Lua スクリプトについて、DTS は増分データ同期中に宛先データベースでスクリプトが正常に実行されることを保証できません。これは、宛先データベースが実行結果を明示的に返さないためです。 -
List データ型の場合、DTS は
syncまたはpsyncでデータを再送信する際に、宛先の既存データをクリアしません。これにより、データが重複する可能性があります。
データベースアカウントの権限
|
データベース |
必要な権限 |
|
ソース Redis インスタンス |
読み取り権限。詳細については、アカウントの作成と管理をご参照ください。 |
|
宛先 Redis インスタンス |
読み取りおよび書き込み権限。詳細については、アカウントの作成と管理をご参照ください。 |
操作手順
-
データ同期インスタンスを購入します。詳細については、「データ同期タスクの購入」をご参照ください。
説明インスタンスの購入時に、ソースインスタンスと宛先インスタンスの両方で Redis を選択してください。
-
Data Transmission Service コンソールにログインします。
説明Data Management (DMS) コンソールにリダイレクトされた場合は、右下隅の
アイコンをクリックし、次に
アイコンをクリックして、以前のバージョンの Data Transmission Service (DTS) コンソールに戻ります。 -
ナビゲーションペインで、[データ同期] をクリックします。
-
Synchronization Tasks ページの上部で、宛先インスタンスがあるリージョンを選択します。
-
対象のデータ同期インスタンスを見つけ、[操作] 列で [タスクの構成] をクリックします。
-
ソースインスタンスと宛先インスタンスを構成します。
セクション
パラメーター
説明
該当なし
同期タスク名
DTS は自動的にタスク名を生成します。識別しやすいように、わかりやすい名前を指定することを推奨します。名前は一意である必要はありません。
ソースインスタンスの詳細
インスタンスタイプ
[Redisインスタンス] を選択します。
インスタンスリージョン
データ同期インスタンスの購入時に選択したリージョン。この値は変更できません。
インスタンスID
ソース Redis インスタンスの ID を選択します。
データベースパスワード
ソース Redis インスタンスのデータベースアカウントのパスワードを入力します。必要な権限については、データベースアカウントの権限をご参照ください。
説明パスワードは <user>:<password> 形式で入力する必要があります。たとえば、ユーザー名が
adminでパスワードがRp829dlwaの場合、admin:Rp829dlwaと入力します。宛先インスタンスの詳細
インスタンスタイプ
[Redisインスタンス] を選択します。
インスタンスリージョン
データ同期インスタンスの購入時に選択したリージョン。この値は変更できません。
インスタンスID
宛先 Redis インスタンスの ID を選択します。
データベースパスワード
宛先 Redis インスタンスのデータベースアカウントのパスワードを入力します。必要な権限については、データベースアカウントの権限をご参照ください。
説明パスワードは <user>:<password> 形式で入力する必要があります。たとえば、ユーザー名が
adminでパスワードがRp829dlwaの場合、admin:Rp829dlwaと入力します。 -
ページの右下隅にある [ホワイトリストの設定と次へ] をクリックします。
説明-
ソースまたは宛先が Alibaba Cloud データベースインスタンス (ApsaraDB RDS for MySQL や ApsaraDB for MongoDB など) または ECS インスタンス上の自己管理データベースの場合、DTS は自動的にそのサーバー IP CIDR ブロックをインスタンスのホワイトリストまたは ECS セキュリティグループルールに追加します。追加される IP アドレスブロックについては、「DTS サーバー IP アドレスブロック」をご参照ください。
-
DTS タスクが完了または解放された後、DTS サーバー IP アドレスブロックを手動で削除してください。
-
-
既存の宛先オブジェクトの処理モードを構成し、同期オブジェクトを選択します。
設定
説明
既存オブジェクトの処理モード
-
エラーの事前チェックと報告: 宛先データベースが空かどうかを確認します。空でない場合、事前チェックは失敗し、タスクは開始されません。
-
エラーを無視して続行: 宛先データベースが空かどうかのチェックをスキップします。
警告エラーを無視して続行 を選択した場合、同期中にソースデータが同じキーを持つ宛先データを上書きします。このオプションは注意して使用してください。
同期オブジェクト
-
ソースオブジェクト ボックスで、同期するデータベースをクリックし、 アイコンをクリックして 選択中のオブジェクト ボックスに追加します。
-
同期オブジェクトとしてデータベースを選択できます。個々のキーを選択することはできません。
マッピング名の編集
このシナリオでは、オブジェクトの名前を変更することはできません。
Replicate temporary tables during online DDL with DMS
Data Management (DMS) を使用してソースデータベースでオンライン DDL 変更を実行する場合、DDL 変更によって生成された一時テーブルを同期するかどうかを選択できます。
-
○:オンライン DDL 変更によって生成された一時テーブルを同期します。
説明オンライン DDL 変更によって大量の一時テーブルデータが生成された場合、データ同期タスクが遅延する可能性があります。
-
いいえ:オンライン DDL 変更によって生成された一時テーブルを同期しません。ソースデータベースからの元の DDL 操作のみが同期されます。
説明このオプションを選択すると、ターゲットデータベースのテーブルがロックされます。
接続再試行期間
DTS がソースインスタンスまたは宛先インスタンスに接続できない場合、デフォルトで 720 分 (12 時間) リトライします。カスタムのリトライ期間を指定することもできます。指定された期間内に DTS がソースインスタンスまたは宛先インスタンスに再接続した場合、同期タスクは自動的に再開されます。それ以外の場合、タスクは失敗します。
説明接続リトライ中のタスク実行時間に対して課金されます。ビジネスニーズに応じてリトライ期間をカスタマイズするか、ソースインスタンスと宛先インスタンスがリリースされたらすぐに DTS インスタンスをリリースしてください。
-
-
次へ をクリックします。
-
初期同期方法は [完全データ + 増分データ] に固定されています。
説明-
DTS は、ソースから宛先 Redis インスタンスに既存のデータを同期してから、増分データを同期します。
-
バージョン関連のエラーが表示された場合は、プロンプトに従ってソース Redis インスタンスをアップグレードしてください。詳細については、メジャーバージョンのアップグレードおよびマイナーバージョンとプロキシバージョンのアップグレードをご参照ください。
-
-
設定が完了したら、ページの右下隅にある [事前チェックして開始] をクリックします。
説明-
同期タスクが開始される前に、DTS は事前チェックを実行します。タスクは事前チェックに合格した後にのみ開始できます。
-
事前チェックが失敗した場合、確認項目の横にある
アイコンをクリックして、失敗の詳細を表示します。-
詳細に基づいて問題を修正し、事前チェックを再実行できます。
-
警告項目を修正する必要がない場合は、無視 または [スキップして再実行] をクリックして続行できます。
-
-
-
事前チェックダイアログボックスに事前チェック完了が表示されたら、事前チェックダイアログボックスを閉じます。 同期ジョブが開始されます。
-
タスクの初期化が完了するまで待ちます。ステータスが 同期中 に変わります。
説明データ同期 ページでタスクのステータスを確認できます。