您的位置:首页 > 数据库 > Redis

Redis主从持久化测试

2012-12-03 15:57 253 查看
1:redis主从环境,均未开启持久化;

当主实例宕机,从实例上的数据不受影响;

当主恢复后,主实例上的数据将会继续同步到从实例,即原来的值将变为空值;

[root@server11 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.112 -a 123 info |grep -A 3 'Replication'

# Replication

role:master

connected_slaves:1

slave0:192.168.1.113,6379,online
[root@server11 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.112 -a 123

redis 192.168.1.112:6379> set 1 a

OK

redis 192.168.1.112:6379> get 1

"a"
[root@server11 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.112 -a 123 shutdown
[root@server12 ~]# tail -f /var/log/messages

Dec 3 15:27:34 server12 redis[32151]: Connecting to MASTER...

Dec 3 15:27:34 server12 redis[32151]: MASTER <-> SLAVE sync started

Dec 3 15:27:34 server12 redis[32151]: Error condition on socket for SYNC: Connection refused
[root@server12 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.113 -a 123

redis 192.168.1.113:6379> get 1

"a"
[root@server11 ~]# /usr/local/redis2/bin/redis-server /usr/local/redis2/etc/redis.conf

[root@server11 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.112 -a 123

redis 192.168.1.112:6379> get 1

(nil)

redis 192.168.1.112:6379> exit
[root@server11 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.113 -a 123

redis 192.168.1.113:6379> get 1

(nil)

2:redis主从环境,从实例开启快照持久化

当主实例宕机,从实例上的数据不受影响;

当主恢复后,主实例上的数据将会继续同步到从实例,即原来的值将变为空值;
[root@server11 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.112 -a 123

redis 192.168.1.112:6379> get 1

(nil)

redis 192.168.1.112:6379> set 1 a

OK

redis 192.168.1.112:6379> set 2 b

OK

redis 192.168.1.112:6379> exit
[root@server11 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.112 -a 123 shutdown
[root@server12 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.113 -a 123

redis 192.168.1.113:6379> get 1

"a"

redis 192.168.1.113:6379> get 2

"b"

redis 192.168.1.113:6379> exit

[root@server11 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.112 -a 123

redis 192.168.1.112:6379> get 1

(nil)

redis 192.168.1.112:6379> get 2

(nil)

redis 192.168.1.112:6379> exit

[root@server12 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.113 -a 123

redis 192.168.1.113:6379> get 1

(nil)

redis 192.168.1.113:6379> get 2

(nil)

redis 192.168.1.113:6379> exit
3:推进一层,当主,从实例均宕机的情况下会如何呢?

[root@server11 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.112 -a 123

redis 192.168.1.112:6379> set 1 a

OK

redis 192.168.1.112:6379> set 2 b

OK

redis 192.168.1.112:6379> set 3 c

OK

redis 192.168.1.112:6379> exit

[root@server11 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.113 -a 123

redis 192.168.1.113:6379> get 1

"a"

redis 192.168.1.113:6379> get 2

"b"

redis 192.168.1.113:6379> get 3

"c"

redis 192.168.1.113:6379> exit

这次先关闭从实例,再关闭主实例!启动则先启动从实例,测试数据;再启动主实例,再测试数据!

[root@server11 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.112 -a 123 shutdown

[root@server12 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.113 -a 123 shutdown

[root@server12 ~]# /usr/local/redis2/bin/redis-server /usr/local/redis2/etc/redis.conf

[root@server11 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.113 -a 123

redis 192.168.1.113:6379> get 1

"a"

redis 192.168.1.113:6379> get 2

"b"

redis 192.168.1.113:6379> get 3

"c"

[root@server11 ~]# /usr/local/redis2/bin/redis-server /usr/local/redis2/etc/redis.conf

[root@server11 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.112 -a 123

redis 192.168.1.112:6379> get 1

(nil)

redis 192.168.1.112:6379> get 2

(nil)

redis 192.168.1.112:6379> get 3

(nil)

redis 192.168.1.112:6379> exit

[root@server11 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.113 -a 123

redis 192.168.1.113:6379> get 1

(nil)

redis 192.168.1.113:6379> get 2

(nil)

redis 192.168.1.113:6379> get 3

(nil)

redis 192.168.1.113:6379> exit
实践证明,在redis主从读写分离条件下,快照持久化只有开在主实例侧才可以保证数据可以跨越实例重启!

[root@server11 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.112 -a 123

redis 192.168.1.112:6379> set 1 a

OK

redis 192.168.1.112:6379> set 2 b

OK

redis 192.168.1.112:6379> set 3 c

OK

redis 192.168.1.112:6379> set 4 d

OK

redis 192.168.1.112:6379> exit

[root@server11 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.113 -a 123

redis 192.168.1.113:6379> get 4

"d"

redis 192.168.1.113:6379> exit

[root@server11 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.112 -a 123 shutdown

[root@server12 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.113 -a 123 shutdown

[root@server11 ~]# /usr/local/redis2/bin/redis-server /usr/local/redis2/etc/redis.conf

[root@server12 ~]# /usr/local/redis2/bin/redis-server /usr/local/redis2/etc/redis.conf

[root@server11 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.112 -a 123 get 4

"d"

[root@server11 ~]# /usr/local/redis2/bin/redis-cli -h 192.168.1.113 -a 123 get 4

"d"
本文出自 “斩月” 博客,谢绝转载!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: