redis主从切换介绍

1、这次案例的是选择windows版本,把redis复制三份,监听端口分别是6379、6380、6381

redis主从切换介绍_第1张图片

分别复制2份,修改redis.conf的端口port 为6380 6381,并添加master服务说明:slaveof 127.0.0.1 6379

启动主节点,然后再分别启动分节点,如果是在正式环境,分节点的启动间隔时间不宜太短,同时启动,master需要把数据同步到各个slave,造成资源消耗大,所以会间隔两分钟左右启动slave。

启动的时候,可以直接进入软件目录,使用dos命令启动,如果直接点击redis-server.exe,启动配置默认端口还是6379,所以用dos命令启动。

依次进入master和2个slave的目录下,启动redis服务:redis-server.exe redis.conf

master

redis主从切换介绍_第2张图片

slave

redis主从切换介绍_第3张图片

redis主从切换介绍_第4张图片

使用Jedis进行连接查看,测试信息

6379信息:redis_version:2.4.5
redis_git_sha1:00000000
redis_git_dirty:0
arch_bits:64
multiplexing_api:winsock2
process_id:14532
uptime_in_seconds:1439
uptime_in_days:0
lru_clock:1022289
used_cpu_sys:0.51
used_cpu_user:0.30
used_cpu_sys_children:0.00
used_cpu_user_children:0.00
connected_clients:1
connected_slaves:2
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
used_memory:1211928
used_memory_human:1.16M
used_memory_rss:1211928
used_memory_peak:1211872
used_memory_peak_human:1.16M
mem_fragmentation_ratio:1.00
mem_allocator:libc
loading:0
aof_enabled:0
changes_since_last_save:0
bgsave_in_progress:0
last_save_time:1541142748
bgrewriteaof_in_progress:0
total_connections_received:7
total_commands_processed:40
expired_keys:0
evicted_keys:0
keyspace_hits:36
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
vm_enabled:0
role:master
db0:keys=19,expires=0
db6:keys=1,expires=0

6380信息:redis_version:2.4.5
redis_git_sha1:00000000
redis_git_dirty:0
arch_bits:64
multiplexing_api:winsock2
process_id:14548
uptime_in_seconds:1423
uptime_in_days:0
lru_clock:1022289
used_cpu_sys:0.51
used_cpu_user:0.14
used_cpu_sys_children:0.00
used_cpu_user_children:0.00
connected_clients:2
connected_slaves:0
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
used_memory:1203480
used_memory_human:1.15M
used_memory_rss:1203480
used_memory_peak:1203424
used_memory_peak_human:1.15M
mem_fragmentation_ratio:1.00
mem_allocator:libc
loading:0
aof_enabled:0
changes_since_last_save:0
bgsave_in_progress:0
last_save_time:1541143334
bgrewriteaof_in_progress:0
total_connections_received:4
total_commands_processed:131
expired_keys:0
evicted_keys:0
keyspace_hits:14
keyspace_misses:2
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
vm_enabled:0
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
db0:keys=20,expires=0
db6:keys=1,expires=0

如果此时停止6379,那么就剩两个从节点,要使6380成为新的节点,就要启动redis-cli.exe,

slaveof no one,设置成新的节点。

redis主从切换介绍_第5张图片

这样就可以在6380新的主节点上操作

redis主从切换介绍_第6张图片

当原来的主节点恢复启动后,先将原来的主节点设置为从节点,这样就可以从当前主节点获取最新的数据。当前主节点是6380,所以先将6379设置为从节点,这样可以从主节点获取

redis主从切换介绍_第7张图片

6380的数据也就恢复过来了,然后将6380设置为从节点,6379设置为主节点

redis主从切换介绍_第8张图片

redis主从切换介绍_第9张图片

Redis主从复制(一主两从/一主多从)的分析

IO剧增 
每次slave断开以后(无论是主动断开,还是网路故障)再连接master都要将master全部dump出来rdb,在aof,即同步的过程都要重新执行一遍;所以要记住多台slave不要一下都启动起来,否则master可能IO剧增(间隔1-2分)

复制延迟 
由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。

可用性不高 
当有主节点发生异常情况,就会导致不能写入,导致业务出错!

1、redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。

2、通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力。主数据库主要进行写操作,而从数据库负责读操作。
 

你可能感兴趣的:(数据库)