redis資料庫安裝 redis持久化及主從複製

来源:https://www.cnblogs.com/omgasw/archive/2019/04/23/10755405.html
-Advertisement-
Play Games

安裝redis-5.0.4 修改配置文件 創建命令鏈接 設置redis開機自啟動 啟動redis服務 測試連接 安裝過程可能出現的問題 1.CentOS預設沒有安裝gcc,這會導致我們無法make成功 2.make時報如下錯誤: zmalloc.h:50:31: fatal error: jemal ...


----------------------------------------安裝redis-5.0.4----------------------------------------

wget http://download.redis.io/releases/redis-5.0.4.tar.gz
tar zxvf redis-5.0.4.tar.gz -C /usr/local/
mv /usr/local/redis-5.0.4 /usr/local/redis
cd /usr/local/redis
make

修改配置文件

bind 192.168.100.101    #配置監聽地址
protected-mode no    #關閉保護模式,允許外網連接資料庫
daemonize yes    #開啟以後臺方式運行
logfile "/usr/local/redis/log/redis.log"    #日誌文件路徑
dir /usr/local/redis/    #dump快照存放路徑
mkdir /usr/local/redis/log;touch /usr/local/redis/log/redis.log  #創建日誌文件

創建命令鏈接

ln -s /usr/local/redis/src/redis-cli /usr/local/bin/redis
ln -s /usr/local/redis/src/redis-cli /usr/local/bin/redis-cli
ln -s /usr/local/redis/src/redis-server /usr/local/bin/redis-server

設置redis開機自啟動

echo "redis-server /usr/local/redis/redis.conf" >> /etc/rc.local
chmod +x /etc/rc.local

啟動redis服務

redis-server /usr/local/redis/redis.conf

測試連接

redis-cli

 

安裝過程可能出現的問題

1.CentOS預設沒有安裝gcc,這會導致我們無法make成功

yum install gcc-c++ -y  #解決辦法:yum安裝開發環境

2.make時報如下錯誤:

zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory

#include <jemalloc/jemalloc.h>

              ^

compilation terminated.

make[1]: *** [adlist.o] Error 1

