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をインストールした後、私のテストディレクトリは次のとおりです.をmasterが存在するipに変更します.
およびポート:
マスターを起動するには:
slaveの起動:
./redis-cliクライアントのデフォルト接続のポート番号は6379で、-pでポートを指定し、-hでホストを指定できます.
プロセスを表示すると、すでに2つのredisサービスが実行されていることがわかります.
slave接続情報を表示するには、次の手順に従います.
master_portは6379、master_host:192.168.6.205,master_link_status:up
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およびポート:
[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