• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      針對Redis主從復制

      2017-03-10 07:45:51
      網絡安全和信息化 2017年3期
      關鍵詞:群集快照鏡像

      引言:對于使用Redis服務器存儲數(shù)據(jù)的大型網站來說,如果僅僅使用一臺Redis服務器的話,不僅數(shù)據(jù)存儲速度得不到保證,而且存在很大的風險,一旦該機出現(xiàn)問題(例如數(shù)據(jù)丟失,磁盤損壞等),就會對網站運行造成不利影響。搭建Redis服務器集群,可以很好的解決該問題。如果主服務器宕機,只需簡單修改Redis配置文件,就可以讓從服務器擔當數(shù)據(jù)管理任務。

      Redis的持久化模式

      從運維角度上看,需要了解Redis的持久化概念。持久化指的是將數(shù)據(jù)存儲到斷電后不會丟失的設備中,例如將內存中的數(shù)據(jù)保存到硬盤中等。Redis支持RDB和AOF兩種持久化方式。對于前者來說,是基于內存快照的持久化方式,其工作原理是每隔幾分鐘或者幾次寫操作后,在某一瞬間從內存DUMP數(shù)據(jù)形成RDB文件,并將其壓縮保存到指定的目錄。因為其存儲的是整體內存鏡像數(shù)據(jù),所以在恢復時速度很快。RDB的配置信息保存在“redis.conf”文件中。

      執(zhí)行“vim redis.conf”命令,其中的“save 900 1”行表示在 900秒內,如果有1條寫入則產生快照。

      “save 300 1000”行的作用是如果300秒內有1000次數(shù)據(jù)寫入則產生快照?!皊ave 60 10000”行的作用是如果在60秒內有10000次數(shù)據(jù)寫入則產生快照。如果將以上三行配置全部屏蔽,則禁用RBD快照功能。

      “stop-writes-onbgsave-error”行的作用是當后臺備份進程出錯時,主進程是否停止寫入,“yes”表示確認,“no”表示否認。

      “rdbcompression”行的作用是是否對導出的rdb文件進行壓縮。

      “Rdbchecksum”行的作用是當導入rbd鏡像進行數(shù)據(jù)恢復時,是否檢驗rdb的完整性。

      “dbfilename”行的作用是指定導出的rdb文件名,“dir”行的作用是指定rdb文件的存儲路徑,默認放置在當前路徑。當Redis服務器運行出現(xiàn)故障時(例如斷電等),當重啟Redis服務時,其會自動從RDB文件中恢復數(shù)據(jù)。

      使用RDB快照實現(xiàn)數(shù)據(jù)持久化,存在一個明顯的問題。因為其只能在指定的時間間隔內對從內存中DUMP數(shù)據(jù)形成RDB鏡像文件,如果在前一個快照完成但后一個快照沒有創(chuàng)建之間突然斷電,這期間的數(shù)據(jù)顯然無法保存。

      為了實現(xiàn)更加精細的持久化,Redis提供了AOF日志記錄功能,可以將所有的操作命令記錄下來形成日志文件,這樣即使Redis出現(xiàn)異常情況,也可以利用日志進行數(shù)據(jù)的快速恢復。當然,RDB和AOF兩種方案可以并存。

      執(zhí)行“vim redis.conf”命令,將“appendonly”行的值設置為“yes”,表示啟用AOF功能,在“appendfilename”欄中可以更改日志文件存儲路徑。在“appendfsync”欄中設置同步方式,設置為“always”,表示將每一個命令都立即同步到aof日志中。設置為“everysec”表示每秒同步一次,設置為“no”,表示將入同步工作交給操作系統(tǒng)處理,由操作系統(tǒng)判斷緩沖區(qū)大小并統(tǒng)一寫入到aof日志文件中,其特點是同步頻率低但速度快。

      在“no-appendfsync-onrewrite”欄中設置當正在導出rdb快照的過程中是否停止同步aof日志,在“autoaof-rewrite-percentage 100”欄中設置aof日志重寫條件,如果當前的aof文件大小比上次重寫時的大小增長率100%時,則執(zhí)行重寫操作。

      重寫是指把內存中的數(shù)據(jù),逆化成命令寫入到aof日志中。之所執(zhí)行重寫,為的是避免在aof日志中存儲大量的冗余數(shù)據(jù)。例如對某個變量累加了100次,如果執(zhí)行重寫操作,則只記錄最有一次計算結果。利用重寫機制,可以大大減小aof文件的體積。在“auto-aofrewrite-min-size”欄中設置執(zhí)行重寫操作時,aof的最小體積。默認為64MB,即當aof文件大于64MB時,必須執(zhí)行重寫操作。

      當啟動AOF日志記錄功能后,當Rides服務出現(xiàn)異常,當重啟Redis服務后,可以發(fā)現(xiàn)數(shù)據(jù)得到很好的恢復。同RDB快照機制相比,AOF的數(shù)據(jù)恢復速度較慢,因為RDB是數(shù)據(jù)的內存映射,直接載入到內存,而aof是命令記錄需要逐條執(zhí)行。

      搭建Redis群集

      一般來說,Redis群集結構包括星形和線形等類型。對于前者來說,多臺Slave服務器共同為一臺Master服務器提供服務。對于后者來說,多臺Slave服務器之間也存在著從屬關系,例如當 Master宕 機 后,Slave1服務器可以變?yōu)橹鞣掌鳎琒lave2自動變?yōu)槠鋸姆掌鳌?/p>

      要想搭建Redis集群,必須了解集群的主從通信原理,即主動服務器之間是如何進行同步的。當Slave服務器啟動后,確定了其從屬的Master服務器,其會自動連接到Master主機,并發(fā)出同步請求,Master主機通過Dump操作從內存中抓取RDB鏡像,并將其該RDB鏡像傳送給Slave主機,Slave主機直接在內存中恢復該鏡像,這樣兩者的內存數(shù)據(jù)實現(xiàn)了同步。

      當 然,Master主 機 的Redis中的命令和數(shù)據(jù)是不斷變化的,這些數(shù)據(jù)會緩存到內存中的AOF隊列中,之后將AOF數(shù)據(jù)同步到Slave主機上。這樣,就實現(xiàn)了主從復制操作。以后當Mater主機數(shù)據(jù)發(fā)生變動后,就會通過ReplicationFeedSlaves進程通知Slave主機及時進行同步。

      在本例中,使用了星形的群集結構,一臺名為Master的服務器,兩臺名稱分別為Slave1和Slave2的從服務器。在這三臺主機上都安裝好Redis。

      在Slave1上 執(zhí) 行“vim redis.conf” 命 令,打開其配置文件,在其中的“dbfilename”欄中可以更改RDB文件的存儲路徑。刪除“slave of ”一行前面的“#”字符,激活其從服務器功能,并將其修改為“slave of 192.168.1.10 6379”,其 中 的“192.168.1.10”為Master服務器的IP,TCP 6379為通訊端口。在“slave-read-only” 行 中確保其值 為“yes”,即 讓Slave1處于只讀狀態(tài)。將“appendonly”行的值修改為“no”,禁止其執(zhí)行AOF日志功能。其余的設置保持不變,保存該配置文件。在Slave2上執(zhí)行同樣的命令,對Redis配置文件進行同樣的修改,所不同的是,需要將其中的“save 900”,“save 300 10”,“save 60 3000”等 行的前面添加“#”符號,將其屏蔽掉,這樣就關閉了其RDB功能,即不允許其抓起內存快照。

      因為創(chuàng)建RDB快照比較消耗IO資源,既然Slave1已經默認開啟了創(chuàng)建RDB快照的功能,Slave2就沒有必要執(zhí)行相同的操作了。這樣,兩臺從服務器就配置完成了。對于Master服務器來說,執(zhí)行“vim redis.conf”命令,按照同樣的方法,禁用RDB功能,因為創(chuàng)建RDB快照的功能已經交由Slave1完成。在主從服務器上分別執(zhí)行“./bin/redisserver redis.conf”命令,來啟動Redis服務。這樣,Redis群集就已經開始運作了。之后可以對其進行測試,在Master上 執(zhí) 行“./bin/redis-cli”命令,連接完成后,執(zhí)行“set name xxx”命令,創(chuàng)建一個Key變量。當連接到上述Slave服務器,執(zhí)行“keys *”命令,可以發(fā)現(xiàn)上面建立的Key值。

      但是,當試圖在從服務器上對指定的Key值進行修改時,系統(tǒng)會顯示“(error)Readonly You cant’t write against a read only slave”內容,禁止執(zhí)行寫操作,防止主從服務器之間出現(xiàn)數(shù)據(jù)不一致的情況。由此看出,Redis群集的搭建可謂簡單,對于Master服務器來說,可以關閉RDB快照功能,將數(shù)據(jù)備份工作交給從服務器完成,可以根據(jù)需要開啟AOF日志功能。

      對于Slave從服務器來說,需要聲明其從屬身份,針對某個Slave主機開啟RDB快照功能,并將其設置為只讀功能。

      為了提高安全性,可以根據(jù)需要為群集配置密碼。其方法是在主從服務器上分別打開Redis配置文件,將其中的“requirepass foobared”行前面的“#”符號刪除,激活其密碼保護功能,將默認的“foobared”的密碼修改為所需的密碼。

      設置了密碼后,當連接到主Redis服務器后,需要執(zhí)行“Auth xxxx”命令,其中的“xxxx”表示具體的密碼,授權通過后,才可以執(zhí)行各種指令。對于從服務器來說,則直接使用該密碼和主服務器進行通訊。

      對于Redis群集來說,其實際上是存在某些缺陷的。即當Slave主機因為各種原因和主服務器斷開后,當其再次連接Master主機時,都要再次通過Dump操作從Master主機內存中抓取RDB鏡像,并將其該RDB鏡像傳送給Slave主機,Slave主機直接在內存中恢復該鏡像。同時將Master主機上AOF數(shù)據(jù)同步到Slave主機上。

      在這種情況下,不要將所有的Slave服務器全部啟動起來,否則很可能導致Master主機的IO吞吐量劇增,處理方法是分時逐臺啟動Slave服務器,以降低Master主機的工作壓力。

      猜你喜歡
      群集快照鏡像
      EMC存儲快照功能分析
      天津科技(2022年5期)2022-05-31 02:18:08
      Cecilia Chiang, pioneer of Chinese cuisine
      鏡像
      當代黨員(2020年20期)2020-11-06 04:17:52
      鏡像
      小康(2018年23期)2018-08-23 06:18:52
      創(chuàng)建磁盤組備份快照
      基于自組織結對行為的群集機器人分群控制方法
      淺談ODX與動態(tài)群集
      鏡像
      小康(2015年4期)2015-03-31 14:57:40
      鏡像
      小康(2015年6期)2015-03-26 14:44:27
      數(shù)據(jù)恢復的快照策略
      徐闻县| 萝北县| 黎川县| 康马县| 广东省| 修武县| 大足县| 洪泽县| 呼玛县| 大新县| 镶黄旗| 新宾| 防城港市| 连城县| 潮州市| 福海县| 绥芬河市| 分宜县| 岑巩县| 秦皇岛市| 金门县| 蕉岭县| 永登县| 漾濞| 澳门| 杂多县| 永川市| 德江县| 长兴县| 田林县| 株洲市| 武陟县| 涿州市| 江川县| 清丰县| 甘南县| 左云县| 连南| 外汇| 乐昌市| 木里|