#RDB 和 AOF
RDB 是一个非常紧凑(compact)的文件,它保存了 Redis 在某个时间点上的数据集,可以 24 小时备份一次,可以每小时备份一次 ,RDB 非常适用于灾难恢复(disaster recovery):它只有一个文件,并且内容都非常紧凑,RDB 可以最大化 Redis 的性能。如果需要尽量避免在服务器故障时丢失数据,那么 RDB 并不适合,因为RDB 文件需要保存整个数据集的状态,因此可能至少 5 分钟才保存一次 RDB 文件,在这种情况下,一旦发生故障停机,可能会丢失好几分钟的数据。
AOF 文件是一个只进行追加操作的日志文件,AOF 持久化会让 Redis 变得非常耐久(much more durable):设置不同的 fsync 策略,比如无 fsync ,每秒钟一次 fsync ,或者每次执行写入命令时 fsync 。AOF 的默认策略为每秒钟 fsync 一次,在这种配置下,Redis 仍然可以保持良好的性能,并且就算发生故障停机,也最多只会丢失一秒钟的数据( fsync 会在后台线程执行,所以主线程可以继续努力地处理命令请求)。对于相同的数据集来说,AOF 文件的体积通常要大于 RDB 文件的体积。根据所使用的 fsync 策略,AOF 的速度可能会慢于 RDB 。
一般来说,如果想达到足以媲美 PostgreSQL 的数据安全性, 你应该同时使用两种持久化功能。如果你非常关心你的数据,但仍然可以承受数分钟以内的数据丢失, 那么你可以只使用 RDB 持久化。有很多用户都只使用 AOF 持久化, 但我们并不推荐这种方式: 因为定时生成 RDB 快照(snapshot)非常便于进行数据库备份, 并且 RDB 恢复数据集的速度也要比 AOF 恢复的速度要快, 除此之外, 使用 RDB 还可以避免之前提到的 AOF 程序的 bug 。
#连接实例
redis-cli -h 10.205.20.8 -p 6379 -c
-c表示集群模式
#注意
错误 /usr/bin/env: ruby: No such file or directory,解决方法:
apt-get install ruby
Redis集群需要开放端口号+10000(集群内部使用端口),不然集群连接不上
#启动Redis集群镜像,Docker中必须使用host模式
docker run -itd --net host --name redis-cluster 10.170.232.47:5000/redis3.2
进入容器,分别启动以下实例:
redis-server /opt/cachecloud/conf/static/redis-cluster-6379.conf > /opt/cachecloud/logs/redis-6379.log 2>&1 &
redis-server /opt/cachecloud/conf/static/redis-cluster-6380.conf > /opt/cachecloud/logs/redis-6380.log 2>&1 &
redis-server /opt/cachecloud/conf/static/redis-cluster-6381.conf > /opt/cachecloud/logs/redis-6381.log 2>&1 &
redis-server /opt/cachecloud/conf/static/redis-cluster-6382.conf > /opt/cachecloud/logs/redis-6382.log 2>&1 &
redis-server /opt/cachecloud/conf/static/redis-cluster-6383.conf > /opt/cachecloud/logs/redis-6383.log 2>&1 &
redis-server /opt/cachecloud/conf/static/redis-cluster-6384.conf > /opt/cachecloud/logs/redis-6384.log 2>&1 &
创建集群
redis-trib.rb create --replicas 1 10.205.20.8:6379 10.205.20.8:6380 10.205.20.8:6381 10.205.20.8:6382 10.205.20.8:6383 10.205.20.8:6384
选项–replicas 1 表示为集群中的每个主节点创建一个从节点
#redis-cluster-6379.conf配置
bind 10.172.240.66
protected-mode yes
tcp-backlog 511
timeout 0
tcp-keepalive 0
daemonize no
loglevel notice
databases 16
slave-serve-stale-data yes
slave-read-only yes
slave-priority 100
repl-ping-slave-period 10
repl-timeout 60
repl-disable-tcp-nodelay no
repl-backlog-size 10mb
repl-backlog-ttl 7200
maxmemory 256mb
maxmemory-policy volatile-lru
no-appendfsync-on-rewrite yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 512mb 128mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
port 6379
dbfilename dump-6379.rdb
dir /opt/cachecloud/data
appendonly no
appendfsync everysec
appendfilename appendonly-6379.aof
auto-aof-rewrite-percentage 94
auto-aof-rewrite-min-size 64mb
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage no
aof-rewrite-incremental-fsync yes
网友评论