通过配置两台(或多台)数据库的主从关系,可以将一台数据库服务器的数据更新同步到另一台服务器上。
3、用vim编辑从服务器的redis.conf(自己的启动配置文件)
命令 vim /usr/local/redis/etc/redis.conf
3.1 slaveof 192.168.0.100 6379 格式是 slaveof 主机ip 主机端口
3.2 #bind127.0.0.1 注销绑定,可以允许所有的ip连接登录到这台redis服务上
3.3 protected-mode no 关闭保护模式
注意:还需要开放6379端口,centos7 默认使用的防火墙是firewall即使关闭防火墙也还是连不上端口
1、systemctl status firewalld 查看防火墙状态
2、systemctl start firewalld 启动防火墙
3、firewall-cmd --zone=public --add-port=6379/tcp --permanent 永久开放6379端口
4、firewall-cmd --reload 更新防火墙规则
5、systemctl restart firewalld.service 重启防火墙
6、firewall-cmd --query-port=6379/tcp 查询是否开放了6379端口
7、systemctl stop firewalld 关闭防火墙
4、检查从机是否能访问主机的6379端口
命令 telnet 192.168.0.104 6379 测试端口
使用 Ctrl + ] 退出telnet连接 quit退出
命令 /usr/local/redis/bin/redis-cli
4、分别执行在cli端执行info命令
5、观察结果
master端
slave1端
slave2端
master端
slave1端
slave2端
1、master可以有多台slave
2、除了多个slave连到相同master外,slave也可以连接到其它slave形成图状结构
3、主从复制不会阻塞master,也就是说当一个或多个slave与master连接进行复制时,master可以继续处理客户端发来的请求
4、主从复制可以用来提高系统的伸缩性,我们可以用多个slave专门负责客户端的读请求,可以做数据冗余
有了主从复制的实现以后,如果我们想对主从服务器进行监控,那么在redis2.6以后提供了一个"哨兵"的机制。在2.6版本中的哨兵为1.0版本,并不稳定,会出现各种各样的问题,在2.8版本以后的哨兵功能才稳定起来。
顾名思义,哨兵的含义就是监控Redis系统的运行状态。可以启动多个哨兵,去监控Redis数据库的运行状态。其主要功能有两点:
1、监控主数据库和从数据库是否正常运行。
2、主数据库出现故障时,可以自动将从数据库转换为主数据库,实现自动切换。
哨兵机制模型
在其中的一个slave配置哨兵(也可以配置在主服务器)
注意:因为原来的slave1、slave2会被自动选举为主服务器所以在它的配置文件中要配置(#bind127.0.0.1 protected-mode no 以及开放6379端口),最好使用telnet +ip + 端口 测试一下。
1、copy 文件/usr/local/redis/redis-4.0.8/sentinel.conf(自己的redis的sentinel.conf文件) 到 /usr/local/redis/etc路径中命令 cp /usr/local/redis/redis-4.0.8/sentinel.conf /usr/local/redis/etc/
2、修改 sentinel.conf 文件 vim/usr/local/redis/etc/sentinel.conf
1) dir "/usr/local/redis/etc" 数据存放目录
2) protected-mode no 关闭保护模式
3) sentinel monitor mymaster192.168.43.201 6379 1 格式是master 的名称、 ip 、地址、端口号,以及失败时选出master的投票数量
4) sentineldown-after-milliseconds mymaster5000 超时5000毫秒为宕机
5) sentinelparallel-syncsmymaster 2 从服务器的个数
3、启动sentinel哨兵 命令/usr/local/redis/bin/redis-server /usr/local/redis/etc/sentinel.conf --sentinel&
5、关闭主服务器,查看集群信息 命令 /usr/local/redis/bin/redis-cli shutdown
可以看出当主服务器192.168.43.201 宕机之后选举192.168.43.64 为新的主服务器6、查看剩余的两个redis服务器的信息
192.168.43.64端
可以看出192.168.43.64已经自动变为主服务器了
192.168.43.106端
Redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到硬盘里面来保证数据的持久化。Redis支持两种持久化的实现,snapshotting (rdb)的持久化机制(快照)、append-only file(缩写aof)的持久化机制,可以通过启动配置文件(redis.conf)进行指定,默认采用rdb
Snapshotting机制,将内存中的数据以快照的方式写入到二进制文件中。默认的文件名称为dump.rdb.可以通过配置设置自动做快照持久化的方式。我们可以配置redis在n秒内如果超过m个写入就自动做快照。
注意配置dir "/usr/local/redis/etc/" 指定dump.rdb文件的存放路径
在配置文件redis.cof里面,snapshotting的默认配置为:
save 900 1 900秒内执行1次写操作,自动做快照。
save 300 10 300秒内执行10次写操作,自动做快照。
save 60 10000 60秒内执行10000次写操作,自动做快照。
append-only file方式,有点类似Oracle的日志文件。 由于快照方式是经过一定的时间间隔做一次快照,所以可能会在redis发生意外的情况下丢失最后一次快照后的所有修改的数据。aof 比快照方式有更好的持久化性能,是因为由于在使用aof 的时候,redis会将每一个收到的写命令都通过write 函数追加到文件里面,当redis重新启动的时候会重新执行文件中保存的写命令来在内存里面重建数据库的内容。默认的文件名为appendonly.aof
注意配置dir "/usr/local/redis/etc/" 指定appendonly.aof文件的存放路径
aof 常见的设置:
appendonly yes 启动aof 的持久化机制,同时快照方式的持久化机制会失去作用
appendfsync always 收到写命令就立即持久化到磁盘,效率最慢,但是保证完全的持久化 (通常采用)
appendfsync everysec 每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中
appendfsync no 完全依赖os 性能最好,持久化没有保证
进行检测
配置完毕之后启动redis服务,会在/usr/local/redis/etc/目录下出现appendonly.aof文件,因为没有做任何操作所以是空白的
进行一些操作 set name z3 set age 30 set sex nan
打开appendonly.aof文件进行查看 命令 vim /usr/local/redis/etc/appendonly.aof