这篇文章主要介绍了Redis中主从复制怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slver机制,Master以写为主,Slave以读为主。
读写分离、容灾恢复
每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件
Info replication
redis.conf配置:
##设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步 slaveof <masterip> <masterport> ###当master服务设置了密码保护时,slav服务连接master的密码 masterauth <master-password>
拷贝多个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
按照上述方法复制出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 文件
特点:上一个Slave可以是下一个Slave的Master,Slave 同样可以接收其他Slaves的连接和同步请求,那么该Slave作为了链条中下一个的master可以有效减轻master的写压力
中途变更转向 会清除之前的数据,重新建立拷贝最新的
Slaveof 新主库IP 新主库端口
1. 建立链接
2.测试 主从复制
关键命令
SLAVEOF NO ONE 使当前数据库停止与其他数据库的同步,转为主库
1.以一主二从为基础
2.主机断开后,从机 SLAVEOF NO ONE 转为主库
3.从机6380 被6381 监听后成为主机,成功复制其值
4. 如果原来6379重启成功,已经失去主机身份,不在集群内。没有集群内的数据
Slave启动成功连接到master后会发送一个sync命令。
Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步。
首次进行全量控制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
增量控制:master继续将新的所有收集到的修改命令一次传给slave,完成同步
但是只要是重新连接master,一次完全同步(全量复制)将被自动执行。
以一主二从为基础。
反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库
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
复制延时:由于所有的写操作都是先在Master上操作,然后同步更新到Slave中,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙时,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。
感谢你能够认真阅读完这篇文章,希望小编分享的“Redis中主从复制怎么用”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。