Redis---主从复制

打印 上一主题 下一主题

主题 887|帖子 887|积分 2661

一、redis主从复制

主从复制:是存储数据的服务结构
主服务器:接受客户端连接的服务器
从服务器:自动与主服务器保持数据一致的服务器
配置主从复制

1、环境准备
  1. 主服务器    主机名:master     IP地址:192.168.11.101/24
  2. 从服务器    主机名:node01     IP地址:192.168.11.102/24
  3. 客户端     主机名:node02     IP地址:192.168.11.103/24
复制代码
主从服务器都要安装redis服务,分别修改redis监听的地址为192.168.11.101,192.168.11.102
2、192.168.11.101主服务器,修改监听的IP地址
  1. root@Master:~# ss -lntup | grep 6379
  2. tcp   LISTEN 0      128        127.0.0.1:6379      0.0.0.0:*    users:(("redis-server",pid=1147,fd=6))
  3. root@Master:~# /etc/init.d/redis_6379 stop
  4. Stopping ...
  5. Redis stopped
  6. root@Master:~# ss -lntup | grep 6379
  7. root@Master:~# vim /etc/redis/6379.conf
  8. bind 192.168.11.101
复制代码
3、修改完配置文件重启服务
  1. root@Master:~# /etc/init.d/redis_6379 start
  2. Starting Redis server...
复制代码
4、登录数据库
  1. root@Master:~# redis-cli -h 192.168.11.101 -p 6379
  2. 192.168.11.101:6379> ping
  3. PONG
复制代码
5、查看当期服务器主从信息
  1. 192.168.11.101:6379> INFO replication
  2. # Replication
  3. role:master # 主节点
  4. connected_slaves:0
  5. master_replid:88c2e017cb0ea8cbd01a4f3874b314f8de1775b2
  6. master_replid2:0000000000000000000000000000000000000000
  7. master_repl_offset:0
  8. second_repl_offset:-1
  9. repl_backlog_active:0
  10. repl_backlog_size:1048576
  11. repl_backlog_first_byte_offset:0
  12. repl_backlog_histlen:0
  13. 192.168.11.101:6379>
复制代码
6、node01从服务器

修改监听的IP地址
  1. # 先停服务器
  2. root@node01:~# /etc/init.d/redis_6379 stop
  3. Stopping ...
  4. Redis stopped
  5. # 修改配置文件
  6. root@node01:~# vim /etc/redis/6379.conf
  7. # 修改客户端连接redis服务的IP地址
  8. bind 192.168.11.102
复制代码
7、重启服务检查端口监听
  1. root@node01:~# /etc/init.d/redis_6379 start
  2. Starting Redis server...
  3. root@node01:~# ss -lntup |grep 6379
  4. tcp   LISTEN 0      128    192.168.11.102:6379      0.0.0.0:*    users:(("redis-server",pid=7978,fd=6))
复制代码
8、连接主机检查主从信息

PS:在这还没添加从服务器信息,所以看到是master是正常的!!!
  1. root@node01:~# redis-cli -h 192.168.11.102 -p 6379
  2. 192.168.11.102:6379> ping
  3. PONG
  4. 192.168.11.102:6379> INFO replication
  5. # Replication
  6. role:master
  7. connected_slaves:0
  8. master_replid:f151ec960f14af322c6b07946a074a30a4c2c731
  9. master_replid2:0000000000000000000000000000000000000000
  10. master_repl_offset:0
  11. second_repl_offset:-1
  12. repl_backlog_active:0
  13. repl_backlog_size:1048576
  14. repl_backlog_first_byte_offset:0
  15. repl_backlog_histlen:0
复制代码
9、添加slave节点,将本机设置为node01的从服务器,node01端口号为6379
  1. 192.168.11.102:6379> SLAVEOF 192.168.11.101 6379
  2. OK
  3. 192.168.11.102:6379> INFO replication
  4. # Replication
  5. role:slave
  6. master_host:192.168.11.101
  7. master_port:6379
  8. master_link_status:down
复制代码
错误信息:


解决方法:

关闭防火墙和selinux
  1. root@Master:~# systemctl is-active firewalld.service
  2. active
  3. root@Master:~# systemctl stop firewalld.service
  4. root@Master:~# systemctl disable firewalld.service
  5. root@Master:~# setenforce 0
复制代码
关闭连接 重启服务
  1. # 第一次做忘了这条关闭连接命令 苦
  2. root@node01:~# redis-cli -h 192.168.11.102 -p 6379 shutdown
  3. root@node01:~#
  4. root@node01:~# /etc/init.d/redis_6379 restart
  5. /var/run/redis_6379.pid does not exist, process is not running
  6. Starting Redis server...
复制代码

10、以上是临时配置,修改配置文件,将本机永久配置为node01的从服务器
  1. root@node01:~# redis-cli -h 192.168.11.102 -p 6379 shutdown
  2. root@node01:~# vim  /etc/redis/6379.conf
  3. slaveof 192.168.11.101  6379                #修改,指定主服务器的IP地址和端口号
复制代码
11、重启服务
  1. root@node01:~# /etc/init.d/redis_6379 start
  2. root@node01:~# redis-cli -h 192.168.11.102 -p 6379
  3. 192.168.11.102:6379> info replication                #查看slave服务器的主从信息
  4. # Replication
  5. role:slave                  #从服务器
  6. master_host:192.168.11.101    #主服务器IP地址
  7. master_port:6379            #主服务器端口号
  8. master_link_status:up       #和主服务器的连接状态:up
