redis-master-slave

redis主从复制特色:
    一、master能够拥有多个slave
    二、多个slave能够链接同一个master外,还能够链接到其余slave
    三、主从复制不会阻塞master,在同步数据时,master能够继续处理client请求
    四、提升系统的伸缩性 web

redis主从复制过程:

    当配置好slave后,slave与master创建链接,而后发送sync命令。不管是第一次链接仍是从新链接,master都会启动一个后台进程,将 数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存。后台进程完成写文件后,master就发送文件给slave,slave将 文件保存到硬盘上,再加载到内存中,接着master就会把缓存的命令转发给slave,后续master将收到的写命令发送给slave。若是master同时收到多个slave发来的同步链接命令,master只会启动一个进程来写数据库镜像,而后发送给全部的slave redis

redis主从复制配置:
    环境:Linux一台(192.168.6.205)、redis端口分别为637九、6370
    安装好redis以后个人测试目录是这样的: shell

[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 <masterip> <masterport>为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

启动master: 数据库

[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指定主机。

查看进程能够看到已经有两个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链接信息: spa

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
相关文章
相关标签/搜索