リモートサーバーを使用して、redis スナップショット (dump.rdb
ファイル) を転送しました。scp
このリモートで redis サーバーを実行し、dump.rdb
ファイルからデータを復元する必要があります。どうやってやるの?
9 に答える
特に行うことはありません。新しいマシンに redis サーバーをインストールし、構成ファイルを編集するだけです。コピーしたばかりのダンプ ファイルの場所を指すように、次のパラメーターを変更するだけです。
# The filename where to dump the DB
dbfilename mydump.rdb
# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# Also the Append Only File will be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir /data/mydirectory/
最後に、redis サーバーを通常の方法で起動できます。
または、次のことができます。
- redis サーバー / インスタンスを停止します。たとえば、
service redis6379 stop
- dump.rdb ファイルを適切な場所 (例: ) にコピーします
cp /path/to/dump-6379.rdb /var/lib/redis/dump-6379.rdb
。適切なパーミッションを付与します (user:group は redis:redis およびモード 644 である必要があります)。 - redis サーバー / インスタンスを起動します。
service redis6379 start
ファイルを適切な場所にコピーする前に、redis サーバーを停止することが重要です。これは、Redis が終了する前にスナップショットを保存し、ファイルを置き換えるためです。
また、最初に既存の dump.rdb ファイルをバックアップすることもできます。
次のように、2 番目のサーバーでredisを開始します。
$ > redis-server /path/to/my/redis/configuration/file/redis.conf
上記のように、redis サーバーの起動時に指定した構成ファイル( redis.conf ) で名前 とファイル パスを検索するため、redis の起動時にrdbファイルが検索されます。
ファイル名とパスを指定するには、redis.confファイル テンプレートの2 行を編集するだけです (redis ソースのルート ディレクトリで提供されます)。サーバーの起動時に指定したディレクトリの場所に、改訂版を redis.conf として保存します。
必要な設定は、ソースの最上位ディレクトリのredis.confテンプレートの127行目と137行目(redis バージョン 2.6.9) にあります。
# The filename where to dump the DB
dbfilename dump.rdb
# The working directory
dir ./
ご覧のとおり、両方の設定にデフォルトが用意されています
したがって、これら 2 行の最初の行 (127) を変更して、rdb ファイルを識別し、2 行目 (137) で、スナップショット rdb ファイルの実際のファイル パスをデフォルトの「./」に置き換えます。変更を加えてredis.confを保存し、この新しい conf ファイルで redis の受け渡しを開始します。
appendonly no を設定してみてください。私の場合、*.aof ファイルは空 (0 バイト) でした。appendonly=no を設定してから、dump.rdb をロードする必要があります。
このソリューションは redis-cluster で機能しますが、redis でも機能するはずです。
この依存関係をインストールします https://github.com/sripathikrishnan/redis-rdb-tools
pip install rdbtools python-lzf
その後、これを実行します
rdb -c protocol /path/to/dump.rdb | redis-cli -h host -p port --pipe
これがクラスターの場合、ポートはマスターのポートにする必要があります。