redis学习6---主从环境配置
更新:HHH   时间:2023-1-7


1、编译安装

过程省略


2、主从配置

vi /data/usr/redis-4.0.11/conf/redis.conf

master:

bind 127.0.0.1 192.168.121.121

daemonize yes

logfile "/data/usr/redis-4.0.11/logs/redis.log"

pidfile /data/usr/redis-4.0.11/run/redis_6379.pid

dir /data/usr/redis-4.0.11/data

requirepass Redis2019!


slave:

bind 127.0.0.1 192.168.121.122

daemonize yes

logfile "/data/usr/redis-4.0.11/logs/redis.log"

pidfile /data/usr/redis-4.0.11/run/redis_6379.pid

dir /data/usr/redis-4.0.11/data

requirepass Redis2019!

masterauth Redis2019!

slaveof 192.168.121.121 6379


3、查看主从状态

master:

redis-cli -a Redis2019!

Warning: Using a password with '-a' option on the command line interface may not be safe.

127.0.0.1:6379> INFO reolication

127.0.0.1:6379> INFo replication

# Replication

role:master

connected_slaves:1

slave0:ip=192.168.121.122,port=6379,state=online,offset=24486,lag=1

master_replid:7ad1fd1b943f347c73970ccf1e50a51f9e17ad2d

master_replid2:0000000000000000000000000000000000000000

master_repl_offset:24486

second_repl_offset:-1

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:1

repl_backlog_histlen:24486


slave:

redis-cli -h 192.168.121.122 -p 6379 -a Redis2019!

Warning: Using a password with '-a' option on the command line interface may not be safe.

192.168.121.122:6379> INFO replication

# Replication

role:slave

master_host:192.168.121.121

master_port:6379

master_link_status:up

master_last_io_seconds_ago:7

master_sync_in_progress:0

slave_repl_offset:24570

slave_priority:100

slave_read_only:1

connected_slaves:0

master_replid:7ad1fd1b943f347c73970ccf1e50a51f9e17ad2d

master_replid2:0000000000000000000000000000000000000000

master_repl_offset:24570

second_repl_offset:-1

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:1

repl_backlog_histlen:24570


4、主从模式及持久化

redis的主从模式是异步模式,slave节点异步的从master节点复制数据,master节点提供读写,slave节点只提供读服务,此为默认配置,可以修改配置文件的 slave-read-only 参数做出改变,把yes替换为no,即是把slave节点的只读限制打开,master节点可以有多个slave节点。


快照持久化,即RDB文件持久化,是默认的持久化方式。按照一定的策略周期性的将数据保存到磁盘,对应产生的数据文件为dump.rdb,默认该文件保存在启动服务时所在目录下。redis借助fork命令的copy on write机制,在生成快照时,将当前进程fork一个子进程,然后子进程循环执行所有的命令,将数据写入,称为RDB文件。Client可以使用save或者dbsave命令通知redis做一次快照持久化。save操作是主线程中保存快照的,由于redis是用一个主线程来处理所有client的请求,这种方式会阻塞所有client请求,所以不推荐使用save操作。另外,每次快照持久化都是将内存数据完整写入到磁盘一次,并不是增量的,如果要同步的数据量大的话,且写操作比较多,必然会使得磁盘产生大量的io操作,有可能会严重影响磁盘性能。


基于快照文件的主从同步:

slave第一次向master发出同步请求,master首先dump出rdb文件


持久化的默认设置:

save 900 1 # 900秒后至少1个key有变动save

save 300 10 # 300秒后至少10个key有变动save

save 60 10000 # 60秒后至少10000个key有变动save


stop-writes-on-bgsave-error yes # 错误处理,默认情况下,如果redis在后台生成快照的时候失败,那么就会停止接收数据,目的是让用户能知道数据没有持久化成功。


rdbcompression yes # 数据压缩,默认会采用LZF对数据进行压缩,如果想节省CPU性能,可以把压缩功能禁用,但是数据集就会比没压缩的大。


rdbchecksum yes # 数据校验,一个CRC64的校验放在文件末尾,用来保证文件的完整性,但是在保存和加载文件时会损失一定性能(10%左右)


dbfilename dump.rdb # 持久化文件


dir ./ # 文件保存目录,在哪里执行启动命令,文件就保存在哪里


返回关系型数据库教程...