Redis主從配置總結


 

Redis的主從配置相對於MySQL來說確實是非常簡單,不過我們這里還是簡單總結一下,僅供參考和學習,如有不足之處,敬請指正。

 

 

Redis的編譯安裝

 

 

# wget http://download.redis.io/releases/redis-6.0.8.tar.gz
# tar -xzvf redis-6.0.8.tar.gz
# cd redis-6.0.8
# make -j 4
# make PREFIX=/usr/local/redis install

 

 

如下所示,編譯安裝后,你可以看到下面目錄和文件

 

clip_image001

 

 

創建下面目錄,用來存放日志文件、配置文件(redis.conf)、pidfile文件,數據庫dump.rdb文件

 

# mkdir -p /usr/local/redis/data
# mkdir -p /usr/local/redis/log
# mkdir -p /usr/local/redis/run
# mkdir -p /usr/local/redis/conf
 
 
# cp /tmp/redis-6.0.8/redis.conf  /usr/local/redis/conf

 

 

修改部分參數,根據實際情況修改。大部分參數選擇默認參數即可。

 

 

bind 127.0.0.1 192.168.27.115
daemonize yes
port 6666
logfile "/usr/local/redis/log/redis.log"
dir /usr/local/redis/data
pidfile /usr/local/redis/redis_6666.pid  這里指定pidfile跟監聽端口一致,例如,監聽端口為6666,那么pidfile設置為redis_6666.pid
protected-mode no
requirepass 75612a867ceeb452924c98778caa959c37120bfff6582aaad48298acbf320b28

 

 

查看redis.conf的配置參數

 

# grep '^[a-Z]' /usr/local/redis/conf/redis.conf
bind 127.0.0.1 192.168.27.115
protected-mode no
port 6666
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /usr/local/redis/redis_6666.pid
loglevel notice
logfile "/usr/local/redis/log/redis.log"
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
rdb-del-sync-files no
dir /usr/local/redis/data
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-diskless-load disabled
repl-disable-tcp-nodelay no
replica-priority 100
acllog-max-len 128
requirepass 75612a867ceeb452924c98778caa959c37120bfff6582aaad48298acbf320b28
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
lazyfree-lazy-user-del no
oom-score-adj no
oom-score-adj-values 0 200 800
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
jemalloc-bg-thread yes

 

創建普通用戶

 

 

# groupadd redis
# useradd redis -g redis -s /sbin/nologin

 

修改目錄的Owner

 

 

# chown -R redis:redis /usr/local/redis/
# ls -lrt /usr/local/redis/

 

 

限制redis文件目錄訪問權限

 

設置redis的主目錄權限為700

 

# chmod -R 700 /usr/local/redis/

 

 

 

Redis主從的配置

 

 

關於Redis的主服務器的配置如上所示,而Redis的從服務器配置也差不多,可以將/usr/local/redis/目錄拷貝到從服務器去,也可以直接在從服務器按照上面步驟安裝即可,當然也要創建redis用戶、修改目錄的owner、限制redis文件夾權限等等。

 

Redis從服務器的redis.conf還需要額外增加兩個參數,如下所示,如果Redis主服務器沒有配置requirepass,那么從服務器無需配置masterauth參數

 

slaveof 192.168.27.115 6666
masterauth 75612a867ceeb452924c98778caa959c37120bfff6582aaad48298acbf320b28

 

 

Redis的主從同步很簡單,只需要啟動Slave實例,會自動將主節點已有的數據同步到從節點。另外,在主節點寫入數據也會自動同步到從節點,因此從節點不需要做數據還原的步驟。另外,slave是不允許寫入的,在加入了slaveof  之后,實例就成為了只讀的。

 

 

 

 

防火牆配置

 

 

# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.20.57.24" port protocol="tcp" port="6666" accept"
# systemctl restart firewalld.service

 

 

啟動Redis的主節點

 

 

sudo -u redis /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf

 

 

啟動Redis的從節點

 

 

sudo -u redis /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf

 

 

Redis主從測試同步

 

 

 
[root@localhost ~]# /usr/local/redis/bin/redis-cli -h 192.168.27.115 -p 6666
192.168.27.115:6666> auth 75612a867ceeb452924c98778caa959c37120bfff6582aaad48298acbf320b28
OK
192.168.27.115:6666> set test1 "it's ok"
OK
192.168.27.115:6666> get test1
"it's ok
 
 
[root@KerryDB ~]# /usr/local/redis/bin/redis-cli  -h 10.20.57.24 -p 6666
10.20.57.24:6666> get test1
"it's ok"

 

 

192.168.27.115:6666> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=10.20.57.24,port=6666,state=online,offset=2526,lag=1
master_replid:b30f19ff9f5e9c852636b07248f1e3b3fb8ea71b
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:2526
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:2526

 

 

clip_image002

 

 

127.0.0.1:6666> info replication
# Replication
role:slave
master_host:192.168.27.115
master_port:6666
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:557
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:b30f19ff9f5e9c852636b07248f1e3b3fb8ea71b
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:557
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:557

 

clip_image003

 

 

正常情況下,主從同步正常,但是也會由於配置原因,導致主從同步異常的情況,需要詳細分析日志找出主從同步的原因,當然也有主從不一致等問題,后續篇幅再做介紹。

 

 

 

 

參考資料:

 

http://mdba.cn/2013/10/22/redis%e5%ae%89%e8%a3%85%e4%b8%8e%e4%b8%bb%e4%bb%8e%e9%85%8d%e7%bd%ae/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM