Data Transmission Service (DTS) は、Redisデータベース間の一方向同期をサポートします。 この機能は、アクティブな地理的冗長性や地理的災害復旧などのシナリオに適用できます。 このトピックでは、Elastic Compute Service (ECS) インスタンスでホストされているセルフマネージドRedisデータベースからApsaraDB for Redisインスタンスへの一方向同期を設定する方法について説明します。
データ同期タスクを設定した後、ソースインスタンスまたはターゲットインスタンスのアーキテクチャタイプを変更しないでください。 たとえば、マスターレプリカアーキテクチャをクラスターアーキテクチャに変更すると、データの同期が失敗します。 ApsaraDB For Redisでサポートされているアーキテクチャタイプの詳細については、 概要をご参照ください。
前提条件
ソースRedisデータベースのバージョンは、2.8、3.0、3.2、4.0、5.0、または6.0です。
説明ターゲットインスタンスのバージョンは、ソースインスタンスのバージョンと同じかそれ以降である必要があります。 異なるバージョンのインスタンス間でデータを同期する場合は、ソースインスタンスとターゲットインスタンスのバージョンが互換性があることを確認してください。 たとえば、従量課金のターゲットインスタンスを作成して、ソースインスタンスとターゲットインスタンスの互換性を確認できます。 その後、このインスタンスをリリースするか、インスタンスの課金方法をサブスクリプションに変更できます。
ターゲットApsaraDB for Redisインスタンスの使用可能なストレージ容量が、ソースRedisデータベースのデータの合計サイズよりも大きいこと。
ソースRedisデータベースがクラスターアーキテクチャにデプロイされているシナリオでは、Redisクラスターのすべてのノードが
PSYNC
コマンドをサポートし、同じパスワードを共有します。ソースインスタンスのマスターノードとレプリカノード間のデータレプリケーションのタイムアウト期間は、repl-timeoutパラメーターで指定します。 デフォルトでは、このパラメータは60秒に設定されています。
config set repl-timeout 600
コマンドを実行して、このパラメーターを600秒に設定することを推奨します。 ソースインスタンスに大量のデータが保存されている場合は、ビジネス要件に基づいてrepl-timeoutパラメーターの値を増やすことができます。
使用上の注意
DTSは、最初の完全データ同期中にソースインスタンスとターゲットインスタンスのリソースを使用します。 これにより、データベースサーバーの負荷が増加する可能性があります。 大量のデータを同期したり、サーバーの仕様が要件を満たしていない場合、データベースサービスが利用できなくなることがあります。 データを同期する前に、ソースインスタンスとターゲットインスタンスのパフォーマンスに対するデータ同期の影響を評価します。 オフピーク時にデータを同期することを推奨します。
ソースデータベースの特定のキーに対して有効期限ポリシーが有効化されている場合、これらのキーは、有効期限が切れた後の最も早い機会に削除されない場合があります。 したがって、宛先データベース内のキーの数は、ソースデータベース内のキーの数よりも少なくてもよい。 INFOコマンドを実行して、ターゲットデータベース内のキーの数を表示できます。
説明有効期限ポリシーが有効になっていない、または有効期限が切れていないキーの数は、ソースデータベースとターゲットデータベースで同じです。
ソースredisデータベースのRedis. confファイルで
bind
パラメーターが設定されている場合、このパラメーターの値をECSインスタンスの内部IPアドレスに設定する必要があります。 この設定により、DTSがソースデータベースに接続できるようになります。データ同期の安定性を確保するために、ソースredisデータベースの
Redis. conf
ファイルのrepl-backlog-sizeパラメーターの値を大きくすることを推奨します。同期品質を確保するために、DTSはソースRedisデータベースに
DTS_REDIS_TIMESTAMP_HEARTBEAT
キーを追加します。 このキーは、データがApsaraDB for Redisに同期される時刻を記録するために使用されます。Redisクラスター間のデータ同期中は、ソースデータベースで
FLUSHDB
またはFLUSHALL
コマンドを実行しないことを推奨します。 Redisクラスター間のデータ同期中にソースデータベースでいずれかのコマンドを実行すると、ソースRedisデータベースとターゲットApsaraDB for Redisインスタンスの間でデータの不整合が発生する可能性があります。デフォルトでは、データの削除方法を指定するmaxmemory-policyパラメーターは、ApsaraDB for Redisインスタンスのvolatile-lruに設定されています。 デスティネーションインスタンスのメモリが不十分な場合、データの削除により、ソースインスタンスとデスティネーションインスタンスの間でデータの不整合が発生する可能性があります。 この場合、データ同期タスクは実行を停止しません。
データの不整合を防ぐため、ターゲットインスタンスのmaxmemory-policyをnoevictionに設定することを推奨します。 このように、宛先インスタンスのメモリが不十分な場合、データ同期タスクは失敗しますが、宛先インスタンスのデータ損失を防ぐことができます。
説明データ削除ポリシーの詳細については、「ApsaraDB for Redisのデフォルトの削除ポリシーは何ですか? 」をご参照ください。
データ同期中に、自己管理Redisデータベースのシャードの数が増減した場合、またはメモリ容量のスケールアップなどのデータベース仕様を変更した場合、データ同期タスクを再構成する必要があります。 データの一貫性を確保するために、データ同期タスクを再構成する前に、ターゲットインスタンスに同期されたデータをクリアすることを推奨します。
データ同期中に、自己管理Redisデータベースのエンドポイントが変更された場合、データ同期タスクを再構成する必要があります。
スタンドアロンApsaraDB for RedisインスタンスからApsaraDB for Redisクラスターインスタンスへのデータ同期の制限: 各コマンドは、ApsaraDB for Redisクラスターインスタンスの単一のスロットでのみ実行できます。 ソースデータベース内の複数のキーに対して操作を実行し、キーが異なるスロットに属している場合、次のエラーが発生します。
CROSSSLOT Keys in request don't hash to the same slot
データ同期中は、1つのキーに対してのみ操作を実行することを推奨します。 それ以外の場合、データ同期タスクは中断されます。
ターゲットインスタンスがクラスターアーキテクチャにデプロイされ、ターゲットインスタンスのシャードが使用するメモリ量が上限に達した場合、またはターゲットインスタンスの使用可能なストレージスペースが不十分な場合、メモリ不足 (OOM) によりデータ同期タスクが失敗します。
同期品質を確保するために、Data Transmission Service (DTS) は、ソースデータベースにDTS_REDIS_TIMESTAMP_HEARTBEATというプレフィックスが付いたキーを追加します。 このキーは、データが宛先データベースに同期される時刻を記録するために使用されます。 ソースデータベースがクラスターアーキテクチャにデプロイされている場合、DTSはこのキーを各シャードに追加します。 キーはデータ同期中に除外されます。 データ同期タスクが完了すると、キーは期限切れになります。
ソースデータベースが読み取り専用データベースである場合、またはデータ同期タスクの実行に使用されるソースデータベースアカウントにSETEXコマンドを実行する権限がない場合、報告されるレイテンシが不正確になる可能性があります。
ターゲットインスタンスに対して透過データ暗号化 (TDE) 機能が有効になっている場合、DTSを使用してデータを同期することはできません。
課金
同期タイプ | タスク設定料金 |
スキーマ同期と完全データ同期 | 無料です。 |
増分データ同期 | 有料。 詳細については、「課金の概要」をご参照ください。 |
サポートしている同期トポロジ
一方向の 1 対 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、RESTORE、RPOP、RPOPLPUSH、RPUSH、およびRPUSHX
SADD、SDIFFSTORE、SELECT、SET、SETBIT、SETEX、SETNX、SETRANGE、SINTERSTORE、SMOVE、SPOP、SREM、およびSUUNIONSTORE
ZADD、ZINCRBY、ZINTERSTORE、ZREM、ZREMRANGEBYLEX、ZUNION STORE、ZREMRANGEBYRANK、およびZREMRANGEBYSCORE
SWAPDBおよびUNLINK (ソースインスタンスのエンジンバージョンが4.0の場合のみサポート)
XADD、XCLAIM、XDEL、XAUTOCLAIM、XGROUP CREATECONSUMER、およびXTRIM
公開操作は同期できません。
EVALまたはEVALSHAコマンドを実行してLuaスクリプトを呼び出す場合、DTSはこれらのLuaスクリプトがターゲットインスタンスで実行されているかどうかを識別できません。 これは、増分データ同期中に、ターゲットインスタンスがLuaスクリプトの実行結果を明示的に返さないためです。
DTSがSYNCまたはPSYNCコマンドを実行してLISTタイプのデータを転送すると、DTSはターゲットインスタンスの既存のデータをクリアしません。 その結果、宛先インスタンスは重複するデータレコードを含むことがある。
手順
[データ同期タスク] ページに移動します。
データ管理 (DMS) コンソール にログインします。
上部のナビゲーションバーで、DTSをクリックします。
左側のナビゲーションウィンドウで、を選択します。
説明操作は、DMSコンソールのモードとレイアウトによって異なります。 詳細については、「シンプルモード」および「DMSコンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。
新しいDTSコンソールのデータ同期タスクページに行くこともできます。
データ同期タスクの右側で、データ同期インスタンスが存在するリージョンを選択します。
説明新しいDTSコンソールを使用する場合は、上部のナビゲーションバーでデータ同期インスタンスが存在するリージョンを選択する必要があります。
[タスクの作成] をクリックします。 タスクの作成ウィザードで、ソースデータベースとターゲットデータベースを設定します。 次の表にパラメーターを示します。
セクション
パラメーター
説明
非該当
タスク名
DTSタスクの名前。 タスク名は自動生成されます。 タスクを簡単に識別できるように、わかりやすい名前を指定することをお勧めします。 一意のタスク名を指定する必要はありません。
ソースデータベース
データベースタイプ
移行元ディスクのタイプを設定します。 [ApsaraDB for Redis Enhanced Edition (Tair)] を選択します。
アクセス方法
ソースデータベースのアクセス方法。 [ECS上の自己管理データベース] を選択します。
インスタンスリージョン
ソースRedisデータベースが存在するリージョン。
Alibaba Cloudアカウント全体でのデータの複製
Alibaba Cloudアカウント間でデータを同期するかどうかを指定します。 この例では、[いいえ] が選択されています。
ECSインスタンスID
ソースRedisデータベースをホストするECSインスタンスのID。
説明ソースRedisデータベースがクラスターアーキテクチャにデプロイされている場合は、マスターノードが存在するECSインスタンスのIDを選択します。
インスタンスモード
ソースRedisデータベースがデプロイされるアーキテクチャ。 [スタンドアロン] または [クラスター] を選択します。
ポート番号
ソースRedisデータベースのサービスポート番号。 デフォルト値: 6379
説明ソースRedisデータベースがクラスターアーキテクチャにデプロイされている場合は、マスターノードのサービスポート番号を入力します。
データベースパスワード
ソースRedisデータベースのパスワード。
説明このパラメーターはオプションで、ソースRedisデータベースにパスワードが設定されていない場合は空のままにできます。
データベースのパスワードを <user >:< password> 形式で指定します。 たとえば、ソースRedisデータベースへのログインに使用するアカウントのユーザー名がadminで、パスワードがRp829dlwaの場合、データベースのパスワードはadmin:Rp829dlwaです。
宛先データベース
データベースタイプ
ターゲットデータベースのタイプ。 [ApsaraDB for Redis Enhanced Edition (Tair)] を選択します。
アクセス方法
ターゲットデータベースのアクセス方法。 [Alibaba Cloudインスタンス] を選択します。
インスタンスリージョン
ターゲットApsaraDB for Redisインスタンスが存在するリージョン。
インスタンスID
ターゲットApsaraDB for RedisインスタンスのID。
データベースパスワード
ターゲットApsaraDB for Redisインスタンスのデータベースパスワード。
説明データベースのパスワードを <user >:< password> 形式で指定します。 たとえば、ターゲットApsaraDB For Redisインスタンスへのログインに使用するアカウントのユーザー名がadminで、パスワードがRp829dlwaの場合、データベースのパスワードはadmin:Rp829dlwaです。
ページの下部で、接続性をテストして続行をクリックします。
ソースまたはターゲットデータベースがAlibaba Cloudデータベースインスタンス (ApsaraDB RDS for MySQLインスタンスやApsaraDB for MongoDBインスタンスなど) の場合、DTSは自動的にDTSサーバーのCIDRブロックをインスタンスのホワイトリストに追加します。 ソースデータベースまたはターゲットデータベースがElastic Compute Service (ECS) インスタンスでホストされている自己管理データベースの場合、DTSサーバーのCIDRブロックがECSインスタンスのセキュリティグループルールに自動的に追加されます。ECSインスタンスがデータベースにアクセスできるようにする必要があります。 ソースデータベースまたはターゲットデータベースが、データセンターにデプロイされているか、サードパーティのクラウドサービスプロバイダーによって提供される自己管理データベースである場合、DTSサーバーのCIDRブロックをデータベースのホワイトリストに手動で追加して、DTSがデータベースにアクセスできるようにする必要があります。 詳細については、「DTSサーバーのCIDRブロックの追加」をご参照ください。
警告DTSサーバーのCIDRブロックがデータベースまたはインスタンスのホワイトリスト、またはECSセキュリティグループルールに自動的または手動で追加されると、セキュリティリスクが発生する可能性があります。 したがって、DTSを使用してデータを同期する前に、潜在的なリスクを理解して認識し、次の対策を含む予防策を講じる必要があります。VPNゲートウェイ、またはSmart Access Gateway。
変更追跡と詳細設定のためのオブジェクトを設定します。
パラメーター
説明
同期タイプ
同期タスクのタイプ。 デフォルトでは、フルデータ同期 + 増分データ同期が選択されています。
競合テーブルの処理モード
事前チェックとインターセプト: ターゲットインスタンスが空かどうかを確認します。 ターゲットインスタンスが空の場合、事前チェックに合格します。 ターゲットインスタンスが空でない場合、事前チェック中にエラーが返され、データ同期タスクを開始できません。
無視: 空のターゲットインスタンスのチェックをスキップします。
警告[無視] を選択した場合、ソースインスタンスのデータレコードは、ターゲットインスタンスの同じキーを持つデータレコードを上書きします。 作業は慎重に行ってください。
スレーブノードの使用
ソースRedisデータベースのインスタンスモードパラメーターがクラスターに設定されている場合、マスターノードまたはレプリカノードからデータをプルできます。
ソースオブジェクト
ソースオブジェクト セクションから1つ以上のオブジェクトを選択し、アイコンをクリックして 選択中のオブジェクト セクションにオブジェクトを追加します。
説明同期するオブジェクトとしてデータベースのみを選択できます。 同期するオブジェクトとしてキーを選択できません。
[選択済みオブジェクト]
同期するオブジェクト。 このシナリオでは、オブジェクトの名前を変更することはできません。
[次へ:詳細設定] をクリックして詳細設定を構成します。
データ検証設定
データ検証を有効にする方法の詳細については、「データ検証タスクの設定」をご参照ください。
詳細設定
パラメーター
説明
Set Alerts
データ同期タスクのアラートを設定するかどうかを指定します。 タスクが失敗するか、同期レイテンシが指定されたしきい値を超えると、アラート送信先は通知を受け取ります。 有効な値:
No: アラートを有効にしません。
Yes: アラートを設定します。 この場合、アラートしきい値と アラート連絡先 詳細については、「DTSタスクの作成時のモニタリングとアラートの設定」をご参照ください。
失敗した接続のリトライ時間範囲の指定
失敗した接続のリトライ時間範囲。 データ同期タスクの開始後にソースデータベースまたはターゲットデータベースの接続に失敗した場合、DTSはその時間範囲内ですぐに接続を再試行します。 有効な値: 10 ~ 1440 単位は分です。 デフォルト値: 720 このパラメーターを30より大きい値に設定することを推奨します。 DTSが指定された時間範囲内にソースデータベースとターゲットデータベースに再接続すると、DTSはデータ同期タスクを再開します。 それ以外の場合、データ同期タスクは失敗します。
説明ソースまたはターゲットデータベースが同じである複数のデータ同期タスクに対して異なるリトライ時間範囲を指定した場合、最も短いリトライ時間範囲が優先されます。
DTSが接続を再試行すると、DTSインスタンスに対して課金されます。 業務要件に基づいて再試行時間範囲を指定することを推奨します。 ソースインスタンスとターゲットインスタンスがリリースされた後、できるだけ早くDTSインスタンスをリリースすることもできます。
移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。
その他の問題の再試行時間範囲。 たとえば、データ同期タスクの開始後にDDLまたはDML操作の実行に失敗した場合、DTSはその時間範囲内ですぐに操作を再試行します。 有効な値: 1 ~ 1440 単位は分です。 デフォルト値は 10 です。 パラメーターを10より大きい値に設定することを推奨します。 指定された時間範囲内で失敗した操作が正常に実行されると、DTSはデータ同期タスクを再開します。 それ以外の場合、データ同期タスクは失敗します。
重要ソースデータベースとターゲットデータベースで他の問題が発生した場合の再試行までの待機時間パラメーターの値は、[失敗した接続の再試行時間] パラメーターの値よりも小さくする必要があります。
完全なデータ移行のスロットリングを有効化
DTSが増分データを宛先インスタンスに同期すると、宛先インスタンスの負荷が増加する可能性があります。 ビジネス要件に基づいて、増分データ同期中に1秒あたりに同期できる行数とデータ量のスロットリングしきい値を設定できます。 これにより、ターゲットインスタンスの負荷を軽減できます。
宛先データベースキーの有効期限の延長
ソースデータベースからターゲットインスタンスに同期されたキーが有効なままになるまでの延長期間。 単位は秒です。 特定のコマンドを実行する場合は、データの一貫性を確保するためにパラメーターを600に設定することを推奨します。 特定のコマンドには、次のコマンドが含まれますが、これに限定されません。
expire key seconds pexpire key milliseconds expireat key timestamp pexpireat key timestampMs
ETLの設定
抽出、変換、および読み込み (ETL) 機能を有効にするかどうかを指定します。 詳細については、「ETLとは何ですか? 」をご参照ください。有効な値:
Yes: ETL機能を設定します。 コードエディターでデータ処理ステートメントを入力できます。 詳細については、「データ移行またはデータ同期タスクでのETLの設定」をご参照ください。
No: ETL機能を設定しません。
タスク設定を保存し、事前チェックを実行します。
関連するAPI操作を呼び出してDTSタスクを設定するときに指定するパラメーターを表示するには、ポインターを 次:タスク設定の保存と事前チェック に移動し、OpenAPI パラメーターのプレビュー をクリックします。
パラメーターを表示または表示する必要がない場合は、ページ下部の 次:タスク設定の保存と事前チェック をクリックします。
説明データ同期タスクを開始する前に、DTSは事前チェックを実行します。 データ同期タスクは、タスクが事前チェックに合格した後にのみ開始できます。
データ同期タスクが事前チェックに失敗した場合は、失敗した各項目の横にある [詳細の表示] をクリックします。 チェック結果に基づいて原因を分析した後、問題のトラブルシューティングを行います。 次に、プレチェックを再実行します。
事前チェック中にアイテムに対してアラートがトリガーされた場合:
アラートアイテムを無視できない場合は、失敗したアイテムの横にある [詳細の表示] をクリックして、問題のトラブルシューティングを行います。 次に、もう一度プレチェックを実行します。
アラート項目を無視できる場合は、[アラート詳細の確認] をクリックします。 [詳細の表示] ダイアログボックスで、[無視] をクリックします。 表示されたメッセージボックスで、[OK] をクリックします。 次に、[再度事前チェック] をクリックして、事前チェックを再度実行します。 アラート項目を無視すると、データの不整合が発生し、ビジネスが潜在的なリスクにさらされる可能性があります。
成功率が100% になるまで待ちます。 次に、[次へ: インスタンスの購入] をクリックします。
購入ページで、データ同期インスタンスの課金方法とインスタンスクラスのパラメーターを設定します。 下表にパラメーターを示します。
セクション
パラメーター
説明
新しいインスタンスクラス
Billing Method
サブスクリプション: データ同期インスタンスの作成時にサブスクリプションの料金を支払います。 サブスクリプションの課金方法は、長期使用の場合、従量課金の課金方法よりも費用対効果が高くなります。
従量課金: 従量課金インスタンスは1時間ごとに課金されます。 従量課金方法は、短期使用に適しています。 従量課金データ同期インスタンスが不要になった場合は、インスタンスをリリースしてコストを削減できます。
リソースグループの設定
データ同期インスタンスが属するリソースグループ。 デフォルト値: Default resource group 詳細については、「リソース管理とは 」をご参照ください。
インスタンスクラス
DTSは、同期速度が異なるインスタンスクラスを提供します。 ビジネス要件に基づいてインスタンスクラスを選択できます。 詳細については、「データ同期インスタンスのインスタンスクラス」をご参照ください。
サブスクリプション期間
サブスクリプションの課金方法を選択した場合は、サブスクリプション期間と作成するデータ同期インスタンスの数を指定します。 サブスクリプション期間は、1〜9か月、1年、2年、3年、または5年とすることができる。
説明このパラメーターは、サブスクリプション の課金方法を選択した場合にのみ使用できます。
データ伝送サービス (従量課金) サービス規約を読んで選択します。
[購入と開始] をクリックして、データ同期タスクを開始します。 タスクリストでタスクの進行状況を確認できます。
次のステップ
ソースデータベースとターゲットデータベースでinfo keyspace
コマンドを実行して、同期されたオブジェクトのkey
の数がソースデータベースとターゲットデータベースで同じかどうかを確認できます。 データ検証タスクを設定した場合は、データ検証結果を表示することもできます。 詳細については、「データ検証の詳細の表示」をご参照ください。