6

Debian マシンでマスターとスレーブの同期をセットアップしようとしました。ログに常にそのエラーが表示され、一時ファイルの場所がわかりません =/

[9559] 31 Jul 11:48:17 * Connecting to MASTER...
[9559] 31 Jul 11:48:17 * MASTER <-> SLAVE sync started
[9559] 31 Jul 11:48:17 * Non blocking connect for SYNC fired the event.
[9559] 31 Jul 11:48:22 # Opening the temp file needed for MASTER <-> SLAVE synchronization: Permission denied

皆さんが私を助けてくれることを願っています:)

4

2 に答える 2

8

ほとんどの場合、redis-serverプロセスを実行しているユーザーは作業ディレクトリにアクセスできません。

redis.conf(ほとんどの場合/etc/redis.conf) を確認し、設定を見つけますdir(「作業ディレクトリ」を検索してそれとそのドキュメントを見つけます)。ディレクトリが を実行しているユーザーによって書き込み可能であることを確認してredis-serverください。

于 2012-07-31T10:07:09.513 に答える
6

実際には、マスターが SYNC 時に生成するファイルは通常のスナップショット ファイル (つまり、rdb ファイル) であり、他のすべての rdb ファイルと同じ場所に書き込まれます。

この場所は、マスター インスタンスの Redis 構成ファイルで設定されます。dir および dbfilename パラメーターを参照してください。

たとえば、/data/redis/dump.rdb でダンプを生成するには

# The filename where to dump the DB
dbfilename dump.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/redis

もちろん、Redis が起動されるユーザーには、この場所への適切なアクセス権が必要です。

ここで、スレーブ側で、マスターから読み取られたダンプ ファイルが一時ファイルにコピーされ、その名前は temp-%d.%ld.rdb のようなものになります (タイムスタンプと pid を含む)。このファイルは、スレーブ インスタンスの構成の dir パラメータに対応する作業ディレクトリに作成されます。そのため、スレーブ側で RDB がアクティブでない場合でも、dir パラメータを正しく設定し、適切なアクセス権を持つディレクトリを指定する必要があります。

于 2012-07-31T10:07:03.440 に答える