make[1]: Leaving directory `/root/redis-5.0.4/src'

make: *** [all] Error 2

原因是jemalloc重載了Linux下的ANSI C的malloc和free函數

make MALLOC=libc  #解決辦法:make時添加參數

3.make之後,會出現一句提示

Hint: To run 'make test' is a good idea ;) 

但是不測試,通常是可以使用的;若我們運行make test ,會有如下提示

[devnote@devnote src]$ make test

You need tcl 8.5 or newer in order to run the Redis test

make: ***[test] Error_1

yum install tcl -y  #解決辦法:yum安裝tcl8.5

 

----------------------------------------redis持久化方式----------------------------------------

RDB持久化:將Reids在記憶體中的資料庫記錄定時dump到磁碟上,類似於快照功能(半持久化模式)

RDB方式配置:vim /usr/local/redis/redis.conf
save 900 1    #開啟RDB快照功能,在900秒內完成一個key值得變動觸發快照功能,如若將所有save配置項都註釋掉,那麼則將關閉RDB快照功能
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes    #當RDB快照後臺進程失敗,不影響用戶得寫操作
rdbcompression yes    #是否將RDB快照文件壓縮,關閉後會增加性能
rdbchecksum no    #關閉RDB快照文件的檢查校驗,增加性能
dbfilename dump.rdb    #快照文件的名稱
dir ./    #快照文件的存儲路徑,./為redis的安裝目錄下

 

AOF持久化:append only file--原理是將Reids的操作日誌以追加的方式寫入文件,近似實時性(全持久化模式)

AOF持久化方式配置:vim /usr/local/redis/redis.conf
#save 900 1
#save 300 10
#save 60 10000
appendonly yes    #開啟AOF持久化方式
appendfilename "appendonly.aof"    #指定持久化的文件
appendfsync everysec    #頻率,具體參數見下表
no-appendfsync-on-rewrite no    #如若設置為yes,則redis執行的命令會存放到緩衝區,待系統自動同步到硬碟
auto-aof-rewrite-percentage 100    #若當前寫入的AOF文件達到了上次rewrite文件大小的100%,則觸發rewrite操作
auto-aof-rewrite-min-size 64mb    #設置AOF持久化重寫文件的最小值,當達到60M並且符合100%的條件時,則觸發rewrite操作
選項 同步頻率
always 每一次寫操作都會調用一次fsync,這時數據是最安全的,當然,由於每次都會執行fsync,所以其性能也會受到影響
everysec 預設每隔一秒進行一次fsync調用,將緩衝區中的數據寫到磁碟,但是當這一次的fsync調用時長超過1秒時。Redis會採取延遲fsync的策略,再等一秒鐘。也就是在兩秒後再進行fsync,這一次的fsync就不管會執行多長時間都會進行
no redis不會主動調用fsync去將AOF日誌內容同步到磁碟,所以這一切就完全依賴於操作系統的調試了。對大多數Linux操作系統,是每30秒進行一次fsync,將緩衝區中的數據寫到磁碟上

 

 

 

----------------------------------------redis主從複製----------------------------------------

同步類型:

1.全量同步:

redis全量複製一般發生在Replica初始化階段,這時Replica需要將Master上的所有數據都複製一份。具體步驟如下: 

1)從伺服器連接主伺服器,發送SYNC命令(從伺服器向主伺服器初次同步時,不會影響主伺服器接收客戶端的請求); 

2)主伺服器接收到SYNC命名後,開始執行BGSAVE命令生成RDB文件並使用緩衝區記錄此後執行的所有寫命令; 

3)主伺服器BGSAVE執行完後,向所有從伺服器發送快照文件,併在發送期間繼續記錄被執行的寫命令; 

4)從伺服器收到快照文件後丟棄所有舊數據,載入收到的快照; 

5)主伺服器快照發送完畢後開始向從伺服器發送緩衝區中的寫命令; 

6)從伺服器完成對快照的載入,開始接收命令請求,並執行來自主伺服器緩衝區的寫命令; 

完成上面幾個步驟後就完成了從伺服器數據初始化的所有操作,從伺服器此時可以接收來自用戶的讀請求

2.增量同步:

redis增量複製是指Replica初始化後開始正常工作時主伺服器發生的寫操作同步到從伺服器的過程。 增量複製的過程主要是主伺服器每執行一個寫命令就會向從伺服器發送相同的寫命令,從伺服器接收並執行收到的寫命令

同步策略:

主從剛剛連接的時候,進行全量同步;全同步結束後,進行增量同步;如果有需要Replica在任何時候都可以發起全量同步;redis策略是,無論如何,首先會嘗試進行增量同步,如不成功,要求從機進行全量同步

註:如果多個Replica斷線了,需要重啟的時候,因為只要Replica啟動,就會發送sync請求和主機全量同步,當多個同時出現的時候,可能會導致Master IO劇增導致宕機

建議開啟master主伺服器的持久化功能,避免出現master重啟後,數據無法恢復;

主從配置:

Master配置 vim /usr/local/redis/redis.conf
min-replicas-to-write 2    #設置replica節點的數量,如果replica節點數量少於此值,那麼master節點將停止客戶端的一切寫請求
min-replicas-max-lag 10    #master與replica之間同步數據的超時時間,若超過此時間,master節點將停止客戶端的一切寫操作
Replica配置 vim /usr/local/redis/redis.conf
replicaof 192.168.100.101 6379    #指定master的ip地址以及埠
masterauth 123123    #指定master的連接密碼
驗證主從複製
192.168
.100.101:6379> info replication #查看複製信息

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 資料庫設計 物理設計: 選擇合適的資料庫管理系統。 考慮因素:成本,業務場景,開發語言,功能,操作系統等。 選擇合適的資料庫管理系統。 考慮因素:成本,業務場景,開發語言,功能,操作系統等。 Oracle 2.定義資料庫,表及欄位,要符合命名規範。 選擇存儲引擎:這裡以MySQL為例 選擇存儲引擎: ...
  • 1. 備份與還原的基礎說明 我們知道在DBA的日常工作中,SQL Server 資料庫的恢復請求偶有發生,可能是用作數據的追蹤,可也可能能是資料庫的災難恢復。 資料庫常用的備份命令如下: 備份文件的命名格式為:資料庫名字_備份類型(Full或Diff或Trn的一種)_時間格式.文件類型(bak或tr ...
  • 1、通過yum安裝: yum install redis 2、設置redis.conf中daemonize為yes。設置密碼: requirepass 3、安裝完後的啟動腳本是完善的,/etc/init.d/redis,不需要再另外操作。 查看啟動列表: chkconfig --list 安裝完可以 ...
  • --語 句 功 能--數據操作SELECT --從資料庫表中檢索數據行和列INSERT --向資料庫表添加新數據行DELETE --從資料庫表中刪除數據行UPDATE --更新資料庫表中的數據 --數據定義 CREATE TABLE --創建一個資料庫表DROP TABLE --從資料庫中刪除表 A ...
  • 由於資料庫存的是整個字元串組到一起了,C#代碼是這個樣子的。 在sqlserver中存儲的實際值是:20190416124941。那麼直接轉換? 所以在sqlserver中查詢的時候我們要進行轉化,因為在mssql中進行轉換需要是有標準的 例如/ : 等符號。那麼我們就進行截取吧。 最後就完事了。 ...
  • 加鎖的主要目的是為了防止併發操作時導致的數據不一致等問題,鎖分為共用鎖(S)、更新鎖(U)、排他鎖(X),共用鎖與更新只是單向相容?傳說中的單相思? 事務 事務能保證數據操作的原子性,要麼內部操作都提交,要麼都回退。事務內部某個地方出錯時,可以回滾前面的操作,比如更新、刪除等。 共用鎖 共用鎖允許並 ...
  • 在資料庫的鎖機制中介紹過,資料庫管理系統(DBMS)中的併發控制的任務是確保在多個事務同時存取資料庫中同一數據時不破壞事務的隔離性和統一性以及資料庫的統一性。 樂觀併發控制(樂觀鎖)和悲觀併發控制(悲觀鎖)是併發控制主要採用的技術手段。 無論是悲觀鎖還是樂觀鎖,都是人們定義出來的概念,可以認為是一種 ...
  • 一、統計語句 1、--統計當前【>當天00點以後的數據】 SELECT * FROM 表 WHERE CONVERT(Nvarchar, dateandtime, 111) = CONVERT(Nvarchar, GETDATE(), 111) ORDER BY dateandtime DESC 2 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...