主从复制
一、概述
-
数据存储结构
主服务器:客户端存取数据连接主机
从服务器:自动同步主服务器的数据 -
结构模式
一主一从
一主多从
主从从 -
主从复制工作原理
主从配置完成后,从服务器向主服务器发送同步数据的请求;
主服务器接收到请求后,会启动后台存盘进程,后台会创建一个进程,单独处理从服务器同步数据的请求,并且收集所有修改数据的命令到一个文件中。
主服务器完成后台存盘后,传送数据到从服务器。
从服务器接受数据文件,加载到内存中完成首次完全同步。
后续有新数据产生,,主服务器继续收集数据修改命令,依次传给从服务器,完成同步。 -
配置从服务器成功后,主服务器的数据会把从服务器数据覆盖掉。
二、配置一主一从
2.1、一主一从实验拓扑
2.2、配置
- 相关命令:
查看复制信息:info replication
命令行临时配置:slaveof 主服务器Ip 主服务器端口
slaveof no one - 临时配置从服务器
redis服务器默认为主服务器。
[root@slave1 ~]# redis-cli -h 192.168.4.52 -p 6352
192.168.4.52:6352> SLAVEOF 192.168.4.51 6351 //临时配置,重启服务后失效
OK
192.168.4.52:6352> INFO replication
# Replication
role:slave
master_host:192.168.4.51
master_port:6351
master_link_status:up
- 永久配置
[root@slave1 ~]# vim +282 /etc/redis/6379.conf
slaveof 192.168.4.51 6351
- 永久配置后,临时取消从服务器状态
[root@slave1 ~]# redis-cli -h 192.168.4.52 -p 6352
192.168.4.52:6352> SLAVEOF no one
OK
192.168.4.52:6352> INFO replication
# Replication
role:master
connected_slaves:0
重启服务后生效
三、配置一主多从
3.1、一主多从实验拓扑
3.2、配置
- 临时
[root@slave2 ~]# redis-cli -h 192.168.4.53 -p 6353
192.168.4.53:6353> slaveof 192.168.4.51 6351
OK
192.168.4.53:6353> INFO replication
# Replication
role:slave
master_host:192.168.4.51
master_port:6351
master_link_status:up
- 永久
[root@slave2 ~]# vim +282 /etc/redis/6379.conf
slaveof 192.168.4.51 6351
四、配置带验证的主从复制
4.1、主服务器设置连接密码
- 直接修改配置文件501行,重启服务
- 避免服务重启,命令行修改密码
[root@master ~]# redis-cli -h 192.168.4.51 -p 6351
192.168.4.51:6351> CONFIG SET requirepass 123456 //设置密码
OK
192.168.4.51:6351> AUTH 123456 //输入密码才能使用查询命令
OK
192.168.4.51:6351> CONFIG GET requirepass //查看密码
1) "requirepass"
2) "123456"
192.168.4.51:6351> CONFIG REWRITE //将配置保存到配置文件中
OK
[root@master ~]# tail -1 /etc/redis/6379.conf
requirepass "123456"
4.2、从服务器指定主服务器的密码
- 修改配置文件289行,masterauth 123456 重启服务
- 避免服务重启,命令行指定主服务器密码
[root@slave1 ~]# redis-cli -h 192.168.4.52 -p 6352
192.168.4.52:6352> CONFIG SET masterauth 123456
OK
192.168.4.52:6352> CONFIG REWRITE
OK
192.168.4.52:6352> INFO replication
# Replication
role:slave
master_host:192.168.4.51
master_port:6351
master_link_status:up //指定主服务器密码后,连接状态是up
[root@slave1 ~]# tail -1 /etc/redis/6379.conf
masterauth "123456"
- 未指定主服务器密码
[root@slave2 ~]# redis-cli -h 192.168.4.53 -p 6353
192.168.4.53:6353> INFO replication
# Replication
role:slave
master_host:192.168.4.51
master_port:6351
master_link_status:down //连接状态down
五、配置主从从
5.1、主从从实验拓扑
5.2、配置
- 配置主从从结构
[root@redis5 ~]# redis-cli -h 192.168.4.55 -p 6355
192.168.4.55:6355> slaveof 192.168.4.54 6354
OK
[root@redis6 ~]# redis-cli -h 192.168.4.56 -p 6356
192.168.4.56:6356> SLAVEOF 192.168.4.55 6355
OK
- 查看
[root@redis4 ~]# redis-cli -h 192.168.4.54 -p 6354
192.168.4.54:6354> INFO replication
# Replication
role:master
connected_slaves:1
[root@redis5 ~]# redis-cli -h 192.168.4.55 -p 6355
192.168.4.55:6355> INFO replication
# Replication
role:slave
master_host:192.168.4.54
master_port:6354
master_link_status:up
[root@redis6 ~]# redis-cli -h 192.168.4.56 -p 6356
192.168.4.56:6356> INFO replication
# Replication
role:slave
master_host:192.168.4.55
master_port:6355
master_link_status:up
六、哨兵服务
6.1、哨兵服务介绍
- 监视master服务器
- 发现master宕机后,将从服务器升级为主服务器
- 主配置文件 sentinel.conf
6.2、实验拓扑
6.3、配置哨兵服务
- 基于主从从结构
- 安装redis软件
不存储数据不做初始化
[root@sentinel ~]# yum -y install gcc
[root@sentinel ~]# tar -zxf redis-4.0.8.tar.gz
[root@sentinel ~]# ls
[root@sentinel ~]# cd redis-4.0.8/
[root@sentinel redis-4.0.8]# make && make install
[root@sentinel ~]# ls redis-4.0.8/sentinel.conf
redis-4.0.8/sentinel.conf //配置文件模板
- 创建主配置文件
[root@sentinel ~]# vim /etc/sentinel.conf
bind 192.168.4.57
sentinel monitor redis_server 192.168.4.54 6354 1
- 启动哨兵服务
[root@sentinel ~]# redis-sentinel /etc/sentinel.conf //占用一个终端
6.4、测试配置
[root@redis4 ~]# redis-cli -h 192.168.4.54 -p 6354
192.168.4.54:6354> SHUTDOWN
[root@redis5 ~]# redis-cli -h 192.168.4.55 -p 6355
192.168.4.55:6355> INFO replication
# Replication
role:master
connected_slaves:1
- 哨兵服务器状态