linux 下Redis 5.0主從複製(一主二從)的搭建
文件結構如下:
一、環境說明:
作用 |
IP地址 |
埠 |
作業系統版本 |
安裝目錄 |
主庫 |
172.16.10.80 |
6379 |
Redhat 6.7 |
/redis5.0/redis-5.0.0 |
slave1 |
172.16.10.81 |
6380 |
Redhat 6.7 |
/redis5.0/redis-5.0.0 |
slave2 |
172.16.10.82 | 6381 |
Redhat 6.7 |
/redis5.0/redis-5.0.0 |
Redis一主二從主要是用於讀寫分離和容災,配置是配從不配主。
二、安裝
Redis 一主二從的安裝其實跟單機的安裝區別不大,本次安裝我們可以先修改引數檔案後在安裝,可以參考我的單機的安裝部落格:
https://www.cnblogs.com/hmwh/p/9831091.html
2.1. 配置yum
a) 關閉防火牆
vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
setenforce 0
service iptables stop
chkconfig iptables off
b) 三臺伺服器配置好yum
mount /dev/sr0 /mnt/
cd /etc/yum.repos.d/
mv redhat.repo redhat.repo.bak
mv rhel-source.repo rhel-source.repo.bak
vi /etc/yum.repos.d/rhel-debuginfo.repo
[rhel-debuginfo]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug
baseurl=file:///mnt/
enabled=1
gpgcheck=0
yum -y install make gcc*
2.2. 引數配置
mkdir -p /redis5.0
把解壓包上傳到/redis5.0
tar -zxvf redis-5.0.0.tar.gz
需要修改以及註釋的引數如下:
Master:
cd /redis5.0/redis-5.0.0
save 900 1
#save 300 10
#save 60 10000
bind 172.6.10.80
daemonize yes
loglevel warning
timeout 60
logfile "6379.log"
dbfilename dump6379.rdb
maxmemory-policy volatile-ttl
auto-aof-rewrite-min-size 10GB
masterauth redis --主庫的密碼(本機可以不配置)
Slave1:
cd /redis5.0/redis-5.0.0
save 900 1
#save 300 10
#save 60 10000
bind 172.6.10.81
daemonize yes
loglevel warning
logfile "6380.log"
dbfilename dump6380.rdb
pidfile /var/run/redis_6380.pid
port 6380
timeout 60
maxmemory-policy volatile-ttl
auto-aof-rewrite-min-size 10GB
slaveof 172.16.10.80 6379
masterauth redis --主庫的密碼
Salve2:
cd /redis5.0/redis-5.0.0
save 900 1
#save 300 10
#save 60 10000
bind 172.6.10.82
daemonize yes
loglevel warning
port 6381
timeout 60
dbfilename dump6381.rdb
logfile "6381.log"
pidfile /var/run/redis_6381.pid
maxmemory-policy volatile-ttl
auto-aof-rewrite-min-size 10GB
slaveof 172.16.10.80 6379
masterauth redis --主庫的密碼
2.3. 安裝
cd /redis5.0/redis-5.0.0
make
make install
安裝完成。
啟動如下:
redis-server /redis5.0/redis-5.0.0/redis6379.conf
redis-server /redis5.0/redis-5.0.0/redis6380.conf
redis-server /redis5.0/redis-5.0.0/redis6381.conf
由於引數已經修改完了,後面修改密碼:
config set requirepass "redis"
並且寫入配置檔案:
例如關閉提示需要密碼就說明修改成功。
同理修改下面兩臺伺服器:
主從複製的密碼配置:
檢視主機角色資訊:
檢視從機一配置:
檢視從機二配置:
可以看出同步狀態正常。
三、測試
3.1. 注意
1、如果沒有把slaveof 引數配置到引數檔案中,從庫重啟後需要重新slaveof;即從庫會變成主庫(沒有配置slaveof引數檔案)
2、在主從搭建完成後,後面新增的從庫slaveof後,會自動把資料從主庫同步過來,生產上會有一定的效能影響。
3、從機只有讀的許可權,主機才能夠寫操作。