jasagiri @ ウィキ

RedisReplicationHOWTO

最終更新:

jasagiri

- view
管理者のみ編集可
ReplicationHowto
Redis レプリケーション Howto

総合案内

Redis レプリケーションは、slave Redis サーバが master サーバのコピーを持つことを許すことで master-slave レプリケーションとしてとてもシンプルに使うように設定出来ます。これは Redis レプリケーションにおけるとても重要な事実です。:

- 1つの master は複数の slaves を持つことが出来ます。
- Slaves は他の slaves コネクションを受け入れることが出来、同じ master に接続する代わりに他のたくさんの slaves をグラフ構造で接続することができます。
- Redis レプリケーションは master 側では非ブロックし、これは 1つ以上の slaves が最初の同期を実行している間、master はクエリを受け付け付けられることを意味します。代わりにレプリケーションは slave 側ではブロックされます。:  slave が最初の同期を実行している間クエリに答えることは出来ません。
- スケーラビリティのためにレプリケーションを使うことが出来、読み取り専用クエリを順番に多重 slaves が処理する (例えば、slaves に対して重い SORT 処理はを計画できます。), または単にデータの冗長性のために。
- master 側の保存プロセスを避けるためにレプリケーションを使うことが可能です。:あなたのmaster redis.conf を設定するだけですべての保存を順番に無効に出来ます。 (just comment al the "save" directives), それから時々保存するために構成した slave に接続してください。

どのように Redis レプリケーションは動作するか

まずはレプリケーションを開始し、それから接続を閉じ、次に master と一緒に再起動すると、クライアントは master に接続し、問題を SYNC コマンドします。

master はバックグラウンドを保存し始めると同時に、データセットを変更する効果のあった新しいコマンドが受けたすべてを集め始めます。バックグラウンドの保存が完了したとき、master は slave にデータベースファイルを転送し始め、ディスクに保存し、それからメモリにロードします。ここで master はすべての蓄積されたコマンドを送り始め、クライアントからデータセットの変更に効果があるすべての新しいコマンド受け取ります。

あなたは telnet で試すことが出来ます。サーバが何か仕事をしている間に Redis ポートに接続して、問題を SYNC コマンドで発行してください。あなたはバルク転送の次に master が受け取ったあらゆるコマンドが telnet セッションで再発行されているのがわかるでしょう。

Slaves は master <-> slave リンクが何かの理由で落ちるとき、自動で再接続します。もし master が複数同時に slave の同期要求を受け取ったとすると、それらすべては単にバックグラウンドに保存するだけです。

設定

レプリケーションを構成することは些細なことです。:単に次の行を slave 構成ファイルに追加するだけです。:

slaveof 192.168.1.1 6379

もちろん 192.168.1.1 6379 をあなたの master の IPアドレス(またはホスト名)とポートに置き換える必要があります。

タグ:

redis key-value storage
記事メニュー
人気記事ランキング
目安箱バナー