redis 搭建主从模式
redis 搭建主从模式
一、把redis 文件复制两份做slave
二、 copy配置文件(slave)
# 端口
port 6479
# 此参数确定TCP连接中已完成队列(3次握手之后)的长度
# 应小于Linux系统的/proc/sys/net/core/somaxconn的值
# 此选项默认值为511,而Linux的somaxconn默认值为128
# 当并发量比较大且客户端反应缓慢的时候,可以同时提高这两个参数。
tcp-backlog 511
# ip
#bind 127.0.0.1
# 保护模式 是否允许非本机连接个别系统不支持
# protected-mode no
# 客户端空闲N秒后断开连接,参数0表示不启用
timeout 0
# 指定ACKs的时间周期,单位为秒,值非0的情况表示将周期性的检测客户端是否可用,默认值为60秒。
tcp-keepalive 0
# 指定服务器信息显示的等级,4个参数分别为debug\verbose\notice\warning
loglevel notice
#指定日志文件,默认是使用系统的标准输出
logfile "redis_log_6479.log"
# 设置数据库的数量,默认启动时使用DB0,使用“select <dbid>”可以更换数据库
databases 16
# redis 持久化 RDB
# 900秒后保存,至少有1个key被更改时才会触发
# 300秒后保存,至少有10个key被更改时才会触发
# 60秒后保存,至少有10000个key被更改时才会触发
save 900 1
save 300 10
save 60 10000
# 最近一次save操作失败则停止写操作
stop-writes-on-bgsave-error yes
# 启用压缩
rdbcompression yes
# 启用CRC64校验码,当然这个会影响一部份性能
rdbchecksum yes
# 指定存储数据的文件名
dbfilename dump6479.rdb
# 指定工作目录,rdb文件和aof文件都会存放在这个目录中,默认为当前目录
dir ./
# 设置master端的IP与端口信息 不设置默认自己是master
slaveof 127.0.0.1 6481
#当slave端在主从复制的过程中与master端断开了连接
# 此时有2种处理方法:一种是继续提供服务即使数据可能不是最新的
# 另一种是对请求返回一个错误信息,默认配置是继续提供服务
slave-serve-stale-data yes
# 自redis 2.6版本开始,slave端默认为readonly
slave-read-only yes
# 默认不使用diskless同步方式
repl-diskless-sync no
# 无磁盘diskless方式在进行数据传递之前会有一个时间的延迟,以便slave端能够进入到待传送的目标队列中,这个时间默认是5秒
repl-diskless-sync-delay 5
# 是否启用TCP_NODELAY,如果启用则会使用少量的TCP包和带宽去进行数据传输到slave端,当然速度会比较慢;
# 如果不启用则传输速度比较快,但是会占用比较多的带宽。
repl-disable-tcp-nodelay no
# slave端的优先级设置,值是一个整数,数字越小表示优先级越高。当master故障时将会按照优先级来选择slave端进行恢复
# 如果值设置为0,则表示该slave永远不会被选择。
slave-priority 100
# 启用AOF模式
appendonly no
# 设置AOF记录的文件名
appendfilename "appendonly.aof"
# 向磁盘进行数据刷写的频率,有3个选项:
# 1 always 有新数据则马上刷写,速度慢但可靠性高
# 2 everysec 每秒钟刷写一次,折衷方法,所谓的redis可以只丢失1秒钟的数据就是源于此处
# 3 no 按照OS自身的刷写策略来进行,速度最快
appendfsync everysec
# 当主进程在进行向磁盘的写操作时,将会阻止其它的fsync调用
no-appendfsync-on-rewrite no
# aof文件触发自动rewrite的百分比,值为0则表示禁用自动rewrite
auto-aof-rewrite-percentage 100
# aof文件触发自动rewrite的最小文件size
auto-aof-rewrite-min-size 64mb
# 是否加载不完整的aof文件来进行启动
aof-load-truncated yes
# 置lua脚本的最大运行时间,单位为毫秒
lua-time-limit 5000
# redis的slow log是一个系统OS进行的记录查询,它是超过了指定的执行时间的。
# 执行时间不包括类似与client进行交互或发送回复等I/O操作,它只是实际执行指令的时间。
# 有2个参数可以配置,一个用来告诉redis执行时间,这个时间是微秒级的(1秒=1000000微秒),这是为了不遗漏命令。
# 另一个参数是设置slowlog的长度,当一个新的命令被记录时,最旧的命令将会从命令记录队列中移除。
slowlog-log-slower-than 10000
slowlog-max-len 128
# 延迟监控,用于记录等于或超过了指定时间的操作,默认是关闭状态,即值为0。
latency-monitor-threshold 0
# 事件通知,默认不启用,具体参数查看配置文件
notify-keyspace-events ""
# 当条目数量较少且最大不会超过给定阀值时,哈希编码将使用一个很高效的内存数据结构,阀值由以下参数来进行配置。
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
# 与哈希类似,少量的lists也会通过一个指定的方式去编码从而节省更多的空间,它的阀值通过以下参数来进行配置。
list-max-ziplist-entries 512
list-max-ziplist-value 64
# 集合set在一种特殊的情况时有指定的编码方式,这种情况是集合由一组10进制的64位有符号整数范围内的数字组成的情况。
# 以下选项可以设置集合使用这种特殊编码方式的size限制。
set-max-intset-entries 512
# 与哈希和列表类似,有序集合也会使用一种特殊的编码方式来节省空间
# 这种特殊的编码方式只用于这个有序集合的长度和元素均低于以下参数设置的值时。
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
# 设置HyeperLogLog的字节数限制,这个值通常在0~15000之间,默认为3000,基本不超过16000
hll-sparse-max-bytes 3000
# redis将会在每秒中抽出10毫秒来对主字典进行重新散列化处理,这有助于尽可能的释放内存
activerehashing yes
# 因为某些原因,client不能足够快的从server读取数据,那client的输出缓存限制可能会使client失连
# 这个限制可用于3种不同的client种类,分别是:normal、slave和pubsub。
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
# redis使用一个内部程序来处理后台任务,例如关闭超时的client连接,清除过期的key等等。
# 它并不会同时处理所有的任务,redis通过指定的hz参数去检查和执行任务。
# hz默认设为10,提高它的值将会占用更多的cpu,当然相应的redis将会更快的处理同时到期的许多key,以及更精确的去处理超时。
# hz的取值范围是1~500,通常不建议超过100,只有在请求延时非常低的情况下可以将值提升到100。
hz 10
# 当一个子进程要改写AOF文件,如果以下选项启用
# 那文件将会在每产生32MB数据时进行同步,这样提交增量文件到磁盘时可以避免出现比较大的延迟。
aof-rewrite-incremental-fsync yes
三、master的配置文件修改
slaveof 127.0.0.1 6481 删掉
相应的端口改一改
四、校验是否成功
启动: redis-server redis.config (三台)
连接:redis-cli -h 127.0.0.1 -p 6479
(连接成功)验证是否成功搭建 : info replication