中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Redis-3.2主從復制與集群搭建

發布時間:2020-06-29 20:30:56 來源:網絡 閱讀:20326 作者:KaliArch 欄目:數據庫

一、Redis 主從搭建

1.下載并解壓

yum install -y gcc gcc-c++ pcre zlib pcre-devel tcl 
wget  http://download.redis.io/releases/redis-3.2.4.tar.gz
tar -zxvf redis-3.2.4.tar.gz
cd redis-3.2.4
make 
cd src && make test && make install
mkdir /etc/redis
cp ../redis.conf /etc/redis/redis.conf

2.系統參數調優

vim /etc/sysctl.conf
net.core.somaxconn = 20480  #最大隊列長度,應付突發的大并發連接請求,默認為128
net.ipv4.tcp_max_syn_backlog = 20480  #半連接隊列長度,此值受限于內存大小,默認為1024
vm.overcommit_memory = 1
0 表示檢查是否有足夠的內存可用,如果是,允許分配;如果內存不夠,拒絕該請求,并返回一個錯誤給應用程序。
1 允許分配超出物理內存加上交換內存的請求
2 內核總是返回true
sysctl -p  #加載生效參數

3.配置文件說明

3.1 后臺運行

daemonize yes

3.2 bind地址監聽

默認bind的填寫的127.0.0.1這樣配置是只允許本地訪問
bind 0.0.0.0

3.3 日志配置

logfile "/var/log/redis.log"

3.4 服務啟動腳本

vim /etc/init.d/redis

# chkconfig: 2345 90 10
# description: service of redis for start and stop add by tomener
 
PATH=/usr/local/bin:/sbin:/usr/bin:/bin
REDISPORT=6379
EXEC=/usr/local/bin/redis-server
REDIS_CLI=/usr/local/bin/redis-cli
 
PIDFILE=/var/run/redis_6379.pid
CONF="/etc/redis/redis.conf"
AUTH="Passwd"
BIND_IP='0.0.0.0'
case "$1" in
        start)
                if [ -f $PIDFILE ]
                then
                       echo "$PIDFILE exists, process is already running or crashed."
                else
                       echo "Starting Redis server..."
                       $EXEC $CONF
                fi
                if [ "$?"="0" ]
                then
                       echo "Redis is running..."
                fi
                ;;
        stop)
                if [ ! -f $PIDFILE ]
                then
                       echo "$PIDFILE exists, process is not running."
                else
                       PID=$(cat $PIDFILE)
                       echo "Stopping..."
                       $REDIS_CLI -h $BIND_IP -a $AUTH -p $REDISPORT  SHUTDOWN
                       sleep 2
                       while [ -x $PIDFILE ]
                       do
                               echo "Waiting for Redis to shutdown..."
                               sleep 1
                       done
                       echo "Redis stopped"
                fi
                ;;
         restart|force-reload)
                ${0} stop
                ${0} start
                ;;
         *)
                echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
                exit 1
esac
chkconfig redis on    #設置開機自啟動
service redis restart    #啟動服務

3.5 設置密碼

編輯配置文件/etc/redis/redis.conf,重啟生效

requirepass redispwd  
redis-cli -p 6379 -a redispwd            #連接數據庫需要-a參數輸入密碼

3.6 備份恢復

使用命令查看備份目錄,此目錄為服務啟動時候的目錄,恢復可以將文件存放到此目錄下,重啟啟動redis服務,既可完成rdb數恢復。

CONFIG GET dir           #查看備份目錄
save                 #執行備份

Redis-3.2主從復制與集群搭建

4.Redis持久化

4.1 rdb方式

工作原理:

redis生成dump.rdb文件時,工作過程如下:

redis主進程fork一個子進程,fork出來的子進程將內存的數據集dump到臨時的RDB

當子進程對臨時的RDB文件寫入完畢,redis用新的RDB文件代替舊的RDB文件

默認配置如下:

save 900 1
save 300 10
save 60 10000

其意義:

1key更新值時每900秒保存一次數據到硬盤

10key更新值時每300秒保存一次到硬盤

10000key更新值時每60秒保存一次到硬盤

4.2 aof方式

