Redis中主从复制怎么用
这篇文章主要介绍了redis中主从复制怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
创新互联建站,专注为中小企业提供官网建设、营销型网站制作、响应式网站开发、展示型成都网站制作、网站建设等服务,帮助中小企业通过网站体现价值、有效益。帮助企业快速建站、解决网站建设与网站营销推广问题。
Redis 主从复制(Master/Slave)
1.是什么:
就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slver机制,Master以写为主,Slave以读为主。
2.作用
读写分离、容灾恢复
3.怎么玩
3.1 配从(库)不配主(库)
3.2 从库配置:slaveof主库IP主库端口
每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件
Info replication
redis.conf配置:
##设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步 slaveof###当master服务设置了密码保护时,slav服务连接master的密码 masterauth
4 修改配置文件细节操作
拷贝多个redis.conf文件
复制出三个配置文件,模拟三个redis服务 端口区别开
[root@VM_0_7_centos ~]# cd /myredis/ [root@VM_0_7_centos myredis]# ll total 172 -rw-r--r-- 1 root root 92 Sep 18 21:38 dump.rdb -rw-r--r-- 1 root root 82646 Sep 23 14:56 redis_aof.conf -rw-r--r-- 1 root root 82645 Sep 23 10:37 redis.conf [root@VM_0_7_centos myredis]# cp redis.conf redis6379.conf [root@VM_0_7_centos myredis]# cp redis.conf redis6380.conf [root@VM_0_7_centos myredis]# cp redis.conf redis6381.conf
开启 daemonize yes
Pid文件名字:
pidfile redis6479.pid
指定端口:
port 6379
Log文件名字
logfile 6379.log
Dump.rdb名字:
dbfilename dump6379.rdb
5 常用配置方式
5.1 一主二仆:
按照上述方法复制出3个配置文件,
redis6379.conf ,redis6380.conf ,redis6381.conf
[root@VM_0_7_centos myredis]# ll total 448 -rw-r--r-- 1 root root 5684 Sep 24 23:22 6379.log -rw-r--r-- 1 root root 5683 Sep 24 23:08 9736.log -rw-r--r-- 1 root root 92 Sep 24 23:22 dump6379.rdb -rw-r--r-- 1 root root 92 Sep 24 23:08 dump9736.rdb -rw-r--r-- 1 root root 92 Sep 18 21:38 dump.rdb -rw-r--r-- 1 root root 82649 Sep 24 23:21 redis6379.conf -rw-r--r-- 1 root root 82649 Sep 24 23:20 redis6380.conf -rw-r--r-- 1 root root 82649 Sep 24 23:20 redis6381.conf -rw-r--r-- 1 root root 82646 Sep 23 14:56 redis_aof.conf -rw-r--r-- 1 root root 82645 Sep 23 10:37 redis.conf
分别启动三台服务器
[root@VM_0_7_centos myredis]# ps -ef |grep redis root 31408 1 0 15:33 ? 00:00:00 redis-server 0.0.0.0:6379 root 31439 16305 0 15:34 pts/0 00:00:00 redis-cli -p 6379 root 31503 1 0 15:34 ? 00:00:00 redis-server 0.0.0.0:6380 root 31524 16394 0 15:34 pts/1 00:00:00 redis-cli -p 6380 root 31573 1 0 15:35 ? 00:00:00 redis-server 0.0.0.0:6381 root 31598 16451 0 15:35 pts/2 00:00:00 redis-cli -p 6381
三台服务没有数据
使用info replication 查看信息,三个服务,没有关联,都是master
1.在主机填加数据
127.0.0.1:6379> set k1 v1 OK 127.0.0.1:6379> set k2 v2 OK 127.0.0.1:6379> set k3 v3 OK 127.0.0.1:6379> keys * 1) "k2" 2) "k3" 3) "k1"
2.在6380 和 6381 订阅主机
127.0.0.1:6380> clear 127.0.0.1:6380> slaveof 127.0.0.1 6379 OK
127.0.0.1:6381> clear 127.0.0.1:6381> slaveof 127.0.0.1 6379 OK
3. 主机在从机订阅后设置值,查看主从情况
从机订阅后会复制主机全部信息
4. 使用 info replication 查看主机 和从机 状态
5.只有主机能写数据
6.主机关闭后 ,从机角色不变 为 slave
7. 主机重新开启后,角色不变 仍然是 master
8.从机与master 断开之后,都需要重新连接,除非配置进redis.conf 文件
5.2. 薪火相传
特点:上一个Slave可以是下一个Slave的Master,Slave 同样可以接收其他Slaves的连接和同步请求,那么该Slave作为了链条中下一个的master可以有效减轻master的写压力
中途变更转向 会清除之前的数据,重新建立拷贝最新的
Slaveof 新主库IP 新主库端口
1. 建立链接
2.测试 主从复制
5.3.反客为主
关键命令
SLAVEOF NO ONE 使当前数据库停止与其他数据库的同步,转为主库
1.以一主二从为基础
2.主机断开后,从机 SLAVEOF NO ONE 转为主库
3.从机6380 被6381 监听后成为主机,成功复制其值
4. 如果原来6379重启成功,已经失去主机身份,不在集群内。没有集群内的数据
6. 复制原理
Slave启动成功连接到master后会发送一个sync命令。
Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步。
首次进行全量控制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
增量控制:master继续将新的所有收集到的修改命令一次传给slave,完成同步
但是只要是重新连接master,一次完全同步(全量复制)将被自动执行。
7. 哨兵模式(自动反客为主)
以一主二从为基础。
反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库
1.自定义的/myredis目录下新建sentinel.conf文件,名字决不能错。
2.内容
sentinel monitor被监控数据库名字(自己起名字)127.0.0.1 6379 1
sentinel monitor host6379 127.0.0.1 6379 1
上面最后一个数字1,表示主机挂掉后slave投票看让谁解题成为主机,得票数多的成为主机
3.启动哨兵
Redis-sentinel /myredis/sentinel.conf
[root@VM_0_7_centos myredis]# cd /usr/local/bin [root@VM_0_7_centos bin]# ll total 37824 -rw-r--r-- 1 root root 139 Sep 23 15:21 appendonly.aof -rw-r--r-- 1 root root 125 Sep 23 16:00 dump.rdb -rwxr-xr-x 1 root root 4739968 Jun 12 23:09 redis-benchmark -rwxr-xr-x 1 root root 9634424 Jun 12 23:09 redis-check-aof -rwxr-xr-x 1 root root 9634424 Jun 12 23:09 redis-check-rdb -rwxr-xr-x 1 root root 5050384 Jun 12 23:09 redis-cli lrwxrwxrwx 1 root root 12 Jun 12 23:09 redis-sentinel -> redis-server -rwxr-xr-x 1 root root 9634424 Jun 12 23:09 redis-server -rwxr-xr-x 1 root root 9840 Jun 12 22:55 tclsh8.6 [root@VM_0_7_centos bin]# redis-sentinel /myredis/sentinel.conf
4.查看当前数据
5.关闭6379,稍等片刻选举中新的主机 6381
6. 6379重启后,成为从机,监听6381
7. 注意:一组sentinel能同时监控多个Master
8. 复制的缺点
复制延时:由于所有的写操作都是先在Master上操作,然后同步更新到Slave中,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙时,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。
感谢你能够认真阅读完这篇文章,希望小编分享的“Redis中主从复制怎么用”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!
当前文章:Redis中主从复制怎么用
网页链接:http://hbruida.cn/article/pisgio.html