主从复制: 复制概念中分为两类数据库,一类是主数据库(master),一类是从数据(slave),主 数据库可以进行读写操作,并把写的操作同步给从数据库,一般从数据库是只读的。(读写分 离)一个主数据库可以有多个从数据库,而一个从数据库只能属于一个主数据库。
特点
主数据库可以进行读写操作,当读写操作导致数据变化时会自动将数据同步给从数据
库
从数据库一般都是只读的,并且接收主数据库同步过来的数据
一个 master 可以拥有多个 slave,但是一个 slave 只能对应一个 master
slave 挂了不影响其他 slave 的读和 master 的读和写,重新启动后会将数据从 master
同步过来
master 挂了以后,不影响 slave 的读,但 redis 不再提供写服务,master 重启后 redis
将重新对外提供写服务
master 挂了以后,不会在 slave 节点中重新选一个 master。
如图 7-1 所示,这就是经典的一主二从集群模式。

图7-1主从复制集群模式
实战:
素材

素材(需要自己去网上找)中包含 redis-new.sh 和 sentinel-new.sh,
redis-new.sh:用于生成新的 redis 配置文件,通过参数自动修改配置,有兴趣的同学
可以打开查看脚本各代码含义。
sentinel-new.sh:用于生成哨兵配置文件,哨兵概念会讲解。

克隆三台安装了 Redis 的虚拟机
名称推荐包含主机 IP 地址尾数,这样一眼就能看出是主机还是从机,如图 7-8 所示,建立
Redis-151/Redis-152/Redis-153 三台虚拟机。



启动并为每台机器固定 IP 地址
启动每台机器,分别登录并修改 IP 地址,例如 Redis-151 机器,命令如下:
cat /etc/sysconfig/network-scripts/ifcfg-ens33 查看是否正确否则,
vi /etc/sysconfig/network-scripts/ifcfg-ens33 修改文件,默认你的文件是能够正常操作的,注意网关ip,和要修改的ip

注意:修改配置要重启网络


# 重启网络服务 systemctl restart network
接下来就是搭建集群:
注意:自己的ip。
Redis151机器执行:
# 新建 redis_7001.conf 配置文件,端口 7001,密码都是 123456
sh ~/redis-new.sh 7001 123456 123456
Redis152 只需要修改端口为 7002,Redis153 修改为 7003 即可。

启动 Redis 进程并测试
Redis-151 是主机,启动非常简单,配置文件生成位置和之前一样,我们可以通过以下命令 启动。
# Redis151 执行启动命令
cd /usr/local/redis/conf/
/usr/local/redis/bin/redis-server redis_7001.conf

7001是主机,7002,7003为从机

# 测试从机是否能写入
get name
set name zhangsan

# 注意到 Redis-151 主机执行
/usr/local/redis/bin/redis-cli -p 7001 -a 123456
# 查看主从复制关系
info replication
# 测试主机是否能写入
get name
set name zhangsan
get name

