<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    jinfeng_wang

    G-G-S,D-D-U!

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks
    http://bboyjing.github.io/2016/12/08/Redis%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%9D%E3%80%90%E5%A4%84%E7%90%86%E7%B3%BB%E7%BB%9F%E6%95%85%E9%9A%9C%E3%80%91/



    如果決定要將Redis用作應用程序唯一的數據存儲手段的話,那么就必須確保Redis不會丟失任何數據。根提供了ACID保證的傳統關系數據庫不同,在使用Redis為后端構建應用程序的時候,我們需要多做一些工作才能保證數據的一致性。

    驗證快照文件和AOF文件

    無論時快照持久化還是AOF持久化,都提供了在遇到系統故障時進行數據回復的工具。Redis提供了兩個命令行程序redis-check-aof和redis-check-dump(redis-check-rdb),它們可以在系統故障發生之后,檢查AOF文件和快照文件的狀態,并在有需要的情況下對文件進行修復。下面是使用方法:

    1
    2
    3
    4
    5
    cd /opt/redis-3.2.4
    redis-3.2.4 src/redis-check-aof
    Usage: src/redis-check-aof [--fix] <file.aof>
    redis-3.2.4 src/redis-check-rdb
    Usage: src/redis-check-rdb <rdb-file-name>

    如果運行redis-check-aof程序時給了–fix參數,那么會對AOF文件進行修復。修復方法非常簡單:掃描AOF文件,尋找不正確或不完整的命令,當發現第一個出錯命令的時候,程序會刪除出錯的命令以及位于出錯命令之后的所有命令。在大多數情況下,被刪除的都是AOF文件末尾的不完整寫命令。
    遺憾的是,目前沒有辦法修復出錯的快照文件。盡管發現快照文件收個出現錯誤的地方是有可能的,但因為快照文件本身經過了壓縮,而出現在快照文件中間的錯誤有可能會導致快照文件的剩余部分無法讀取。因此,最好為重要的快照文件保留多個備份。

    更換故障主服務器

    我們來看一下在擁有一個主服務器和一個從服務器的情況下,更換主服務器的具體步驟。假設A、B兩臺機器都運行著Redis,機器A為master,機器B為slave。機器A因為暫時無法修復的故障而斷開了連接,因此決定將同樣安裝了Redis的機器C用作新的主服務器。
    更換服務器的計劃非常簡單:首先像機器B發送一個SAVE命令,讓它創建一個新的快照文件,接著將這個快照文件發送給機器C,并在機器C上面啟動Redis。最后讓B成為機器C的從從服務器。由于環境有限,就在同一臺機器上起不同的端口測試,本機已經安裝了兩個Redis服務,下面演示下步驟:

    1. 再安裝一個Redis服務并修改port配置,改為6381

      1
      2
      3
      4
      cd /opt
      sudo cp -r redis-3.2.4 redis-new-master
      sudo chmod -R 777 redis-new-master
      vim redis-new-master/redis.conf
    2. 啟動機器A、B,讓環境正常運行

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      //啟動機器A
      cd /opt/redis-3.2.4
      ./src/redis-server redis.conf
      //添加一個key
      ./src/redis-cli
      127.0.0.1:6379> set key4 haha
      OK
      //啟動機器B
      cd /opt/redis-replication
      ./src/redis-server redis.conf
    3. kill掉機器A的Redis服務,此時只剩Redis從服務在運行

    4. 向機器B發送SAVE命令

      1
      2
      3
      4
      cd /opt/redis-replication
      ./src/redis-cli -h localhost -p 6380
      localhost:6380> SAVE
      OK
    5. 將機器B的快照文件復制到機器C的對應目錄,并啟動Redis服務

      1
      2
      3
      cp -f /opt/redis-replication/dump.rdb /opt/redis-new-master
      cd /opt/redis-new-master
      src/redis-server redis.conf
    6. 讓機器B成為機器C的從服務器

      1
      2
      localhost:6380> SLAVEOF localhost 6381
      OK

      從機器B的日志已經可以看出成功連接上了6381的新主服務

    7. 測試機器B是否能從機器C同步數據
      1
      2
      3
      4
      5
      6
      7
      8
      //連接新master并新增key
      cd /opt/redis-new-master
      ./src/redis-cli -h localhost -p 6381
      localhost:6381> set key5 new_master
      OK
      //查看B機器的key,成功
      localhost:6380> get key5
      "new_master"

    Redis Sentinel可以監視指定的Redis主服務器及其下屬的從服務器,并在主服務器下線時自動進行故障轉移(failover),后面再學習這個功能。

    posted on 2016-12-14 15:26 jinfeng_wang 閱讀(177) 評論(0)  編輯  收藏 所屬分類: 2016-REDIS
    主站蜘蛛池模板: 国产亚洲福利精品一区二区| 亚洲国产成人无码av在线播放| 亚洲欧美成人综合久久久| 8x成人永久免费视频| 亚洲AV日韩AV永久无码免下载| 抽搐一进一出gif免费视频| 亚洲第一网站男人都懂| 无套内射无矿码免费看黄| 亚洲高清成人一区二区三区| 日本免费精品一区二区三区| 亚洲永久精品ww47| 国产日韩AV免费无码一区二区| 亚洲丁香色婷婷综合欲色啪| 久久国产乱子伦精品免费一| 精品久久免费视频| 久久久久久久尹人综合网亚洲| 在线毛片片免费观看| 91在线亚洲精品专区| 免费精品人在线二线三线区别 | 国产精品视频免费观看| 爱情岛论坛网亚洲品质自拍| fc2免费人成为视频| 免费观看男人免费桶女人视频| 美女18一级毛片免费看| 亚洲人成77777在线播放网站| 2015日韩永久免费视频播放| 亚洲无吗在线视频| 亚洲人成色7777在线观看不卡 | 精品亚洲一区二区| 59pao成国产成视频永久免费 | 青青久久精品国产免费看| 亚洲成色在线综合网站| 色窝窝免费一区二区三区| 67pao强力打造67194在线午夜亚洲| 国产福利在线免费| 一二三区免费视频| 亚洲三级在线观看| 黄页网站在线看免费| 一级毛片a免费播放王色电影| 亚洲一本综合久久| 国产精品酒店视频免费看|