OpenAPI ExplorerでData Transmission Service (DTS) のAPI操作を呼び出して、Tair (Redis OSS-Compatible) Enhanced Edition インスタンス間の一方向または双方向の同期を設定できます。 このトピックでは、使用上の注意事項とサンプルコードについて説明します。
前提条件
ソースインスタンスとターゲットインスタンスは Tair (Redis OSS-Compatible) Enhanced Edition Redis 5.0を実行するインスタンス。
一方向同期の場合、ソースインスタンスをストレージ最適化インスタンスにすることはできません。 双方向同期の場合、ソースインスタンスとターゲットインスタンスをストレージ最適化インスタンスにすることはできません。
ソースインスタンスがTair (Redis OSS-Compatible) Enhanced Edition の永続メモリ最適化インスタンスである場合、appendonlyパラメーターはyesに設定されます。
インスタンスのアーキテクチャは限定されない。 アーキテクチャは、cluster、standard、またはread/write splittingです。
使用上の注意
双方向同期中、順方向のデータ同期タスクは 初期フルデータ同期 および 増分データ同期 逆方向のデータ同期タスクは、増分データ同期のみを実行します。
警告データの一貫性を確保するために、双方向同期タスクの実行中に、ソースデータベースとターゲットデータベースの同じキーにデータを変更したり、データを書き込んだりしないでください。
DTSは、最初の完全データ同期中にソースデータベースとターゲットデータベースのリソースを使用します。 これにより、データベースサーバーの負荷が増加する可能性があります。 大量のデータを同期したり、サーバーの仕様が要件を満たしていない場合、データベースサービスが利用できなくなることがあります。 データを同期する前に、ソースインスタンスとターゲットインスタンスのパフォーマンスに対するデータ同期の影響を評価します。 オフピーク時にデータを同期することを推奨します。
データ同期中は、ソースインスタンスで
FLUSHDB
またはFLUSHALL
コマンドを実行しないことを推奨します。 いずれかのコマンドを実行すると、ソースインスタンスとターゲットインスタンスの間でデータの不整合が発生する可能性があります。デフォルトでは、データの削除方法を指定するmaxmemory-policyパラメーターは、Tair (Redis OSS-Compatible)インスタンスのvolatile-lruに設定されています。 デスティネーションインスタンスのメモリが不十分な場合、データの削除により、ソースインスタンスとデスティネーションインスタンスの間でデータの不整合が発生する可能性があります。 この場合、データ同期タスクは実行を停止しません。
データの不整合を防ぐため、ターゲットインスタンスのmaxmemory-policyをnoevictionに設定することを推奨します。 このように、宛先インスタンスのメモリが不十分な場合、データ同期タスクは失敗しますが、宛先インスタンスのデータ損失を防ぐことができます。
説明データ削除ポリシーの詳細については、「Tair (Redis OSS-Compatible)のデフォルトの削除ポリシーは何ですか?」をご参照ください。
ソースデータベースの特定のキーに対して有効期限ポリシーが有効化されている場合、これらのキーは、有効期限が切れた後の最も早い機会に削除されない場合があります。 したがって、宛先データベース内のキーの数は、ソースデータベース内のキーの数よりも少なくてもよい。 INFOコマンドを実行して、ターゲットデータベース内のキーの数を表示できます。
説明有効期限ポリシーが有効になっていない、または有効期限が切れていないキーの数は、ソースデータベースとターゲットデータベースで同じです。
ターゲットTair (Redis OSS-Compatible) Enhanced Edition インスタンスの直接接続が無効になっている場合、DTSはプロキシ転送モードを使用してターゲットインスタンスにデータを書き込みます。
説明ダイレクト接続を有効にする方法の詳細については、「ダイレクト接続モードの有効化」をご参照ください。
データ同期中に、ソースインスタンスのシャードの数が増減した場合、またはインスタンスの仕様が変更された場合 (メモリ容量がスケールアップされた場合など) 、データ同期タスクを再設定する必要があります。 データの一貫性を確保するために、データ同期タスクを再構成する前に、ターゲットインスタンスに同期されたデータをクリアすることを推奨します。
データ同期中に、ソースインスタンスのエンドポイントが変更される場合があります。 たとえば、インスタンスのゾーンが変更された場合、またはネットワークタイプがクラシックネットワークから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を使用してソースデータベースからターゲットデータベースにデータを同期することはできません。
Redisデータベースのマスターノードとレプリカノード間のデータレプリケーションのタイムアウト期間は、repl-timeoutパラメーターで指定します。
config set repl-timeout 600
コマンドを実行して、ソースインスタンスのタイムアウト期間を600秒に設定することを推奨します。 ソースインスタンスに大量のデータが保存されている場合は、ビジネス要件に基づいてrepl-timeoutパラメーターの値を増やすことができます。
課金
同期タイプ | タスク設定料金 |
スキーマ同期と完全データ同期 | 無料です。 |
増分データ同期 | 有料。 詳細については、「課金の概要」をご参照ください。 |
制限事項
一方向カスケード同期はサポートされていません。 詳細については、「同期トポロジ」をご参照ください。
同期できるコマンド
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は既存のデータをクリアしません。 その結果、宛先インスタンスは重複するデータレコードを含むことがある。
始める前に
AccessKeyペアを作成します。
Alibaba CloudアカウントのAccessKeyペアを保護するために、Resource Access Management (RAM) ユーザーを作成し、RAMユーザーにDTSへのアクセス権限を付与し、RAMユーザーのAccessKeyペアを使用してDTS SDK for Javaを呼び出すことを推奨します。 詳細については、「RAMユーザーを使用したリソースへのアクセスの制御」をご参照ください。
データ同期インスタンスの作成
OpenAPI Explorerにログインします。
ビジネス要件に基づいてリクエストパラメーターを設定します。 下表に、各パラメーターを説明します。
パラメーター
説明
値
SourceRegion
ソースインスタンスが存在するリージョンのID。
ビジネス要件に基づいて、これらのパラメーターの値を指定します。
DestRegion
ターゲットインスタンスが存在するリージョンのID。
トポロジ
同期トポロジ。 有効な値:
oneway (デフォルト): 一方向同期。
bidirectional: 双方向同期。
SynchronizationJobClass
データ同期インスタンスのインスタンスクラス。 有効な値: micro、small、medium、large
PayType
データ同期インスタンスの課金方法。 有効な値:
PrePaid: サブスクリプション。
PostPaid (デフォルト): 従量課金。
SourceEndpoint.InstanceType
ソースインスタンスの種類。
値をRedisに設定します。
DestinationEndpoint.InstanceType
移行先インスタンスの ID を設定します。
値をRedisに設定します。
説明詳細については、「CreateSynchronizationJob」をご参照ください。
ページの下部で、[呼び出しの開始] をクリックします。
[レスポンス] タブで、リクエストとレスポンスのステータスを表示します。
重要リクエストが失敗した場合は、レスポンスで返されたメッセージに基づいてリクエストパラメーターを変更し、リクエストが成功するまでリクエストを再度送信する必要があります。
オプション。 SDKのサンプルコードを取得します。
[SDKサンプルコード] タブをクリックします。
SDKのバージョンとプログラミング言語を指定します。
コードセクションの右上隅にあるアイコンをクリックします。
一方向同期タスクの設定
この例では、ソースインスタンスのデータベースアカウントに、ソースデータベースに対する読み取り権限があります。 ターゲットインスタンスのデータベースアカウントには、ターゲットデータベースに対する読み取りおよび書き込み権限があります。
一方向同期タスクを設定する場合、ソースデータベースまたはターゲットデータベースとして、自己管理RedisデータベースまたはTair (Redis OSS-Compatible) Community Editionインスタンスを使用することもできます。 設定方法は、このトピックで説明した方法と同様です。 ただし、実際のシナリオに基づいてMigrationReserved
などのリクエストパラメーターを指定する必要があります。
OpenAPI Explorerにログインします。
ビジネス要件に基づいてリクエストパラメーターを設定します。
説明SynchronizationDirectionパラメーターをForwardに設定する必要があります。 詳細については、「ConfigureSynchronizationJob」をご参照ください。
ページの下部で、[呼び出しの開始] をクリックします。
[レスポンス] タブで、リクエストとレスポンスのステータスを表示します。
重要リクエストが失敗した場合は、レスポンスで返されたメッセージに基づいてリクエストパラメーターを変更し、リクエストが成功するまでリクエストを再度送信する必要があります。
オプション。 SDKのサンプルコードを取得します。
[SDKサンプルコード] タブをクリックします。
SDKのバージョンとプログラミング言語を指定します。
コードセクションの右上隅にあるアイコンをクリックします。
双方向同期タスクの設定
この例では、データ同期に使用されるデータベースアカウントに読み取りおよび書き込み権限があります。
順方向のデータ同期タスクを設定します。 詳細については、このトピックの「一方向同期タスクの構成」をご参照ください。
順方向のデータ同期タスクの状態が同期に変わるまで待ちます。
説明DTSコンソールで、またはDescribeSynchronizationJobStatus操作を呼び出して、データ同期タスクのステータスを表示できます。
データ同期タスクを逆方向に設定します。
オプション。 OpenAPI Explorerにログインします。
ビジネス要件に基づいてリクエストパラメーターを設定します。
説明SynchronizationDirectionパラメーターをReverseに設定する必要があります。 詳細については、「ConfigureSynchronizationJob」をご参照ください。
ページの下部で、[呼び出しの開始] をクリックします。
[レスポンス] タブで、リクエストとレスポンスのステータスを表示します。
重要リクエストが失敗した場合は、レスポンスで返されたメッセージに基づいてリクエストパラメーターを変更し、リクエストが成功するまでリクエストを再度送信する必要があります。
オプション。 SDKのサンプルコードを取得します。
[SDKサンプルコード] タブをクリックします。
SDKのバージョンとプログラミング言語を指定します。
コードセクションの右上隅にあるアイコンをクリックします。
関連ドキュメント
を使用して、データ同期のパフォーマンスを表示できます。 パフォーマンス指標 DTSは、データ同期タスクの管理に役立つ接続およびパフォーマンスメトリックを提供します。
データ同期タスクへのオブジェクトの追加またはデータ同期タスクからのオブジェクトの削除
データ同期タスク中に、オブジェクトをタスクに追加したり、タスクからオブジェクトを削除したりできます。