Data Transmission Service (DTS) は、ApsaraDB for Tair (Redis OSS-compatible) インスタンス間の一方向同期をサポートしています。この機能は、アクティブ地理的冗長性やジオディザスタリカバリに利用できます。
前提条件
開始する前に、次のことを確認してください。
ターゲットの ApsaraDB for Tair (Redis OSS-compatible) インスタンスが作成済みであること。詳細については、「ステップ 1: インスタンスの作成」をご参照ください。
ターゲットインスタンスの利用可能なストレージ容量が、ソースインスタンスの使用済みストレージ容量よりも大きいこと。
ターゲットデータベースのバージョンが、ソースデータベースのバージョンと同じか、それ以降であること。ターゲットのバージョンが低い場合、互換性の問題が発生する可能性があります。
ソースデータベースアカウントに読み取り権限があり、ターゲットデータベースアカウントに読み取りおよび書き込み権限があること。詳細については、「データベースアカウントの作成と管理」をご参照ください。
ソースインスタンスまたはターゲットインスタンスで TDE (透過的データ暗号化) が 有効になっていないこと。TDE が有効なインスタンスは DTS では使用できません。
ソースが、Persistent Memory 記憶媒体を備えた ApsaraDB for Tair (Enterprise Edition) インスタンスの場合、
appendonlyパラメーターはyesに設定されます。詳細については、「AOF 永続化の無効化」をご参照ください。ソースインスタンスで
config set repl-timeout 600を実行して、マスター/レプリカ間のレプリケーションタイムアウトを 600 秒に設定してください。ソースインスタンスに大量のデータが保存されている場合は、必要に応じてこの値を増やしてください。同期の安定性を向上させるために、ソースインスタンスの
redis.confにあるrepl-backlog-sizeの値を増やしてください。
課金
| 同期タイプ | 料金 |
|---|---|
| 完全データ同期 | 無料 |
| 増分データ同期 | 課金済み。詳細については、「課金概要」をご参照ください。 |
サポートされる同期トポロジ
一方向 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 (ソースエンジンバージョン 4.0 のみ); XADD, XCLAIM, XDEL, XAUTOCLAIM, XGROUP CREATECONSUMER, XTRIM。
以下のコマンドは同期できません。
PUBLISH: サポートされていません。
EVAL/EVALSHA (Lua スクリプト): ターゲットが明示的な結果を返さないため、DTS は増分同期中に Lua スクリプトがターゲットで実行されたかどうかを確認できません。
LIST データの SYNC/PSYNC: DTS は同期前に既存のデータをクリアしないため、ターゲットに重複したレコードが含まれる可能性があります。
注意事項
タスク設定前の注意事項
| カテゴリ | 注意事項 |
|---|---|
| ソースデータベースの制限事項 | DTS は、更新タイムスタンプを追跡するために、DTS_REDIS_TIMESTAMP_HEARTBEAT というプレフィックスを持つキーをソースデータベースに挿入します。クラスタアーキテクチャの場合、DTS はこのキーを各シャードに挿入します。このキーは同期中にフィルターされ、タスク終了時に有効期限切れとなります。 |
| ソースデータベースの制限事項 | ソースデータベースが読み取り専用である場合、または DTS アカウントに WRITE(SETEX)権限がない場合、レポートされる同期遅延が不正確になる可能性があります。 |
| ソースデータベースの制限事項 | ソースデータベースで FLUSHDB コマンドまたは FLUSHALL コマンドを実行しないでください。これらのコマンドにより、ソースとターゲットの間でデータの不整合が発生します。 |
| ソースデータベースの制限事項 | 特定のソースキーに有効期限ポリシーが設定されている場合、それらのキーは有効期限切れ後すぐに削除されないことがあります。そのため、ターゲットにはソースよりも少ないキーが含まれる可能性があります。info コマンドを実行して、ターゲットのキー数を確認してください。 |
| ソースデータベースの制限事項 | ソースがセルフマネージドのスタンドアロン Redis インスタンスで、Redis クラスターに同期する場合、各コマンドは単一のスロットでのみ操作できます。異なるスロットに属するキーに対して操作を実行すると、次のエラーが発生し、同期が中断されます:CROSSSLOT Keys in request don't hash to the same slot。同期中は、一度に 1 つのキーのみを操作してください。 |
| ターゲットデータベースの制限事項 | フルデータ同期中、DTS は両方のインスタンスの読み取りおよび書き込みリソースを使用するため、サーバーロードが増加する可能性があります。オフピーク時間帯にデータを同期してください。 |
| ターゲットデータベースの制限事項 | 同期中は、DTS のみを使用してターゲットにデータを書き込んでください。他のソースから書き込むと、データの不整合が発生します。 |
| ターゲットデータベースの制限事項 | ターゲットがクラスタアーキテクチャでデプロイされており、いずれかのシャードがメモリ上限に達した場合、またはインスタンスのストレージが枯渇した場合、メモリ不足(OOM)によりタスクが失敗します。 |
| ターゲットデータベースの制限事項 | Tair(Redis OSS-Compatible)インスタンスのデフォルトの maxmemory-policy は volatile-lru です。ターゲットのメモリが不足している場合、エビクションによりタスクを停止せずにインスタンス間で不整合が発生する可能性があります。データ損失を防ぐため、ターゲットの maxmemory-policy を noevictionTair のデフォルトの削除ポリシー |
| TLS/SSL | ApsaraDB for Tair(Redis OSS-Compatible)インスタンスで TLS が有効になっている場合、DTS への接続には SSL 暗号化 を使用してください。TLSv1.3 はサポートされていません。TLS が有効になっているインスタンスは、Alibaba Cloud インスタンス として DTS に接続できません。 |
| バージョン互換性 | ターゲットデータベースのバージョンは、ソースのバージョンと同じか、それ以降である必要があります。 |
同期中および同期後の注意事項
| カテゴリ | 注意 |
|---|---|
| 再設定が必要 | ソースインスタンスのシャード数が変更された場合、またはデータベースの仕様 (メモリ容量など) をスケールアップした場合、同期タスクを再設定してください。整合性を確保するために、再設定する前に、以前に同期されたデータをターゲットからクリアしてください。 |
| 再設定が必要 | 同期中にソースまたはターゲットの自己管理 Redis データベースの接続アドレスが変更された場合、タスクを再設定してください。 |
| 完全再同期のトリガー | 次のような状況では、DTS がすべてのデータをターゲットに再同期し、一時的なデータの不整合が発生する可能性があります:一時的な接続障害でブレークポイントからの再開に失敗した場合、ソースまたはターゲットでマスター/スレーブ切り替えまたはフェイルオーバーが発生した場合、接続アドレスが変更された場合、または同期オブジェクトが変更された場合。 |
| タスクの再起動 | 完全同期タスクと増分同期タスクの両方を含む同期インスタンスを再起動すると、DTS は両方のフェーズを再実行します。 |
| DTS タスクの復元 | DTS タスクが失敗した場合、DTS テクニカルサポートは 8 時間以内に復旧を試みます。このプロセス中に、タスクが再起動されたり、タスクパラメーター (データベースのパラメーターではありません) が変更されたりする場合があります。変更される可能性のあるパラメーターは、インスタンスパラメーターを変更するに記載されています。 |
一方向同期タスクの設定
ステップ 1: データ同期ページの表示
次のいずれかの方法でデータ同期ページを開きます。
DTS コンソール
DTS コンソールにログインします。
左側のナビゲーションペインで、[データ同期] をクリックします。
左上隅で、同期インスタンスが存在するリージョンを選択します。
DMS コンソール
実際の操作は、DMS コンソールのモードおよびレイアウトによって異なる場合があります。詳細については、「シンプルモード」および「DMS コンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。
DMS コンソールにログインします。
上部のナビゲーションバーで、[データ + AI] にポインターを合わせ、[DTS (DTS)] > [データ同期] を選択します。
[データ同期タスク] の横にあるドロップダウンリストから、同期インスタンスが存在するリージョンを選択します。
ステップ 2: タスクの作成
[タスクの作成] をクリックして、タスク設定ページを開きます。
ステップ 3: ソースデータベースとターゲットデータベースの設定
| セクション | パラメーター | 説明 |
|---|---|---|
| N/A | タスク名 | タスク名です。DTS は自動的に名前を生成します。識別しやすいように、わかりやすい名前を指定してください。名前は一意である必要はありません。 |
| ソースデータベース | 既存の接続を選択 | インスタンスが既に DTS に登録済みの場合は、ドロップダウンリストから選択してください。DTS が残りのパラメーターを自動入力します。「データベース接続の管理」をご参照ください。DMS コンソールでは、[DMS データベースインスタンスの選択] ドロップダウンを使用します。インスタンスが登録されていない場合は、以下のパラメーターを手動で設定してください。 |
| ソースデータベース | データベースタイプ | [Tair/Redis] を選択します。 |
| ソースデータベース | アクセス方法 | [Alibaba Cloud インスタンス] を選択します。 |
| ソースデータベース | インスタンスリージョン | ソースの ApsaraDB for Tair (Redis OSS-compatible) インスタンスのリージョンを選択します。 |
| ソースデータベース | Alibaba Cloud アカウント間でのデータ複製 | [いいえ] を選択します (この例では同じアカウント内のインスタンスを使用します)。 |
| ソースデータベース | インスタンス ID | ソースインスタンスの ID を選択します。 |
| ソースデータベース | 認証方法 | この例では [パスワードログイン] を選択します。 説明 アカウント+パスワードログイン では、Redis バージョン 6.0 以降が必要です。シークレット不要ログイン の場合は、まずインスタンスでパスワードなしのアクセスを有効化する必要があります — 詳細については、「パスワードなしのアクセスを有効化する」をご参照ください。 |
| ソースデータベース | データベースパスワード | ソースインスタンスのパスワードを入力します。フォーマットは <user>:<password> です。例:admin:Rp829dlwa。アカウントの権限については、「前提条件」セクションをご参照ください。 |
| ソースデータベース | 暗号化 | [暗号化なし] または [SSL 暗号化] を選択します。ただし、[アクセス方法] が [Alibaba Cloud インスタンス] ではなく、[SSL 暗号化] を選択した場合は、[CA 証明書] をアップロードし、[CA キー] を入力します。 |
| ターゲットデータベース | 既存の接続を選択 | ソースデータベースと同じです。 |
| ターゲットデータベース | データベースタイプ | [Tair/Redis] を選択します。 |
| ターゲットデータベース | アクセス方法 | [Alibaba Cloud インスタンス] を選択します。 |
| ターゲットデータベース | インスタンスリージョン | ターゲットの ApsaraDB for Tair (Redis OSS-compatible) インスタンスのリージョンを選択します。 |
| ターゲットデータベース | Alibaba Cloud アカウント間でのデータ複製 | [いいえ] を選択します (この例では同じアカウント内のインスタンスを使用します)。 |
| ターゲットデータベース | インスタンス ID | ターゲットインスタンスの ID を選択します。 |
| ターゲットデータベース | 認証方法 | この例では [パスワードログイン] を選択します。ソースと同じ注意事項が適用されます。 |
| ターゲットデータベース | データベースパスワード | ターゲットインスタンスのパスワードを入力します。フォーマットは <user>:<password> です。 |
| ターゲットデータベース | 暗号化 | [非暗号化] または [SSL 暗号化] を選択します。 |
ページ下部の [接続をテストして次へ] をクリックします。
DTS がアクセスできるように、DTS サーバーの CIDR ブロックが両方のインスタンスのセキュリティ設定に追加されていることを確認してください。詳細については、「DTS サーバーの CIDR ブロックを追加する」をご参照ください。
ソースまたは送信先が、Alibaba Cloud Instanceを介さずにアクセスされる自己管理データベースである場合、[接続テスト] を [DTSサーバーのCIDRブロック] ダイアログボックスでクリックします。
ステップ 4: 同期オブジェクトの設定
[オブジェクトの設定] ステップで、次のパラメーターを設定します。
パラメーター 説明 同期タイプ 増分データ同期、または 完全データ同期 + 増分データ同期 のいずれかを選択します。 説明増分データ同期 を選択する場合は、完全データ同期 も併せて選択してください。
同期トポロジー 単方向同期 を選択します。 説明このパラメーターは、ソースおよび送信先の両方が Tair (Enterprise Edition) インスタンスである場合にのみ利用可能です。
競合テーブルの処理モード 事前チェックとエラー報告:DTS が送信先にデータが既に存在するかをチェックします。データが存在する場合、事前チェックは失敗し、タスクを開始できません。エラーを無視して続行:存在チェックをスキップします。 警告この設定ではデータ損失が発生する可能性があります — 同じキーを持つソース側のレコードが、送信先側のレコードを上書きします。
ソースオブジェクト 同期対象のデータベースを選択し、矢印アイコンをクリックして 選択済みオブジェクト に追加します。個別のキーではなく、データベース単位でのみ選択可能です。特定のキーをフィルターするには、選択済みオブジェクト 内の データフィルタリング 選択済みオブジェクト データを特定のデータベース(DB 0~DB 255)にマップしたり、キープレフィックスでフィルターしたりするには、選択済みオブジェクト 内のデータベースを右クリックし、スキーマの編集オブジェクト名のマップ ダイアログで設定を行ってください。詳細については、「」および「フィルター条件の指定」をご参照ください。 [次へ: 詳細設定] をクリックし、以下を設定します。
パラメーター 説明 タスクスケジューリング用の専用クラスター デフォルトでは、DTSは共有クラスターを使用します。より高いタスクの安定性のために、専用クラスターを購入します。詳細については、「DTS専用クラスターとは」をご参照ください。 接続失敗時の再試行時間 ソースまたはターゲットが利用できなくなった場合に DTS が再試行する時間です。有効な値:10~1440 分。デフォルト:720 分。30 分以上に設定してください。この期間内に DTS が再接続するとタスクは再開されますが、それ以外の場合は失敗します。 説明複数のタスクが同じソースまたはターゲットデータベースを共有している場合、最も短い再試行時間が適用されます。DTS が再試行している間も料金は発生し続けます。
その他の問題での再試行時間 DDL または DML 操作が失敗した場合に DTS が再試行する時間です。有効な値:1~1440 分。デフォルト:10 分。10 分以上に設定してください。この値は [接続失敗時の再試行時間] より短くする必要があります。 完全データ同期の帯域幅調整を有効化 [ソースデータベースへの秒間クエリ数 (QPS)]、[完全データ移行の RPS]、および [完全移行のデータ移行速度 (MB/s)] を設定して、完全同期中のソースおよびターゲットでの DTS のリソース使用量を制限します。[完全データ同期] が選択されている場合にのみ使用できます。 増分データ同期の帯域幅調整を有効化 [増分データ同期の RPS] と [増分同期のデータ同期速度 (MB/s)] を設定して、増分同期中の DTS のリソース使用量を制限します。 環境タグ DTS インスタンスを識別するためのオプションのタグです。 ターゲットデータベースキーの有効期限を延長 ターゲットに同期されたキーの有効期間を延長します。ワークフローで次のコマンドを使用して整合性を確保する場合に設定します: EXPIRE key seconds、PEXPIRE key milliseconds、EXPIREAT key timestamp、PEXPIREAT key timestampMs。説明分散ロックのシナリオでは、有効期限を延長するとロックの解放が遅れる可能性があります。
ETL の設定 [はい] を選択して抽出・変換・書き出し (ETL) 機能を設定し、コードエディタに処理文を入力します。[いいえ] を選択してスキップします。「ETL とは?」および「データ移行またはデータ同期タスクで ETL を設定する」をご参照ください。 モニタリングとアラート タスクの失敗またはしきい値を超えるレイテンシに対するアラートを設定するには、[はい] を選択し、アラートのしきい値と通知先連絡先を設定します。[いいえ] を選択するとスキップされます。詳細については、「DTS タスクを作成するときにモニタリングとアラートを設定する」をご参照ください。 「[次へ: データ検証]」をクリックして、データ検証を設定します。詳細については、「データ検証タスクの設定」をご参照ください。
ステップ 5: 事前チェックの実行
このタスク設定の API パラメーターを表示するには、[次へ: タスク設定を保存して事前チェック] にポインターを合わせ、[OpenAPI パラメーターのプレビュー] をクリックします。
[次へ: タスク設定を保存して事前チェック] をクリックして設定を保存し、事前チェックを開始します。
事前チェックに合格した後にのみタスクを開始できます。
事前チェックが失敗した場合は、失敗した各項目の横にある [詳細の表示] をクリックし、問題をトラブルシューティングしてから、事前チェックを再実行します。
アラートがトリガーされた場合:無視できない項目については、トラブルシューティングを行ってから事前チェックを再実行します。無視できる項目については、[アラート詳細の確認] をクリックし、[無視] > [OK] > [再度事前チェック] をクリックします。アラートを無視すると、データの不整合が発生する可能性があります。
ステップ 6: インスタンスの購入と開始
[成功率] が 100% になるまで待ってから、[次へ: インスタンスの購入] をクリックします。
購入ページで、次のパラメーターを設定します。
セクション パラメーター 説明 新しいインスタンスクラス 課金方法 サブスクリプション:固定期間分を前払いします。長期利用に適しています。従量課金:時間単位で課金されます。短期利用に適しています。継続的な課金を避けるため、不要になったらインスタンスをリリースしてください。 リソースグループ設定 このインスタンスのリソースグループです。デフォルト:デフォルトリソースグループResource Management とは インスタンスクラス DTS は、同期速度が異なる複数のインスタンスクラスを提供します。スループット要件に基づいて選択してください。詳細については、「データ同期インスタンスのインスタンスクラス」をご参照ください。 サブスクリプション期間 サブスクリプション課金のみ:1~9 か月、または 1、2、3、5 年から選択します。 [Data Transmission Service (従量課金) サービス規約] を読んで選択します。
[購入して開始] をクリックし、確認ダイアログで [OK] をクリックします。
タスクがデータ同期ページに表示されます。そこで進行状況を監視できます。
タスクに完全同期と増分同期の両方が含まれている場合 ([同期タイプ] に [完全データ同期] と [増分データ同期] の両方が含まれている場合)、完全フェーズが完了すると、タスクリストに [増分データ同期] として表示されます。
次のステップ
同期タスクが実行された後、データが正しく流れていることを確認します。
データ同期ページでタスクのステータスを確認します。正常なタスクは [同期中] と表示されます。
タスク詳細で同期遅延を監視します。遅延が高いか増加している場合、ソースデータベースが DTS の適用速度よりも速く変更を生成しているか、ネットワークの問題でレプリケーションが遅くなっている可能性があります。
[モニタリングとアラート] を設定した場合、タスクの失敗と遅延のしきい値に対するアラートが設定されていることを確認します。
タスクが失敗した場合は、エラーの詳細を確認し、一般的な原因について「注意事項」セクションを参照してください。DTS のテクニカルサポートも、失敗したタスクを 8 時間以内に復元しようと試みます。