复制代码
12、验证查看主服务器主从配置信息
  1. 192.168.11.101:6379> INFO replication
  2. # Replication
  3. role:master
  4. connected_slaves:1
  5. slave0:ip=192.168.11.102,port=6379,state=online,offset=1330,lag=0
  6. master_replid:ecc43c0169695c02204b624365e75859defc0aec
  7. master_replid2:0000000000000000000000000000000000000000
  8. master_repl_offset:1330
  9. second_repl_offset:-1
  10. repl_backlog_active:1
  11. repl_backlog_size:1048576
  12. repl_backlog_first_byte_offset:1
  13. repl_backlog_histlen:1330
复制代码
13、测试主从同步,插入数据
  1. # 添加数据
  2. 192.168.11.101:6379> set school qinghua
  3. OK
  4. # 查看数据
  5. 192.168.11.101:6379> GET school
  6. "qinghua"
  7. 192.168.11.102:6379> KEYS *
  8. 1) "school"
  9. 192.168.11.102:6379> GET school
  10. "qinghua"
复制代码
14、反客为主:将从库恢复为主库,在node01上操作
  1. root@node01:~# redis-cli -h 192.168.11.101 -p 6379
  2. 192.168.11.101:6379> ping
  3. PONG
  4. 192.168.11.101:6379> SLAVEOF no one
  5. OK
  6. 192.168.11.101:6379> INFO replication
  7. # Replication
  8. role:master
  9. connected_slaves:1
  10. slave0:ip=192.168.11.102,port=6379,state=online,offset=1853,lag=0
  11. 192.168.11.101:6379> exit
复制代码
二、redis主从复制
  1. 主服务器    主机名:master      IP地址:192.168.11.101/24
  2. 从服务器    主机名:node01      IP地址:192.168.11.102/24
  3. 从服务器    主机名:node02      IP地址:192.168.11.103/24
复制代码
1、三台都要安装redis服务,分别修改redis监听的地址为

192.168.11.101 192.168.11.102 192.168.11.103
2、由于之前master和node01做实验已经修改过,所以这次直接修改node02即可
  1. # 停止服务
  2. root@node02:~# /etc/init.d/redis_6379 stop
  3. Stopping ...
  4. Redis stopped
  5. # 修改配置文件
  6. root@node02:~# vim /etc/redis/6379.conf
  7. bind 192.168.11.103
复制代码
3、重启服务并监听端口
  1. root@node02:~# /etc/init.d/redis_6379 start
  2. Starting Redis server...
  3. root@node02:~# ss -lntup |grep redis
  4. tcp   LISTEN 0      128    192.168.11.103:6379      0.0.0.0:*    users:(("redis-server",pid=9860,fd=6))
复制代码
4、master设置连接密码
  1. root@Master:~# redis-cli -h 192.168.11.101 -p 6379 shutdown
  2. 501 requirepass plj123
  3. root@Master:~# /etc/init.d/redis_6379 start
  4. root@Master:~# redis-cli -h 192.168.11.101 -p 6379 -a plj123
  5. 192.168.4.51:6379> info  replication
  6. # Replication
  7. role:master
  8. 192.168.11.101:6379> set a 1
  9. 192.168.11.101:6379> set b 1
  10. 192.168.11.101:6379> set c 1
复制代码
5、node01|2主机设置带验证的从库(从库配置一样,截取数据俩边混着搞得,看对应的主机信息即可)
  1. 192.168.11.103:6379>
  2. 192.168.11.103:6379> SLAVEOF 192.168.11.101 6379
复制代码
6、关掉连接,添加密码
  1. root@node01:~#  redis-cli -h 192.168.11.102 -p 6379 shutdown
  2. root@node01:~# vim /etc/redis/6379.conf
  3. 289 masterauth plj123
复制代码
7、重启服务
  1. root@node01:~# /etc/init.d/redis_6379 start
  2. 192.168.11.102:6379> info replication               
  3. # Replication
  4. role:slave
  5. master_host:192.168.11.101
  6. master_port:6379
  7. master_link_status:up
复制代码
8、查看数据是否同步
  1. 192.168.11.103:6379> INFO replication
  2. # Replication
  3. role:slave
  4. master_host:192.168.11.101
  5. master_port:6379
  6. master_link_status:up
  7. 192.168.11.103:6379> KEYS *
  8. 1) "school" # 数据已经同步
复制代码
9、测试当其中的一台从服务器停止,另外一台还能继续同步数据,

模拟node01宕机
  1. root@node01:~# redis-cli -h 192.168.11.102 -p 6379 shutdow
复制代码
10、master存数据
  1. 192.168.11.101:6379> set AAA CCC
  2. OK
  3. 192.168.11.101:6379> KEYS *
  4. 1) "school"
  5. 2) "AAA"
复制代码
11、node02查看
  1. 192.168.11.103:6379> KEYS *
  2. 1) "AAA"
  3. 2) "school"
复制代码
12、node01机器恢复
  1. root@node01:~# /etc/init.d/redis_6379 restart
  2. root@node01:~# ss -lntup |grep redis
  3. tcp   LISTEN 0      128    192.168.11.102:6379      0.0.0.0:*    users:(("redis-server",pid=15384,fd=6))
复制代码
13、测试数据是否同步
  1. #宕机期间的数据自动同步
  2. root@node01:~# redis-cli -h 192.168.11.102 -p 6379
  3. 192.168.11.102:6379> ping
  4. PONG
  5. 192.168.11.102:6379> KEYS *
  6. 1) "AAA"
  7. 2) "school"
复制代码
出处:http://www.cnblogs.com/sre-chan/-------------------------------------------
个性签名:今天做了别人不想做的事,明天你就做得到别人做不到的事,尝试你都不敢,你拿什么赢!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

光之使者

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表