[] Redis主從同步:主從切換,redis主從同步切換

來源:互聯網
上載者:User

[] 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如下:

到這裡主從同步以及主從切換完成

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.