成功最有效的方法就是向有经验的人学习!

Redis主从同步之主从切换

环境-OS:Centos7.2 IP地址:192.168.146.100

Centos7.2 IP地址:192.168.146.110

下载redis源码包(146.100操作)

[root@master ~]# wget http://download.redis.io/releases/redis-3.2.3.tar.gz
自动草稿

自动草稿

解压并安装redis

[root@master ~]# tar zxf redis-3.2.3.tar.gz   
[root@master ~]# cd redis-3.2.3/  
[root@master redis-3.2.3]# make && make install
自动草稿

自动草稿

切换到utils目录下,执行redis初始化脚本 install_server.sh (默认回车即可)如下:

自动草稿

自动草稿

通过上面图片我们可以看到redis的主配置位置以及日志位置等信息。现在我们需要使用systemd所以需要在/etc/systems/system下创建一个单位文件名字redis_6379.servicer如下:

[root@slave redis-3.2.3]# vi /etc/systemd/system/redis_6379.service  
[root@slave redis-3.2.3]# cat /etc/systemd/system/redis_6379.service  
[Unit]  
Description=Redis on port 6379  
[Service]  
Type=forking  
ExecStart=/etc/init.d/redis_6379 start  
ExecStop=/etc/init.d/redis_6379 stop  
[Install]  
WantedBy=multi-user.target
自动草稿

自动草稿

注:这里Type=forking是后台运行的形式启动redis

[root@master utils]# systemctl daemon-reload   
[root@master utils]# systemctl enable redis_6379.service   
[root@master utils]# systemctl start redis_6379.service    
[root@master utils]# systemctl status redis_6379.service
自动草稿

自动草稿

从上图可以看出redis正在运行,默认监听的是127.0.0.1的6379端口(测试中可选择关闭防火墙)

[root@master utils]# systemctl stop firewalld  
[root@master utils]# systemctl status firewalld  
● firewalld.service - firewalld - dynamic firewall daemon  
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)  
   Active: inactive (dead) since Mon 2018-01-01 14:51:04 CST; 7s ago  
 Main PID: 945 (code=exited, status=0/SUCCESS)  
  
Jan 01 14:13:22 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...  
Jan 01 14:13:28 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.  
Jan 01 14:51:01 master systemd[1]: Stopping firewalld - dynamic firewall daemon...  
Jan 01 14:51:04 master systemd[1]: Stopped firewalld - dynamic firewall daemon.

设置redis监听地址,添加监听主机
[root@master utils]# vim /etc/redis/6379.conf

修改:bind 127.0.0.1 192.168.146.100 6379
重启redis服务,查看监听IP地址是否修改成功

[root@master utils]# systemctl restart redis_6379.service   
[root@master utils]# netstat -anput | grep redis  
tcp        0      0 192.168.146.100:6379    0.0.0.0:*               LISTEN      30049/redis-server    
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      30049/redis-server

配置完成之后我们启动redis并进行操作

[root@master utils]# redis-cli -h 192.168.146.100 -p 6379  
192.168.146.100:6379> keys *  
(empty list or set)  
192.168.146.100:6379> set name yankerp  
OK  
192.168.146.100:6379> get name  
"yankerp"  
192.168.146.100:6379>

关于redis-cli -h 192.168.146.100 -p 6379 这条命令连接redis服务器,IP地址是192.168.146.100 端口是6379
keys *是查看redis所有的键值对。
set name yankerp添加一个键值name,内容为yankerp。
get name查看name这个键值的内容。

环境描述:

主redis-IP地址:192.168.146.100

从redis-IP地址:192.168.146.110

从redis安装步骤和redis主是一样的,可以参考上面过程。提示:(在安装从redis的时候的端口设置为6380即可)如下:

安装从redis注意1:

Redis主从同步之主从切换

Redis主从同步之主从切换

注意2:

Redis主从同步之主从切换

Redis主从同步之主从切换

安装redis从需要注意的配置如上,我这边已经安装好了也启动成功。

[root@slave utils]# netstat -anput | grep redis  
tcp        0      0 127.0.0.1:6380          0.0.0.0:*               LISTEN      28653/redis-server

一、主从配置

修改从redis配置文件redis.conf中的port6379改为6380,添加监听本机地址192.168.146.110,添加slaveof 192.168.146.100 6379如下:

Redis主从同步之主从切换

Redis主从同步之主从切换

Redis主从同步之主从切换

Redis主从同步之主从切换

配置成功后,重启redis服务(关闭从redis防火墙)

Redis主从同步之主从切换

Redis主从同步之主从切换

测试数据同步

主redis:

[root@master utils]# redis-cli -h 192.168.146.100 -p 6379  
192.168.146.100:6379> set a 1  
OK  
192.168.146.100:6379> set b 2  
OK  
192.168.146.100:6379> set c 3  
OK  
192.168.146.100:6379> set d 4  
OK  
192.168.146.100:6379> set e 5  
OK  
192.168.146.100:6379> set F 2018  
OK  
192.168.146.100:6379> keys *  
1) "b"  
2) "e"  
3) "F"  
4) "a"  
5) "name"  
6) "c"  
7) "d"  
192.168.146.100:6379> get F  
"2018"

从redis查看数据已经同步过来了

[root@slave utils]# redis-cli -h 192.168.146.110 -p 6380  
192.168.146.110:6380> keys *  
1) "e"  
2) "name"  
3) "a"  
4) "c"  
5) "F"  
6) "b"  
7) "d"  
192.168.146.110:6380> get F  
"2018"

但是我们在从redis主机上添加一个键值PPP内容为.yankerp如下:

Redis主从同步之主从切换

Redis主从同步之主从切换

默认是读写分离的,在从redis上只能读,但是不能写!

二、主从切换

1、停止主redis

Redis主从同步之主从切换

Redis主从同步之主从切换

2、从redis设成主的redis(从redis服务器操作)

[root@slave utils]# redis-cli -p 6380 slaveof NO ONE  
OK

3、接下来测试从redis主机是否切换成主redis如下:

[root@slave utils]# redis-cli -p 6380  
127.0.0.1:6380> set PPP yankerp  
OK  
127.0.0.1:6380> get PPP  
"yankerp"

在这里我们可以看到从redis主机能写入
4、原来的主redis恢复正常,重新切换回去

1)将现在的主redis的数据进行保存(192.168.146.110)操作

[root@slave utils]# redis-cli -h 192.168.146.110 -p 6380  
192.168.146.110:6380> get PPP  
"yankerp"  
192.168.146.110:6380> save  
OK

2)将现在主的redis根目录下的dump.rdb文件拷贝覆盖掉原来主redis的根目录(146.110)操作

Redis主从同步之主从切换

Redis主从同步之主从切换

3)启动原来主redis(146.100)操作

Redis主从同步之主从切换

Redis主从同步之主从切换

4)在现在的主redis中切换(146.110)操作

[root@slave ~]# redis-cli -p 6380 slaveof 192.168.146.100 6379  
OK

最后再次测试(主redis)

Redis主从同步之主从切换

Redis主从同步之主从切换


从redis如下:

Redis主从同步之主从切换

Redis主从同步之主从切换


到这里主从同步以及主从切换完成

赞(0) 打赏
未经允许不得转载:陈桂林博客 » Redis主从同步之主从切换
分享到

大佬们的评论 抢沙发

全新“一站式”建站,高质量、高售后的一条龙服务

微信 抖音 支付宝 百度 头条 快手全平台打通信息流

橙子建站.极速智能建站8折购买虚拟主机

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册