aof本質是redis操作(寫操作)日志文件。aof默認是未開啟的,需要在配置文件中進行設置,在配置文件中將這一行改為appendonly yes就可以了。

工作原理:

AOF append only file

每當Redis執行一個改變數據集的命令時,這個命令都會被追加到AOF文件的末尾。

redis重新啟動時,程序可以通過AOF文件恢復數據。

三種appedn方式:

appendfsync always
appendfsync everysec
appendfsync no

appendfsync always每次有新命令追加到 AOF 文件時就執行一次 fsync :非常慢,也非常安全

appendfsync everysec每秒 fsync 一次:足夠快(和使用 RDB 持久化差不多),并且在故障時只會丟失 1 秒鐘的數據。

appendfsync no從不 fsync :將數據交給操作系統來處理。更快,也更不安全的選擇。

推薦(并且也是默認)的措施為每秒 fsync 一次, 這種 fsync 策略可以兼顧速度和安全性。

aof能夠保證數據的安全,但是在重啟時比較耗時,而且aof文件的體積比rdb文件大。

5.Redis主從復制

5.1 概述

Redisreplication機制允許slavemaster那里通過網絡傳輸拷貝到完整的數據備份。具有以下特點:

  • 異步復制,從2.8版本開始,slave能不時地從master那里獲取到數據。

  • 允許單個master配置多個slave,易橫向擴展

  • slave允許其它slave連接到自己。一個slave除了可以連接master外,它還可以連接其它的slave。形成一個圖狀的架構。

  • master在進行replication時是非阻塞的,這意味著在replication期間,master依然能夠處理客戶端的請求。

  • slavereplication期間也是非阻塞的,也可以接受來自客戶端的請求,但是它用的是之前的舊數據。可以通過配置來決定slave是否在進行replication時用舊數據響應客戶端的請求,如果配置為否,那么slave將會返回一個錯誤消息給客戶端。不過當新的數據接收完全后,必須將新數據與舊數據替換,即刪除舊數據,在替換數據的這個時間窗口內,slave將會拒絕客戶端的請求和連接。

  • 一般使用replication來可以實現擴展性,例如說,可以將多個slave配置為只讀,或者是純粹的數據冗余備份。

  • 能夠通過replication來避免master每次持久化時都將整個數據集持久化到硬盤中。只需把master配置為不進行持久化操作(把配置文件中持久化相關的配置項注釋掉即可),然后連接上一個slave,這個slave則被配置持久化選項。不過需要注意的是,在這個方案中,必須確保master不會自動啟動。

5.2 安全性

Master持久化功能關閉時Replication的安全性當有需要使用到replication機制時,一般都會強烈建議把master的持久化開關打開。即使為了避免持久化帶來的延遲影響,不把持久化開關打開,那么也應該把master配置為不會自動啟動的。

5.3 replication工作原理

如果你為master配置了一個slave,不管這個slave是否是第一次連接上Master,它都會發送一個SYNC命令給master請求復制數據。

master收到SYNC命令后,會在后臺進行數據持久化,持久化期間,master會繼續接收客戶端的請求,它會把這些可能修改數據集的請求緩存在內存中。當持久化進行完畢以后,master會把這份數據集發送給slaveslave會把接收到的數據進行持久化,然后再加載到內存中。然后,master再將之前緩存在內存中的命令發送給slave

masterslave之間的連接由于某些原因而斷開時,slave能夠自動重連master,如果master收到了多個slave并發連接請求,它只會進行一次持久化,而不是一個連接一次,然后再把這一份持久化的數據發送給多個并發連接的slave

masterslave斷開重連后,一般都會對整份數據進行復制。但從redis2.8版本開始,支

5.4 主從配置

replication相關的配置比較簡單,只需要把下面一行加到slave的配置文件中:

slaveof  masterIPaddress  6379

如果master通過requirepass配置項設置了密碼,slave每次同步操作都需要驗證密碼,可以通過在slave的配置文件中添加以下配置項:

masterauth <password>

6 常用命令

啟動redis

redis-server /etc/redis/redis.conf

客戶端命令工具

