数据迁移
数据迁移时,"建议"主库停止写入,从库停止运行,迁移完毕后恢复正常
save 文件迁移法
主服务器 10.0.40.200
redis-cli 客户端登录,输入命令获取持久化文件位置
config get dir
获取文件路径为 /var/lib/redis
输入命令 save 保存当前时刻数据
save
此时在文件路径下生产了一份最新数据的 dump.rdb 文件
从服务器 10.0.50.20 先停掉redis服务,用同样的方法获取文件保存路径
文件路径为 /usr/local/redis-5.0.7
将主服务器中报错的 dump.rdb 文件拷贝一份到此处覆盖掉
scp -P 22 dump.rdb root@10.0.50.20:/usr/local/redis-5.0.7
主从配置(一条命令完成主从)
主从配置基本上主库无需配置,主库从库如遇启动权限报错,可将配置文件中 pidfile 参数配置到有权限目录,配置成功后,从库默认无写权限,通过此
slave-read-only
参数控制
- 主库和从库都在需要在 redis.conf 中设置 daemonize yes 后台运行
- 从库 redis.conf
最下面一行添加主库链接信息
slaveof 10.0.40.200 6379
# 5.0版本后,命令为 replicaof
主从配置好以后,主服务器会执行一次bgsave
命令生成.RDB
文件并发送给从服务器,从服务器收到.RDB
文件之后再把数据全部进行加载(如果从服务器之前有数据也会被清空),完成全量数据同步
注意点
开启主从同步时,要合理设置生成rdb文件的时候缓冲区大小,参数为client-output-buffer-limit
,过大多小会导致复制的安全性
redis如何查看主从状态信息master和salve
info replication
副库
主库
持久化
Redis 提供两种持久化机制:RDB(默认)和 AOF 机制
RDB Redis DataBase
Redis默认的持久化方式。按照一定的时间将内存的数据以快照的形式保存到硬盘中,对应产生的数据文件为 dump.rdb。通过配置文件中的 save 参数来定义快照的周期。本质上为某一时刻的数据快照。
save 900 1
save 300 10
save 60 10000
# 900秒(15分钟)内至少1个key值改变(则进行数据库保存--持久化)
# 300秒(5分钟)内至少10个key值改变(则进行数据库保存--持久化)
# 60秒(1分钟)内至少10000个key值改变(则进行数据库保存--持久化)
AOF Append Only File
将Redis执行的每次写命令记录到单独的日志文件中(执行完命令后才记录日志的),当重启Redis 会重新将持久化的日志中文件恢复数据。与RDB相比,为每个操作的日志文件。
开启参数 appendonly no(默认) yes
具体同步模式 appendfsync 三个值
1. always,同步写回,每个子命令执行完,都立即将日志写回磁盘。
2. everysec,每个命令执行完,只是先把日志写到AOF内存缓冲区,每隔一秒同步到磁盘。
3. no:只是先把日志写到AOF内存缓冲区,有操作系统去决定何时写入磁盘。
手动触发
命令行也可在客户端手动触发持久化存储、同步
命令:save、bgsave,系统RDB持久化使用的为bgsave命令模式
内存
redis配置的最大内存容量。当内存满了,需要配合maxmemory-policy策略进行处理,为了防止主机内存使用完,建议设置的maxmemory需要更小一些
# 单位为字节
maxmemory 122000000
内存容量超过maxmemory后的处理策略。
lru策略
#volatile-lru:利用LRU算法移除设置过过期时间的key。
#allkeys-lru:利用LRU算法移除任何key。
ttl策略
#volatile-ttl:移除即将过期的key,根据最近过期时间来删除(辅以TTL)
随机策略
#volatile-random:随机移除设置过过期时间的key。
#allkeys-random:随机移除任何key。
抑制策略
#noeviction:不移除任何key,只是返回一个写错误。
示例
maxmemory-policy allkeys-lru