[] Redis主從同步:主從切換,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=forkingExecStart=/etc/init.d/redis_6379 startExecStop=/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 redistcp 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 6379192.168.146.100:6379> keys *(empty list or set)192.168.146.100:6379> set name yankerpOK192.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:
注意2:
安裝redis從需要注意的配置如上,我這邊已經安裝好了也啟動成功。
[root@slave utils]# netstat -anput | grep redistcp 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:
[root@master utils]# redis-cli -h 192.168.146.100 -p 6379192.168.146.100:6379> set a 1OK192.168.146.100:6379> set b 2OK192.168.146.100:6379> set c 3OK192.168.146.100:6379> set d 4OK192.168.146.100:6379> set e 5OK192.168.146.100:6379> set F 2018OK192.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 6380192.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上只能讀,但是不能寫!
二、主從切換
1、停止主redis
2、從redis設成主的redis(從redis伺服器操作)
[root@slave utils]# redis-cli -p 6380 slaveof NO ONEOK
3、接下來測試從redis主機是否切換成主redis如下:
[root@slave utils]# redis-cli -p 6380127.0.0.1:6380> set PPP yankerpOK127.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 6380192.168.146.110:6380> get PPP"yankerp"192.168.146.110:6380> saveOK
2)將現在主的redis根目錄下的dump.rdb檔案拷貝覆蓋掉原來主redis的根目錄(146.110)操作
3)啟動原來主redis(146.100)操作
4)在現在的主redis中切換(146.110)操作
[root@slave ~]# redis-cli -p 6380 slaveof 192.168.146.100 6379OK
最後再次測試(主redis)
從redis如下:
到這裡主從同步以及主從切換完成