/usr/local/bin/redis-cli -h 192.168.1.1
192.168.1.1:6379> auth Passwd           #登錄,密碼驗證
192.168.1.1:6379>info               #查看數據庫狀態
192.168.1.1:6379>info replication            #查看slave的復制狀態
192.168.1.1:6379>set key 123          #插入數據
192.168.1.1:6379>keys *            #列出數據
flushdb                    #清空當前數據
flushall                   #清除所有數據庫


7.測試主從及切換

7.1 主從測試

Redis-3.2主從復制與集群搭建

Redis-3.2主從復制與集群搭建

7.2主從切換

停止主

Redis-3.2主從復制與集群搭建

切換從為主

redis-cli -h localhost slaveof NO ONE

Redis-3.2主從復制與集群搭建

恢復原來主數據庫

將現在的主redis根目錄下dump.rdb文件拷貝覆蓋到原來主redis的根目錄

啟動原來的主redis

Redis-3.2主從復制與集群搭建

在從數據庫切換主數據庫redis-cli -h localhost -p 6379 slaveof 172.17.10.193 6379

測試從已經切換回來

Redis-3.2主從復制與集群搭建


二、Redis 集群搭建

Redis高版本使用ruby實現了集群,所以需要ruby環境,安裝ruby環境和redisgem接口后,就可以使用redisredis-trib.rb腳本創建集群。

Redis安裝成功后,創建單獨目錄

mkdir /usr/local/redis/cluster -p

再在其下創建目錄 7000700170027003

mkdir /usr/local/redis/cluster/7000 -p
cp redis.conf /usr/local/redis/cluster/7000/

redis.conf分別拷貝到這幾個目錄下面,并分別修改redis.conf 中的端口號port和目錄名一致

分別修改配置文件

daemonize    yes                          //redis后臺運行
pidfile  /var/run/redis_7000.pid              //pidfile文件對應7000,7002,7003
port  7000                                //端口7000,7002,7003
cluster-enabled  yes                        //開啟集群  把注釋#去掉
cluster-config-file  nodes_7000.conf          //集群的配置  配置文件首次啟動自動生成 7000,7001,7002
cluster-node-timeout  5000                  //請求超時  設置5秒夠了
appendonly  yes                           //aof日志開啟  有需要就開啟,它會每次寫操作都記錄一條日志

Redis-3.2主從復制與集群搭建

查看服務是否已經起來

Redis-3.2主從復制與集群搭建

2.安裝相關軟件包

yum -y install ruby ruby-devel rubygems rpm-build

再用 gem 這個命令來安裝 redis接口    gemruby的一個工具包

gem install redis

如果安裝失敗,可手動安裝

wget https://rubygems.global.ssl.fastly.NET/gems/redis-3.2.1.gem
sudo gem install -l ./redis-3.2.1.gem

3.redis-trib.rb腳本創建集群

cd /root/redis-3.2.4/src
./redis-trib.rb create --replicas 1 172.17.10.191:7000 172.17.10.191:7001 172.17.10
7005 172.17.10.191:7006

--replicas  1  表示 自動為每一個master節點分配一個slave節點 

Redis-3.2主從復制與集群搭建

Redis-3.2主從復制與集群搭建

./redis-trib.rb check 172.17.10.191:7000

Redis-3.2主從復制與集群搭建

4.測試

redis-cli -c -p 7000

設置數據,然后停止7000端口監聽的redis

登錄其他,查看獲取數據。

Redis-3.2主從復制與集群搭建

Redis-3.2主從復制與集群搭建

Redis-3.2主從復制與集群搭建

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

航空| 砀山县| 合肥市| 曲水县| 玉林市| 天长市| 河北区| 栖霞市| 甘肃省| 乐平市| 丁青县| 武强县| 勃利县| 平远县| 台中市| 西丰县| 嘉荫县| 缙云县| 陆良县| 华亭县| 安多县| 通渭县| 玉溪市| 新田县| 河源市| 崇明县| 梨树县| 高陵县| 巴青县| 济南市| 托克逊县| 金川县| 郓城县| 平陆县| 和硕县| 天门市| 太谷县| 滕州市| 布尔津县| 河间市| 盱眙县|