redis-cli ツールを使用して、自主管理 Redis データベースから Tair (Redis OSS-compatible) インスタンスへ、AOF (Append Only File) を介してデータをインポートします。この手法はオフラインデータ移行のみを対象としており、リアルタイム同期には対応していません。計画メンテナンスウィンドウ中、またはソースインスタンスへの新規データ書き込みが行われていない状態で移行を実行してください。
リアルタイム移行の場合は、代わりに Data Transmission Service (DTS) を使用してください。詳細については、「自主管理 Redis データベースから Tair (Redis OSS-compatible) インスタンスへのデータ移行」をご参照ください。
前提条件
開始前に、以下の点を確認してください。
クライアントの IP アドレスが、Tair (Redis OSS-compatible) インスタンスのホワイトリストに登録されていること。詳細については、「ホワイトリストの設定」をご参照ください。
自主管理 Redis インスタンスで AOF 永続化が有効になっていること。無効な場合は、以下のコマンドを実行します。
CONFIG SET appendonly yes自主管理 Redis インスタンスでハイブリッド永続化が無効になっていること。パラメーター
aof-use-rdb-preambleがyesに設定されている場合、AOF ファイルに redis-cli が解析できないバイナリ RDB ヘッダーが含まれ、インポートが失敗します。自主管理インスタンスが Redis 5.0 以降を実行している場合は、以下のコマンドを実行します。CONFIG SET aof-use-rdb-preamble no
データ移行
ステップ 1:AOF 再書き込みの実行
アクティブな AOF は、冗長なコマンドを含むすべてのコマンドを時間とともに蓄積します。たとえば、カウンターを 100 回増分すると、100 個の個別のエントリが生成されます。BGREWRITEAOF を実行すると、これらのコマンドが最短の等価シーケンスに圧縮され、最新かつ最も効率的なスナップショットを取得できます。
redis-cli -h <self-managed-instance-ip> -p <port> BGREWRITEAOF期待される出力:
Background append only file rewriting startedステップ 2:AOF を Tair インスタンスへインポート
以下の例では、appendonly.aof というファイルをインポートします。
redis-cli -h <tair-instance-endpoint> -p <port> -a <password> --pipe < appendonly.aof例:
redis-cli -h r-bp1zxszhcgatnx****.redis.rds.aliyuncs.com -p 6379 -a user:password --pipe < appendonly.aof期待される出力:
All data transferred. Waiting for the last reply...
Last reply received from server.
errors: 0, replies: 90上記と同様のメッセージが返された場合、移行は成功しています。
次のステップ
移行完了後、自主管理インスタンスで AOF 永続化が不要になった場合は、無効化してください。
redis-cli -h <self-managed-instance-ip> -p <self-managed-instance-port> CONFIG SET appendonly noよくある質問
インポート中に「ERR Protocol error: too big inline request」というエラーが発生しました。
このエラーは、ハイブリッド永続化によって生成されたバイナリ RDB ヘッダーが AOF ファイルに含まれていることを意味します。自主管理インスタンスで CONFIG GET aof-use-rdb-preamble を実行し、現在の値を確認してください。戻り値が yes の場合、CONFIG SET aof-use-rdb-preamble no を実行し、BGREWRITEAOF を実行して AOF ファイルを再生成したうえで、再度インポートを試行してください。
Tair インスタンスから AOF ファイルをエクスポートできますか?
いいえ。Tair (Redis OSS-compatible) インスタンスは AOF エクスポートをサポートしていません。
インポート中に「ERR syntax error」というエラーが発生しました。
Tair インスタンスのバージョンが、自主管理 Redis インスタンスのバージョンより古い可能性があります。自主管理インスタンスのバージョンと同等以上、またはそれより新しいバージョンの Tair インスタンスをご購入ください。たとえば、自主管理インスタンスが Redis 7.0 と互換である場合、Tair インスタンスも Redis 7.0 と互換である必要があります。