最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

全球热资讯!Redis---主从复制

来源:博客园


(资料图片仅供参考)

一、redis主从复制

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

配置主从复制

1、环境准备

主服务器    主机名:master     IP地址:192.168.11.101/24从服务器    主机名:node01     IP地址:192.168.11.102/24 客户端     主机名:node02     IP地址:192.168.11.103/24

主从服务器都要安装redis服务,分别修改redis监听的地址为192.168.11.101,192.168.11.102

2、192.168.11.101主服务器,修改监听的IP地址

root@Master:~# ss -lntup | grep 6379tcp   LISTEN 0      128        127.0.0.1:6379      0.0.0.0:*    users:(("redis-server",pid=1147,fd=6))root@Master:~# /etc/init.d/redis_6379 stopStopping ...Redis stoppedroot@Master:~# ss -lntup | grep 6379root@Master:~# vim /etc/redis/6379.confbind 192.168.11.101

3、修改完配置文件重启服务

root@Master:~# /etc/init.d/redis_6379 start Starting Redis server...

4、登录数据库

root@Master:~# redis-cli -h 192.168.11.101 -p 6379192.168.11.101:6379> pingPONG

5、查看当期服务器主从信息

192.168.11.101:6379> INFO replication# Replicationrole:master # 主节点connected_slaves:0master_replid:88c2e017cb0ea8cbd01a4f3874b314f8de1775b2master_replid2:0000000000000000000000000000000000000000master_repl_offset:0second_repl_offset:-1repl_backlog_active:0repl_backlog_size:1048576repl_backlog_first_byte_offset:0repl_backlog_histlen:0192.168.11.101:6379> 

6、node01从服务器

修改监听的IP地址

# 先停服务器root@node01:~# /etc/init.d/redis_6379 stop Stopping ...Redis stopped# 修改配置文件root@node01:~# vim /etc/redis/6379.conf# 修改客户端连接redis服务的IP地址bind 192.168.11.102

7、重启服务检查端口监听

root@node01:~# /etc/init.d/redis_6379 start Starting Redis server...root@node01:~# ss -lntup |grep 6379tcp   LISTEN 0      128    192.168.11.102:6379      0.0.0.0:*    users:(("redis-server",pid=7978,fd=6))

8、连接主机检查主从信息

PS:在这还没添加从服务器信息,所以看到是master是正常的!!!

root@node01:~# redis-cli -h 192.168.11.102 -p 6379192.168.11.102:6379> pingPONG192.168.11.102:6379> INFO replication# Replicationrole:masterconnected_slaves:0master_replid:f151ec960f14af322c6b07946a074a30a4c2c731master_replid2:0000000000000000000000000000000000000000master_repl_offset:0second_repl_offset:-1repl_backlog_active:0repl_backlog_size:1048576repl_backlog_first_byte_offset:0repl_backlog_histlen:0

9、添加slave节点,将本机设置为node01的从服务器,node01端口号为6379

192.168.11.102:6379> SLAVEOF 192.168.11.101 6379OK192.168.11.102:6379> INFO replication# Replicationrole:slavemaster_host:192.168.11.101master_port:6379master_link_status:down

错误信息:

解决方法:

关闭防火墙和selinux

root@Master:~# systemctl is-active firewalld.serviceactiveroot@Master:~# systemctl stop firewalld.serviceroot@Master:~# systemctl disable firewalld.serviceroot@Master:~# setenforce 0

关闭连接 重启服务

# 第一次做忘了这条关闭连接命令 苦root@node01:~# redis-cli -h 192.168.11.102 -p 6379 shutdownroot@node01:~# root@node01:~# /etc/init.d/redis_6379 restart /var/run/redis_6379.pid does not exist, process is not runningStarting Redis server...

10、以上是临时配置,修改配置文件,将本机永久配置为node01的从服务器

root@node01:~# redis-cli -h 192.168.11.102 -p 6379 shutdownroot@node01:~# vim  /etc/redis/6379.confslaveof 192.168.11.101  6379#修改,指定主服务器的IP地址和端口号

11、重启服务

root@node01:~# /etc/init.d/redis_6379 startroot@node01:~# redis-cli -h 192.168.11.102 -p 6379192.168.11.102:6379> info replication#查看slave服务器的主从信息# Replicationrole:slave                  #从服务器master_host:192.168.11.101    #主服务器IP地址master_port:6379            #主服务器端口号master_link_status:up       #和主服务器的连接状态:up

