<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                >[info] 持久化的選擇 在實際生產環境中,根據數據量、應用對數據的安全要求、預算限制等不同情況,會有各種各樣的持久化策略;如完全不使用任何持久化、使用RDB或AOF 的一種,或同時開啟RDB和AOF持久化等。此外,持久化的選擇必須與Redis的主從策略一起考慮,因為主從復制與持久化同樣具有數據備份的功能, 而且主機master和從機slave可以獨立的選擇持久化方案。 ***** 分場景來討論持久化策略的選擇,下面的討論也只是作為參考,實際方案可能更復雜更具多樣性。 1)如果Redis中的數據完全丟棄也沒有關系(如Redis完全用作DB層數據的cache),那么無論是單 機, 還是主從架構,都可以不進行任何持久化。 2)在單機環境下(對于個人開發者,這種情況可能比較常見),如果可以接受十幾分鐘或更多的數據丟 失,選擇RDB對Redis的性能更加有利; 如果只能接受秒級別的數據丟失,應該選擇AOF。 3)但在多數情況下,我們都會配置主從環境,slave的存 ***** **在這種情況下的做法是:** 1. **master:** 完全關閉持久化(包括RDB和AOF),這樣可以讓master的性能達到最好; **slave:** 關閉 RDB,開啟AOF(如果對數據安全要求不高,開啟RDB關閉AOF也可以),并定時對持久化文件進行備份(如備 份到其他文件夾,并標記好 備份的時間); 2. 然后關閉AOF的自動重寫,然后添加定時任務,在每天Redis閑時(如凌晨12點)調用bgrewriteaof。 ***** **這里需要解釋一下,為什么開啟了主從復制,可以實現數據的熱備份,還需要設置持久化呢?因為在一些 特殊情況下,主從復制仍然不足以保證數 據的安全,例如:** * master和slave進程同時停止:考慮這樣一種場景,如果master和slave在同一個機房,則一次停電事 故就可能導致master和slave機器同時關機, Redis進程停止;如果沒有持久化,則面臨的是數據的完全丟失。 ***** **master誤重啟:** * 考慮這樣一種場景,master服務因為故障宕掉了,如果系統中有自動拉起機制(即檢測 到服務停止后重啟該服務)將master自動重 啟,由于沒有持久化文件,那么master重啟后數據是空的, slave同步數據也變成了空的; * 如果master和slave都沒有持久化,同樣會面臨數據的完全丟失。需要注意的是,即便是使用了哨兵進行 自 動的主從切換, 也有可能在哨兵輪詢到master之前,便被自動拉起機制重啟了。因此,應盡量避免“自動 拉起機制”和“不做持久化”同時出現。 ***** **異地災備:** * 上述討論的幾種持久化策略,針對的都是一般的系統故障,如進程異常退出、宕機、斷電 等,這些故障不會損壞硬盤。但是對于一些可能 導致硬盤損壞的災難情況,如火災地震,就需要進行異地災備。 * 例如對于單機的情形,可以定時將RDB文件或重寫后的AOF文件,通過scp拷貝到遠程機器,如阿里云;對 于主從的情形,可以定時在master上執行 bgsave,然后將RDB文件拷貝到遠程機器, 或者在slave上執行 bgrewriteaof重寫AOF文件后,將AOF文件拷貝到遠程機器上。 一般來說,由于RDB文件文件小、恢復快,因此災難恢復常用RDB文件;異地備份的頻率根據數據安全性的 需要及其它條件來確定,但最好不要低于一天一次。. ***** **注意:** 1. RDB雖然可以通過bgsave指令后臺保存快照,但fork()子進程是有開銷的,在內存數據集較大的情況下會占用很長的cpu時間,fork新進程時這個復制是需要時 間的,在服務器結點上測試,35G的數據bgsave瞬間會阻塞200ms以上,一般建議Redis使用內存不超過20g。 2. I/O消耗的問題線上是在Slave節點開啟rdb持久化,磁盤性能一般,1.2g的rdb文件持久化一分鐘一次,一次大概耗時30s左右,所以rdb的頻率也不能太頻繁, 需要根據情況做好配置。 3. AOF是追加寫命令到aof文件的方式,優點是可以基本做到數據無損,缺點是文件增長較快,需要間歇性bgrewrite,bgrewrite也是一個既耗cpu又耗磁盤IO的操 作,單cpu利用率最高可達100%,一般建議找幾個空閑時段設置腳本來做bgrewrite。 >[info] 持久化配置方案 **1. 企業級的持久化的配置策略** **save 60 10000:** 如果你希望盡可能確保說,RDB最多丟1分鐘的數據,那么盡量就是每隔1分鐘都生成一個快照,低峰期,數據量很少,也沒必要 10000->生成RDB,1000->RDB,這個根據你自己的應用和業務的數據量,你自己去決定AOF一定要打開,fsync,everysec auto-aof-rewrite-percentage 100: 就是當前AOF大小膨脹到超過上次100%,上次的兩倍auto-aof-rewrite-min-size 64mb: 根據你的數據量來定,16mb,32mb ***** **2. 數據備份方案** RDB非常適合做冷備,每次生成之后,就不會再有修改了 數據備份方案。 (1)寫crontab定時調度腳本去做數據備份 (2)每小時都copy一份rdb的備份,到一個目錄中去,僅僅保留最近48小時的備份 (3)每天都保留一份當日的rdb的備份,到一個目錄中去,僅僅保留最近1個月的備份 (4)每次copy備份的時候,都把太舊的備份給刪了 (5)每天晚上將當前服務器上所有的數據備份,發送一份到遠程的云服務上去【crontab】
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看