このトピックでは、data Transmission Service (DTS) を使用して、Tair (Redis OSS-Compatible) Enhanced Edition インスタンス間の双方向データ同期を設定する方法について説明します。 この機能は、アクティブな地理的冗長性や地理的災害復旧などのシナリオに適用できます。
前提条件
ソースインスタンスとターゲットインスタンスは Tair (Redis OSS-Compatible) Enhanced Edition Redis 5.0を実行するインスタンス。
Tair (Redis OSS-Compatible) Enhanced Edition のESSD/SSDベースのインスタンスをソースインスタンスとして設定することはできません。
Tair (Redis OSS-Compatible) Enhanced Edition の永続メモリ最適化インスタンスがソースインスタンスとして設定されている場合、appendonlyパラメーターをyesに設定する必要があります。
Tair (Redis OSS-Compatible) Enhanced Edition は、クラスター、標準、および読み書き分離アーキテクチャをサポートしています。
注意事項
双方向データ同期中、順方向のデータ同期タスクは 完全なデータ同期 および 増分データ同期 逆方向のデータ同期タスクは、増分データ同期のみを実行します。
警告データの一貫性を確保するために、双方向データ同期タスクの実行中に、ソースデータベースとターゲットデータベースの同じキーにデータを変更したり、データを書き込んだりしないでください。
DTSは、完全なデータ同期中にソースデータベースとターゲットデータベースのリソースを使用します。 これは、データベースサーバの負荷を増加させる可能性がある。 大量のデータを同期したり、サーバーの仕様が要件を満たしていない場合、データベースサービスが利用できなくなることがあります。 データを同期する前に、ソースインスタンスとターゲットインスタンスのパフォーマンスに対するデータ同期の影響を評価します。 オフピーク時にデータを同期することを推奨します。
データ同期中は、ソースインスタンスで
FLUSHDB
またはFLUSHALL
コマンドを実行しないことを推奨します。 いずれかのコマンドを実行すると、ソースインスタンスとターゲットインスタンスの間でデータの不整合が発生する可能性があります。デフォルトでは、データの削除方法を指定するmaxmemory-policyパラメーターは、Tair (Redis OSS-Compatible)インスタンスのvolatile-lruに設定されています。 デスティネーションインスタンスのメモリが不十分な場合、データの削除により、ソースインスタンスとデスティネーションインスタンスの間でデータの不整合が発生する可能性があります。 この場合、データ同期タスクは実行を停止しません。
データの不整合を防ぐため、ターゲットインスタンスのmaxmemory-policyをnoevictionに設定することを推奨します。 このように、宛先インスタンスのメモリが不十分な場合、データ同期タスクは失敗しますが、宛先インスタンスのデータ損失を防ぐことができます。
説明データ削除ポリシーの詳細については、「Tair (Redis OSS-Compatible)のデフォルトの削除ポリシーは何ですか?」をご参照ください。
ソースデータベースの特定のキーに対して有効期限ポリシーが有効化されている場合、これらのキーは、有効期限が切れた後の最も早い機会に削除されない場合があります。 したがって、宛先データベース内のキーの数は、ソースデータベース内のキーの数よりも少なくてもよい。 INFOコマンドを実行して、ターゲットデータベース内のキーの数を表示できます。
説明有効期限ポリシーが有効になっていない、または有効期限が切れていないキーの数は、ソースデータベースとターゲットデータベースで同じです。
ターゲットTair (Redis OSS-Compatible)インスタンスの直接接続モードが無効になっている場合、DTSはプロキシモードを使用してターゲットインスタンスにデータを書き込みます。
説明インスタンスの直接接続モードを有効にする方法の詳細については、「直接接続モードの有効化」をご参照ください。
データ同期中に、ソースまたはターゲットTair (Redis OSS-Compatible)インスタンスのシャード数が増減した場合、またはソースまたはターゲットインスタンスの仕様 (メモリ容量のスケールアップなど) を変更した場合、データ同期タスクを再設定する必要があります。 データの一貫性を確保するために、データ同期タスクを再設定する前に、ソースおよびターゲットTair (Redis OSS-Compatible)インスタンスに同期されたデータをクリアすることを推奨します。
データ同期中に、ソースまたはターゲットTair (Redis OSS-Compatible)インスタンスのエンドポイントが変更される場合があります。 たとえば、インスタンスのゾーンが変更された場合、またはネットワークタイプがクラシックネットワークからVirtual Private Cloud (VPC) に変更された場合、ソースインスタンスまたはターゲットインスタンスのエンドポイントが変更されます。 この場合、データ同期タスクを再設定する必要があります。
スタンドアロンTair (Redis OSS-Compatible)インスタンスからTair (Redis OSS-Compatible)クラスターインスタンスへのデータ同期の制限: 各コマンドは、Tair (Redis OSS-Compatible)クラスターインスタンスの単一のスロットでのみ実行できます。 ソースデータベース内の複数のキーに対して操作を実行し、キーが異なるスロットに属している場合、次のエラーが発生します。
CROSSSLOT Keys in request don't hash to the same slot
データ同期中は、1つのキーに対してのみ操作を実行することを推奨します。 それ以外の場合、データ同期タスクは中断されます。
ターゲットインスタンスがクラスターアーキテクチャにデプロイされ、ターゲットインスタンスのシャードが使用するメモリ量が上限に達した場合、またはターゲットインスタンスの使用可能なストレージスペースが不十分な場合、メモリ不足 (OOM) によりデータ同期タスクが失敗します。
ソースインスタンスまたはターゲットインスタンスに対して透過データ暗号化 (TDE) 機能が有効になっている場合、DTSを使用してデータを同期することはできません。
双方向データ同期インスタンスには、順方向同期タスクと逆方向同期タスクが含まれます。 インスタンスを設定またはリセットするときに、順方向同期タスクと逆方向同期タスクの両方でオブジェクトを同期する場合は、次のルールが適用されます。
オブジェクトの完全データと増分データの両方を同期できるのは、タスクの1つだけです。 もう1つのタスクは、オブジェクトの増分データのみを同期します。
現在のタスクのソースデータは、タスクの宛先にのみ同期できます。 同期されたデータは、他のタスクのソースデータとして使用されません。
課金
同期タイプ | タスク設定料金 |
スキーマ同期と完全データ同期 | 無料です。 |
増分データ同期 | 有料。 詳細については、「課金の概要」をご参照ください。 |
同期できるコマンド
APPEND
BITOP、BLPOP、BRPOP、およびBRPOPLPUSH
DECR、DECRFY、およびDEL
EVAL、EVALSHA、EXEC、EXPIRE、EXPIREAT
GEOADDとGETSET
HDEL、HINCRBY、HINCRBYFLOAT、HMSET、HSET、およびHSETNX
INCR、INCRBY、およびINCRBYFLOAT
LINSERT、LPOP、LPUSH、LUSHX、LREM、LSET、およびLTRIM
移動、MSET、MSETNX、およびマルチ
PERSIST、PEXPIRE、PEXPIREAT、PFADD、PFMERGE、およびPSETEX
RENAME、RENAMENX、RPOP、RPOPLPUSH、RPUSH、およびRPUSHX
SADD、SDIFFSTORE、SELECT、SET、SETBIT、SETEX、SETNX、SETRANGE、SINTERSTORE、SMOVE、SPOP、SREM、およびSUUNIONSTORE
UNLINK、ZADD、ZINCRBY、ZINTERSTORE、ZREM、ZREMRANGEBYLEX、ZUNION STORE、ZREMRANGEBYRANK、およびZREMRANGEBYSCORE
SWAPDB (ソースまたはターゲットインスタンスがクラスターアーキテクチャにデプロイされている場合、このコマンドは同期できません。)
PUBLISHコマンドは同期できません。
EVALまたはEVALSHAコマンドを実行してLuaスクリプトを呼び出した場合、DTSはこれらのLuaスクリプトがターゲットデータベースで実行されているかどうかを識別できません。 これは、増分データ同期中に、ターゲットデータベースがLuaスクリプトの実行結果を明示的に返さないためです。
DTSがSYNCまたはPSYNCコマンドを実行してLISTタイプのデータを転送すると、DTSは既存のデータをクリアしません。 結果として、宛先データベースは、重複するデータレコードを含み得る。
データベースアカウントに必要な権限
インスタンス | 権限と権限付与方法 |
ソースTair (Redis OSS-Compatible)インスタンス | ソースインスタンスとターゲットインスタンスのデータベースアカウントには、読み取りおよび書き込み権限が必要です。 アカウントに権限を付与する方法の詳細については、「データベースアカウントの作成と管理」をご参照ください。 |
ターゲットTair (Redis OSS-Compatible)インスタンス |
手順
データ同期インスタンスを購入します。 詳細については、「DTSインスタンスの購入」をご参照ください。
重要購入ページで、ソースインスタンスパラメーターをRedisに、宛先インスタンスパラメーターをRedisに、同期トポロジパラメーターを双方向同期に設定します。
DTSコンソールにログインします。
説明データ管理 (DMS) コンソールにリダイレクトされている場合は、のアイコンをクリックして、以前のバージョンのDTSコンソールに移動します。
左側のナビゲーションウィンドウで、[データ同期] をクリックします。
[同期タスク] ページの上部で、ターゲットインスタンスが存在するリージョンを選択します。
データ同期タスクを順方向に設定します。
データ同期インスタンスを検索し、最初のデータ同期タスクの [操作] 列で [タスクの設定] をクリックします。
重要双方向データ同期インスタンスには、2 つのデータ同期タスクがあります。 タスクごとにパラメーターを設定する必要があります。 2番目のデータ同期タスクを設定するときに、タスクを見つけて、[操作] 列の [タスクの設定] をクリックします。
ソースインスタンスとターゲットインスタンスを設定します。
セクション
パラメーター
説明
非該当
同期タスク名
DTSが自動的に生成するタスク名。 タスクの識別に役立つ名前を指定することをお勧めします。 一意のタスク名を指定する必要はありません。
ソースインスタンスの詳細
インスタンスタイプ
ソースインスタンスの種類。 [Redisインスタンス] を選択します。
インスタンスリージョン
購入ページで選択したソースインスタンスのリージョン。 このパラメーターの値は変更できません。
インスタンス ID
ソースTair (Redis OSS-Compatible)インスタンスのID。
重要データ同期タスクを逆方向に設定する場合は、ターゲットTair (Redis OSS-Compatible)インスタンスのIDを選択します。
データベースパスワード
ソースTair (Redis OSS-Compatible)インスタンスのデータベースアカウントのパスワード。 データベースアカウントに必要な権限については、「データベースアカウントに必要な権限」をご参照ください。
重要データベースのパスワードは <user >:< password> 形式です。 たとえば、インスタンスへのログインに使用するアカウントのユーザー名がadminで、パスワードがRp829dlwaの場合、データベースのパスワードはadmin:Rp829dlwaです。
ターゲットインスタンスの詳細
インスタンスタイプ
移行先インスタンスの ID を設定します。 [Redisインスタンス] を選択します。
インスタンスリージョン
購入ページで選択したターゲットインスタンスのリージョン。 このパラメーターの値は変更できません。
インスタンス ID
ターゲットTair (Redis OSS-Compatible)インスタンスのID。
重要データ同期タスクを逆方向に設定する場合は、ソースTair (Redis OSS-Compatible)インスタンスのIDを選択します。
データベースパスワード
ターゲットTair (Redis OSS-Compatible)インスタンスのデータベースアカウントのパスワード。 データベースアカウントに必要な権限については、「データベースアカウントに必要な権限」をご参照ください。
重要データベースのパスワードは <user >:< password> 形式です。 たとえば、インスタンスへのログインに使用するアカウントのユーザー名がadminで、パスワードがRp829dlwaの場合、データベースのパスワードはadmin:Rp829dlwaです。
ページの右下隅にあるホワイトリストと次への設定をクリックします。
説明ApsaraDB RDS for MySQLやApsaraDB for MongoDBインスタンスなどのApsaraDBインスタンス、またはElastic Compute Service (ECS) インスタンスでホストされている自己管理型データベースのセキュリティ設定を変更する必要はありません。 DTSは、DTSサーバーのCIDRブロックをApsaraDBインスタンスのホワイトリストまたはECSインスタンスのセキュリティグループルールに自動的に追加します。 詳細については、「DTSサーバーのCIDRブロックをオンプレミスデータベースのセキュリティ設定に追加する」をご参照ください。
データ同期が完了したら、DTSサーバーのCIDRブロックをホワイトリストまたはセキュリティグループから削除できます。
同期ポリシーと同期するオブジェクトを選択します。
設定
パラメーター
説明
同期ポリシーの選択
紛争解決ポリシー
上書き (競合が発生すると、ターゲットインスタンスの競合レコードが上書きされます)
データ同期中に、データレコードが同じキーを有するが異なる値を有する場合、最新のキー値を有するデータレコードは、競合するレコードを上書きする。
既存のターゲットテーブルの処理モード
事前チェックとインターセプト: ターゲットインスタンスが空かどうかを確認します。 ターゲットインスタンスが空の場合、事前チェックに合格します。 ターゲットインスタンスが空でない場合、事前チェック中にエラーが返され、データ同期タスクを開始できません。
無視: 空のターゲットデータベースのチェックをスキップします。
警告[無視] を選択した場合、移行元データベースのデータレコードは、移行先データベースのデータレコードを同じキーで上書きします。 作業は慎重に行ってください。
同期するオブジェクトの選択
非該当
[使用可能] セクションから1つ以上のデータベースを選択し、アイコンをクリックしてデータベースを [選択済み] セクションに移動します。
同期するオブジェクトとしてデータベースのみを選択できます。 同期するオブジェクトとしてキーを選択できません。
データベースとテーブルの名前変更
非該当
このシナリオでは、オブジェクトの名前を変更することはできません。
DMSがソーステーブルに対してオンラインDDL操作を実行するときに、一時テーブルをターゲットデータベースにコピーするかどうかを指定します
非該当
DMSを使用してソースデータベースでオンラインDDL操作を実行する場合、オンラインDDL操作によって生成された一時テーブルを同期するかどうかを指定できます。
Yes: DTSは、オンラインDDL操作によって生成された一時テーブルのデータを同期します。
説明オンラインDDL操作が大量のデータを生成する場合、データ同期タスクが遅延する可能性があります。
No: DTSは、オンラインDDL操作によって生成された一時テーブルのデータを同期しません。 ソースデータベースの元のDDLデータのみが同期されます。
説明[いいえ] を選択すると、ターゲットデータベースのテーブルがロックされる可能性があります。
失敗した接続の再試行時間の設定
非該当
既定では、DTSがソースデータベースまたはターゲットデータベースへの接続に失敗した場合、DTSは次の720分 (12時間) 以内に再試行します。 必要に応じて再試行時間を指定できます。 DTSが指定された時間内にソースデータベースとターゲットデータベースに再接続すると、DTSはデータ同期タスクを再開します。 それ以外の場合、データ同期タスクは失敗します。
説明DTSが接続を再試行すると、DTSインスタンスに対して課金されます。 ビジネスニーズに基づいて再試行時間を指定することを推奨します。 ソースインスタンスとターゲットインスタンスがリリースされた後、できるだけ早くDTSインスタンスをリリースすることもできます。
ページの右下隅にある [次へ] をクリックします。
初期同期タイプを選択します。
値はInclude full data + incremental dataに設定されており、変更できません。 DTSは、ソースTair (Redis OSS-Compatible)インスタンスの履歴データをターゲットTair (Redis OSS-Compatible)インスタンスに同期します。 次に、DTSは増分データを同期します。
重要必要なオブジェクトがすべてソースインスタンスからターゲットインスタンスに同期されている場合、逆方向のデータ同期タスクは増分データのみを同期します。
バージョン関連のエラーメッセージが表示された場合、ソースTair (Redis OSS-Compatible)インスタンスを指定されたバージョンにアップグレードできます。 詳細については、「メジャーバージョンのアップグレード」および「インスタンスのマイナーバージョンの更新」をご参照ください。
ページの右下隅にある [事前チェック] をクリックします。
説明データ同期タスクを開始する前に、DTSは事前チェックを実行します。 データ同期タスクは、タスクが事前チェックに合格した後にのみ開始できます。
タスクが事前チェックに合格しなかった場合は、失敗した各項目の横にあるアイコンをクリックして詳細を表示できます。
詳細に基づいて問題をトラブルシューティングした後、新しい事前チェックを開始します。
問題をトラブルシューティングする必要がない場合は、失敗した項目を無視して新しい事前チェックを開始してください。
次のメッセージが表示されたら、[事前チェック] ダイアログボックスを閉じます。[事前チェックの合格] そして、順方向のデータ同期タスクが開始される。
最初の順方向同期が完了し、データ同期タスクが同期状態になるまで待ちます。
データ同期タスクのステータスは、[同期タスク] ページで確認できます。
データ同期タスクを逆方向に設定します。
2番目のデータ同期タスクを見つけて、同期チャネルの設定[アクション] 列に表示されます。
ステップ5のサブステップを繰り返します。
結果
一定期間が経過すると、両方のデータ同期タスクが [同期] 状態になります。