12、验证查看主服务器主从配置信息

192.168.11.101:6379> INFO replication# Replicationrole:masterconnected_slaves:1slave0:ip=192.168.11.102,port=6379,state=online,offset=1330,lag=0master_replid:ecc43c0169695c02204b624365e75859defc0aecmaster_replid2:0000000000000000000000000000000000000000master_repl_offset:1330second_repl_offset:-1repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:1repl_backlog_histlen:1330

13、测试主从同步,插入数据

# 添加数据192.168.11.101:6379> set school qinghuaOK# 查看数据192.168.11.101:6379> GET school"qinghua"192.168.11.102:6379> KEYS *1) "school"192.168.11.102:6379> GET school"qinghua"

14、反客为主:将从库恢复为主库,在node01上操作

root@node01:~# redis-cli -h 192.168.11.101 -p 6379192.168.11.101:6379> pingPONG192.168.11.101:6379> SLAVEOF no oneOK192.168.11.101:6379> INFO replication# Replicationrole:masterconnected_slaves:1slave0:ip=192.168.11.102,port=6379,state=online,offset=1853,lag=0192.168.11.101:6379> exit

二、redis主从复制

主服务器    主机名:master      IP地址:192.168.11.101/24从服务器    主机名:node01      IP地址:192.168.11.102/24从服务器    主机名: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即可

# 停止服务root@node02:~# /etc/init.d/redis_6379 stop Stopping ...Redis stopped# 修改配置文件root@node02:~# vim /etc/redis/6379.confbind 192.168.11.103

3、重启服务并监听端口

root@node02:~# /etc/init.d/redis_6379 start Starting Redis server...root@node02:~# ss -lntup |grep redistcp   LISTEN 0      128    192.168.11.103:6379      0.0.0.0:*    users:(("redis-server",pid=9860,fd=6))

4、master设置连接密码

root@Master:~# redis-cli -h 192.168.11.101 -p 6379 shutdown501 requirepass plj123root@Master:~# /etc/init.d/redis_6379 startroot@Master:~# redis-cli -h 192.168.11.101 -p 6379 -a plj123192.168.4.51:6379> info  replication# Replicationrole:master192.168.11.101:6379> set a 1192.168.11.101:6379> set b 1192.168.11.101:6379> set c 1

5、node01|2主机设置带验证的从库(从库配置一样,截取数据俩边混着搞得,看对应的主机信息即可)

192.168.11.103:6379>192.168.11.103:6379> SLAVEOF 192.168.11.101 6379

6、关掉连接,添加密码

root@node01:~#  redis-cli -h 192.168.11.102 -p 6379 shutdownroot@node01:~# vim /etc/redis/6379.conf 289 masterauth plj123

7、重启服务

root@node01:~# /etc/init.d/redis_6379 start192.168.11.102:6379> info replication# Replicationrole:slavemaster_host:192.168.11.101master_port:6379master_link_status:up

8、查看数据是否同步

192.168.11.103:6379> INFO replication# Replicationrole:slavemaster_host:192.168.11.101master_port:6379master_link_status:up192.168.11.103:6379> KEYS *1) "school" # 数据已经同步

9、测试当其中的一台从服务器停止,另外一台还能继续同步数据,

模拟node01宕机

root@node01:~# redis-cli -h 192.168.11.102 -p 6379 shutdow

10、master存数据

192.168.11.101:6379> set AAA CCCOK192.168.11.101:6379> KEYS *1) "school"2) "AAA"

11、node02查看

192.168.11.103:6379> KEYS *1) "AAA"2) "school"

12、node01机器恢复

root@node01:~# /etc/init.d/redis_6379 restartroot@node01:~# ss -lntup |grep redistcp   LISTEN 0      128    192.168.11.102:6379      0.0.0.0:*    users:(("redis-server",pid=15384,fd=6))

13、测试数据是否同步

#宕机期间的数据自动同步root@node01:~# redis-cli -h 192.168.11.102 -p 6379 192.168.11.102:6379> pingPONG192.168.11.102:6379> KEYS *1) "AAA"2) "school"

关键词: