标签:情况 inux 命令 分布式 拷贝 导致 can 服务 通过
说到分布式高可用,必然少不了复制,一来是为了做个冗余备份防止数据丢失,二来还可以达到分流来提高性能的目的。下面全部用M来表示Master(主服务器),用S来表示Slave(从服务器)
那么redis的复制是怎么实现的呢?啥也不说了,先看图:
Replication ID, offset
不好意思,没有图~哈哈~~看个表凑合吧
每个M都有上面这两个属性,Replication ID是M的唯一标识。offset是要发送命令流的字节数,简单来说,只要客户端有更新操作,这个offset就会增加。就算没有S,这个偏移量也是自动增长的。下面就是通过offset来实现部分复制的详细说明:
redis默认使用高性能的异步复制,S会异步向M确认收到的数据
复制的机制和特点:
slaveof 192.168.1.1 6379
只需要在S的配置文件里添加上面这一行就可以了,这一行代码的含义是:192.168.1.1 6379是M,我从这儿同步数据进行复制,下面就在我的虚拟机上面实操一下:
配置3台redis,6379是M,6380、6381是S
配置M
[root@vm10 redis]# cp redis.conf redis_6379.conf
[root@vm10 redis]# vi redis_6379.conf
bind 192.168.56.10 #修改ip为本机
配置S
[root@vm10 redis]# cp redis_6379.conf redis_6380.conf [root@vm10 redis]# vi redis_6380.conf #修改端口号和pid文件名 port 6380 pidfile /var/run/redis_6380.pid slaveof 192.168.56.10 6379 #设定复制 #同样拷贝一份配置按照上面的步骤进行修改 [root@vm10 redis]# cp redis_6380.conf redis_6381.conf
启动
[root@vm10 redis]# src/redis-server redis_6379.conf [root@vm10 redis]# src/redis-server redis_6380.conf [root@vm10 redis]# src/redis-server redis_6381.conf
测试复制
[root@vm10 redis]# telnet 192.168.56.10 6379 Trying 192.168.56.10... Connected to 192.168.56.10. Escape character is ‘^]‘. set school bistu +OK get school $5 bistu quit +OK Connection closed by foreign host. [root@vm10 redis]# telnet 192.168.56.10 6380 Trying 192.168.56.10... Connected to 192.168.56.10. Escape character is ‘^]‘. get school $5 bistu #复制成功 set myname pigfly -READONLY You can‘t write against a read only slave. #注意slave不能写,这是默认配置,如需修改请到配置文件修改read-only项 [root@vm10 redis]# telnet 192.168.56.10 6381 Trying 192.168.56.10... Connected to 192.168.56.10. Escape character is ‘^]‘. get school $5 bistu #复制成功
标签:情况 inux 命令 分布式 拷贝 导致 can 服务 通过
原文地址:http://www.cnblogs.com/justlikeheaven/p/7799224.html