redis-master-slave

4309 ワード

redis主従レプリケーションの特徴:1、masterは複数のslave 2を持つことができ、複数のslaveは同じmasterに接続することができるほか、他のslave 3に接続することができ、主従レプリケーションはmasterをブロックしない.データを同期する時、masterはclient要求4を処理し続けることができ、システムの伸縮性redis主従レプリケーションプロセスを高めることができる:
slaveを構成すると、slaveはmasterに接続され、syncコマンドが送信されます.最初の接続でも再接続でも、masterはバックグラウンド・プロセスを開始し、データベース・スナップショットをファイルに保存し、masterメイン・プロセスは新しい書き込みコマンドの収集とキャッシュを開始します.バックグラウンドプロセスがファイルの書き込みを完了すると、masterはslaveにファイルを送信し、slaveはファイルをハードディスクに保存し、メモリにロードし、masterはキャッシュされたコマンドをslaveに転送し、その後masterは受け取った書き込みコマンドをslaveに送信します.masterが複数のslaveから同期接続コマンドを同時に受信した場合、masterはデータベースミラーを書き込み、すべてのslaveに送信するプロセスを開始するだけです.
redis主従レプリケーション構成:環境:Linux 1台(192.168.6.205)、redisポート6379、6370 redisをインストールした後、私のテストディレクトリは次のとおりです.
[root@web01 redis]# pwd
/usr/local/redis
[root@web01 redis]# ls
master  master-redis-2.8.1  slave  slave-redis-2.8.1
master、slaveは私が新しく作ったディレクトリで、次はbin、ectディレクトリでそれぞれのredisコマンドとプロファイルを保存します.
[root@web01 bin]# pwd
/usr/local/redis/master/bin
[root@web01 bin]# ls
dump.rdb  mkreleasehdr.sh  redis-benchmark  redis-check-aof  redis-check-dump  redis-cli  redis-sentinel  redis-server
[root@web01 etc]# pwd
/usr/local/redis/master/etc
[root@web01 etc]# ls
master-redis.conf
[root@web01 bin]# pwd
/usr/local/redis/slave/bin
[root@web01 bin]# ls
dump.rdb  mkreleasehdr.sh  redis-benchmark  redis-check-aof  redis-check-dump  redis-cli  redis-sentinel  redis-server
[root@web01 etc]# pwd
/usr/local/redis/slave/etc
[root@web01 etc]# ls
slave-redis.conf
   /usr/local/bin:
[root@web01 redis]# pwd
/usr/local/bin/redis
[root@web01 redis]# ls
master  slave
構成:プライマリ・サービスは動いておらず、slaveの構成ファイルでのみ#slaveofをmasterが存在するipに変更します.
およびポート:
[root@web01 master]# cd /usr/local/redis/slave/etc/
[root@web01 etc]# vi slave-redis.conf 
# slaveof <masterip> <masterport>
slaveof 192.168.6.205 6379

マスターを起動するには:
[root@web01 etc]# ps -ef |grep redis
root      6830  5985  0 13:54 pts/2    00:00:00 grep redis
[root@web01 bin]# cd /usr/local/redis/master/bin/
[root@web01 bin]# ./redis-server /usr/local/redis/master/etc/master-redis.conf
接続master:
[root@web01 bin]# ./redis-cli 
127.0.0.1:6379> keys *
1) "aaaaaaaaaaa"
2) "security"
3) "mm"
4) "a"
master接続情報を表示します.
127.0.0.1:6379> info
...
config_file:/usr/local/redis/master/etc/master-redis.conf
# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
この時点でredis roleがmasterであることがわかります
slaveの起動:
[root@web01 bin]# cd /usr/local/redis/slave/bin/
[root@web01 bin]# ./redis-server /usr/local/redis/slave/etc/slave-redis.conf
接続slave:
[root@web01 bin]# ./redis-cli -p 6370
127.0.0.1:6370> keys *
1) "mm"
2) "a"
3) "security"
4) "aaaaaaaaaaa"
には、接続情報が127.0.0.1:6370>であり、masterのデータが同期されていることがわかります.
./redis-cliクライアントのデフォルト接続のポート番号は6379で、-pでポートを指定し、-hでホストを指定できます.
プロセスを表示すると、すでに2つのredisサービスが実行されていることがわかります.
[root@web01 bin]# ps -ef |grep redis
root      6835     1  0 13:56 ?        00:00:00 ./redis-server *:6379                                       
root      6866     1  0 14:01 ?        00:00:00 ./redis-server *:6370                                     
root      6895  4071  0 14:05 pts/1    00:00:00 grep redis

slave接続情報を表示するには、次の手順に従います.
127.0.0.1:6370> info
...
config_file:/usr/local/redis/slave/etc/slave-redis.conf
...
# Replication
role:slave
master_host:192.168.6.205
master_port:6379
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_repl_offset:463
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
redis roleがslaveであることがわかります.
master_portは6379、master_host:192.168.6.205,master_link_status:up