目錄
一、Master&Slave是什麼?
二、它能幹嘛?
三、怎麼玩?
四、複製原理
五、哨兵模式(sentinel)
六、複製的缺點
Redis master, slave節點部署詳解
首頁 資料庫 Redis Redis實現主從複製的方法是什麼

Redis實現主從複製的方法是什麼

May 29, 2023 pm 02:21 PM
redis

    一、Master&Slave是什麼?

    也就是我們所說的主從複製,主機資料更新後根據配置和策略,自動同步到備機的master/slaver機制,Master以寫為主,Slave以讀為主。

    二、它能幹嘛?

    1、讀寫分離;

    2、容災復原。

    三、怎麼玩?

    1、配從(庫)不配主(庫);

    2、從庫配置:slaveof [主庫IP] [主庫連接埠];

    • 補充:每次slave與master斷開後,都需要重新連接,除非你配置進redis.conf檔;

    • 鍵入info replication 可以查看redis主從資訊.

    3、修改設定檔細節操作

    - 拷貝多個redis.conf檔

    Redis實現主從複製的方法是什麼

    - 指定連接埠

    Redis實現主從複製的方法是什麼

    - 開啟daemonize yes

    Redis實現主從複製的方法是什麼

    - Pid檔名

    Redis實現主從複製的方法是什麼

    - Log檔案名稱

    Redis實現主從複製的方法是什麼

    - Dump.rdb名字

    Redis實現主從複製的方法是什麼

    4、常用3招

    - 一主二僕

    Redis實現主從複製的方法是什麼

    一個Master,兩個Slave,Slave只能讀不能寫;當Slave與Master斷開後需要重新slave of連接才可建立之前的主從關係;Master掛掉後,Master關係依然存在,Master重啟即可恢復。

    - 薪火相傳

    Redis實現主從複製的方法是什麼

    上一個Slave可以是下一個Slave的Master,Slave同樣可以接收其他slaves的連接和同步請求,那麼該slave作為了鏈條中下一個slave的Master,如此可以有效減輕Master的寫壓力。如果從伺服器在中途更改了資料同步的主伺服器,則舊資料將會清除並重新建立與最新主伺服器的同步。

    - 反客為主

    當Master掛掉後,Slave可鍵入指令 slaveof no one使目前redis停止與其他Master redis資料同步,轉成Master redis。

    四、複製原理

    1、Slave啟動成功連線到master後會發送一個sync指令;

    2、Master接到指令啟動後的記憶體進程,同時收集所有接收到的用於修改資料集指令,在後台程序執行完畢之後,master 將傳送整個資料檔到slave,以完成一次完全同步;

    3、全量複製:而slave服務在資料庫文件資料後,將其記憶體並載入到記憶體中;

    4、增量複製:Master繼續將新的所有收集到的修改命令依次傳給slave,完成同步;

    5.但是只要是重新連線master,一次完全同步(全量複製)就會自動執行。

    五、哨兵模式(sentinel)

    反客為主的自動版,能夠後台監控Master庫是否有故障,如果故障了根據投票數自動將slave庫轉換為主函式庫。一組sentinel能同時監控多個Master。

    使用步驟:

    1、在Master對應redis.conf同目錄下新建sentinel.conf文件,名字絕對不能錯;

    2 、設定哨兵,在sentinel.conf檔案中填入內容:

    • sentinel monitor 被監控資料庫名稱(自己取名字) ip port 1

    • #說明:上面最後一個數字1,表示主機掛掉後slave投票看讓誰接替成為主機,得票數多少後成為主機。

    3、啟動哨兵模式:

    • 指令鍵入:redis-sentinel /myredis/sentinel.conf

    • #附註:上述sentinel.conf路徑依各自實際情況配置

    六、複製的缺點

    延時,由於所有的寫入操作都是在Master上操作,然後同步更新到Slave上,所以從Master同步到Slave機器有一定的延遲,當系統很繁忙的時候,延遲問題會更加嚴重,Slave機器數量的增加也會使得這個問題更加嚴重。

    Redis master, slave節點部署詳解

    1. 建立兩個redis.conf檔, 一主一從

    redis_6379.conf
    redis_6380.conf
    登入後複製

    2. master conf 主要設定

    bind 127.0.0.1
    port 6379
    protected-mode yes
    daemonize yes
    pidfile /var/run/redis_6379.pid
    logfile "/Data/apps/redis-3.2.12/logs/redis_6379.log"
    dbfilename dump_6379.rdb
    dir /Data/apps/redis-3.2.12/workplace
    requirepass paopao
    登入後複製

    3. slave conf 主要配置

    bind 127.0.0.1
    port 6380
    protected-mode yes
    daemonize yes
    pidfile /var/run/redis_6380.pid
    logfile "/Data/apps/redis-3.2.12/logs/redis_6380.log"
    dbfilename dump_6380.rdb
    dir /Data/apps/redis-3.2.12/workplace
    slaveof 127.0.0.1 6379
    masterauth paopao
    登入後複製

    4. 啟動主從redis-server進程

    redis-server /Data/apps/redis-3.2.12/conf/redis_6379.conf
    redis-server /Data/apps/redis-3.2.12/conf/redis_6380.conf
    登入後複製

    5.其他相關設定

    # 当从库同主机失去连接或者复制正在进行,从机库有两种运行方式:
    # 1) 如果slave-serve-stale-data设置为yes(默认设置),从库会继续相应客户端的请求
    # 2) 如果slave-serve-stale-data是指为no,除去INFO和SLAVOF命令之外的任何请求都会返回一个
    #    错误"SYNC with master in progress"
    slave-serve-stale-data yes
    slave-read-only yes
    # 从库会按照一个时间间隔向主库发送PINGs.可以通过repl-ping-slave-period设置这个时间间隔,默认是10秒
    repl-ping-slave-period 10
    # repl-timeout 设置主库批量数据传输时间或者ping回复时间间隔,默认值是60秒
    # 一定要确保repl-timeout大于repl-ping-slave-period
    repl-timeout 60
    # slave节点磁盘慢, 网速快时, 置为yes, master上的rdb文件将以socket方式传输, 跳过磁盘存储
    repl-diskless-sync no
    # 传输前等待秒数, 为了等待更多的slave节点加入
    repl-diskless-sync-delay 5
    # 传输时,是否禁用tcp nodelay
    repl-disable-tcp-nodelay no
    # 复制缓冲区大小
    repl-backlog-size 1mb
    # 复制缓冲区释放周期
    repl-backlog-ttl 3600
    # 为了sentinal模式, 选举master准备, 数值越小, 优先级越高
    slave-priority 100
    # require at least 3 slaves with a lag <= 10 seconds use
    min-slaves-to-write 3
    min-slaves-max-lag 10
    # 可覆盖bind, port 配置, 对外ip port
    slave-announce-ip 5.5.5.5
    slave-announce-port 1234
    登入後複製

    以上是Redis實現主從複製的方法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    AI Hentai Generator

    AI Hentai Generator

    免費產生 AI 無盡。

    熱門文章

    R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
    1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.最佳圖形設置
    1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.如果您聽不到任何人,如何修復音頻
    1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.聊天命令以及如何使用它們
    1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強大的PHP整合開發環境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    redis集群模式怎麼搭建 redis集群模式怎麼搭建 Apr 10, 2025 pm 10:15 PM

    Redis集群模式通過分片將Redis實例部署到多個服務器,提高可擴展性和可用性。搭建步驟如下:創建奇數個Redis實例,端口不同;創建3個sentinel實例,監控Redis實例並進行故障轉移;配置sentinel配置文件,添加監控Redis實例信息和故障轉移設置;配置Redis實例配置文件,啟用集群模式並指定集群信息文件路徑;創建nodes.conf文件,包含各Redis實例的信息;啟動集群,執行create命令創建集群並指定副本數量;登錄集群執行CLUSTER INFO命令驗證集群狀態;使

    redis數據怎麼清空 redis數據怎麼清空 Apr 10, 2025 pm 10:06 PM

    如何清空 Redis 數據:使用 FLUSHALL 命令清除所有鍵值。使用 FLUSHDB 命令清除當前選定數據庫的鍵值。使用 SELECT 切換數據庫,再使用 FLUSHDB 清除多個數據庫。使用 DEL 命令刪除特定鍵。使用 redis-cli 工具清空數據。

    redis指令怎麼用 redis指令怎麼用 Apr 10, 2025 pm 08:45 PM

    使用 Redis 指令需要以下步驟:打開 Redis 客戶端。輸入指令(動詞 鍵 值)。提供所需參數(因指令而異)。按 Enter 執行指令。 Redis 返迴響應,指示操作結果(通常為 OK 或 -ERR)。

    redis怎麼使用單線程 redis怎麼使用單線程 Apr 10, 2025 pm 07:12 PM

    Redis 使用單線程架構,以提供高性能、簡單性和一致性。它利用 I/O 多路復用、事件循環、非阻塞 I/O 和共享內存來提高並發性,但同時存在並發性受限、單點故障和不適合寫密集型工作負載的局限性。

    redis怎麼讀源碼 redis怎麼讀源碼 Apr 10, 2025 pm 08:27 PM

    理解 Redis 源碼的最佳方法是逐步進行:熟悉 Redis 基礎知識。選擇一個特定的模塊或功能作為起點。從模塊或功能的入口點開始,逐行查看代碼。通過函數調用鏈查看代碼。熟悉 Redis 使用的底層數據結構。識別 Redis 使用的算法。

    redis底層怎麼實現 redis底層怎麼實現 Apr 10, 2025 pm 07:21 PM

    Redis 使用哈希表存儲數據,支持字符串、列表、哈希表、集合和有序集合等數據結構。 Redis 通過快照 (RDB) 和追加只寫 (AOF) 機制持久化數據。 Redis 使用主從復制來提高數據可用性。 Redis 使用單線程事件循環處理連接和命令,保證數據原子性和一致性。 Redis 為鍵設置過期時間,並使用 lazy 刪除機制刪除過期鍵。

    redis怎麼讀取隊列 redis怎麼讀取隊列 Apr 10, 2025 pm 10:12 PM

    要從 Redis 讀取隊列,需要獲取隊列名稱、使用 LPOP 命令讀取元素,並處理空隊列。具體步驟如下:獲取隊列名稱:以 "queue:" 前綴命名,如 "queue:my-queue"。使用 LPOP 命令:從隊列頭部彈出元素並返回其值,如 LPOP queue:my-queue。處理空隊列:如果隊列為空,LPOP 返回 nil,可先檢查隊列是否存在再讀取元素。

    redis怎麼使用鎖 redis怎麼使用鎖 Apr 10, 2025 pm 08:39 PM

    使用Redis進行鎖操作需要通過SETNX命令獲取鎖,然後使用EXPIRE命令設置過期時間。具體步驟為:(1) 使用SETNX命令嘗試設置一個鍵值對;(2) 使用EXPIRE命令為鎖設置過期時間;(3) 當不再需要鎖時,使用DEL命令刪除該鎖。

    See all articles