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 一主二仆:

Redis中主从复制怎么用

按照上述方法复制出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

Redis中主从复制怎么用

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. 主机在从机订阅后设置值,查看主从情况

从机订阅后会复制主机全部信息

Redis中主从复制怎么用

4. 使用 info replication 查看主机 和从机 状态

Redis中主从复制怎么用

5.只有主机能写数据

Redis中主从复制怎么用

6.主机关闭后 ,从机角色不变 为 slave

Redis中主从复制怎么用

7. 主机重新开启后,角色不变 仍然是 master

Redis中主从复制怎么用

8.从机与master 断开之后,都需要重新连接,除非配置进redis.conf 文件

Redis中主从复制怎么用

5.2. 薪火相传

特点:上一个Slave可以是下一个Slave的Master,Slave 同样可以接收其他Slaves的连接和同步请求,那么该Slave作为了链条中下一个的master可以有效减轻master的写压力

中途变更转向 会清除之前的数据,重新建立拷贝最新的

Slaveof 新主库IP 新主库端口

Redis中主从复制怎么用

1. 建立链接

Redis中主从复制怎么用

2.测试 主从复制

Redis中主从复制怎么用

5.3.反客为主

关键命令

SLAVEOF NO ONE 使当前数据库停止与其他数据库的同步,转为主库

1.以一主二从为基础

Redis中主从复制怎么用

2.主机断开后,从机 SLAVEOF NO ONE 转为主库

Redis中主从复制怎么用

3.从机6380 被6381 监听后成为主机,成功复制其值

Redis中主从复制怎么用

4. 如果原来6379重启成功,已经失去主机身份,不在集群内。没有集群内的数据

Redis中主从复制怎么用

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

Redis中主从复制怎么用

4.查看当前数据

Redis中主从复制怎么用

5.关闭6379,稍等片刻选举中新的主机 6381

Redis中主从复制怎么用

6. 6379重启后,成为从机,监听6381

Redis中主从复制怎么用

7. 注意:一组sentinel能同时监控多个Master

8. 复制的缺点

复制延时:由于所有的写操作都是先在Master上操作,然后同步更新到Slave中,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙时,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。

感谢你能够认真阅读完这篇文章,希望小编分享的“Redis中主从复制怎么用”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!


当前文章:Redis中主从复制怎么用
网页链接:http://hbruida.cn/article/pisgio.html