<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國際加速解決方案。 廣告
                原文出處:http://www.cnblogs.com/gomysql/p/3675429.html 本人在原文基礎上增加了一些自己的認知 #### MHA架構介紹 MHA(Master High Availability)目前在MySQL高可用方面是一個相對成熟的解決方案,它由日本人youshimaton開發,是一套優秀的作為MySQL高可用性環境下故障切換和主從提升的高可用軟件。在MySQL故障切換過程中,MHA能做到0~30秒之內自動完成數據庫的故障切換操作,并且在進行故障切換的過程中,MHA能最大程度上保證數據庫的一致性,以達到真正意義上的高可用。 MHA由兩部分組成:MHA Manager(管理節點)和MHA Node(數據節點)。MHA Manager可以獨立部署在一臺獨立的機器上管理多個Master-Slave集群,也可以部署在一臺Slave上。當Master出現故障是,它可以自動將最新數據的Slave提升為新的Master,然后將所有其他的Slave重新指向新的Master。整個故障轉移過程對應用程序是完全透明的。 ##### 存在隱患 在MHA自動故障切換的過程中,MHA試圖從宕掉的主服務器上保存二進制日志,最大程度保證數據的不丟失,但這并不總是可行的。 例如,如果主服務器硬件故障或無法通過SSH訪問,MHA沒有辦法保存二進制日志,只能進行故障轉移而丟失了最新數據。 拓:MySQL服務掛了,但是可以從服務器拷貝二進制。但如果硬件宕機或者SSH不能連接,不能獲取到最新的binlog日志,如果復制出現延遲,會丟失數據。 使用MySQL5.5的半同步復制,可以大大降低數據丟失的風險。MHA可以和半同步復制結合起來。如果只有一個Slave已經收到了最新的二進制日志,MHA可以將最新的二進制日志應用于其他所有Slave服務器上,保持數據一致性。 最新版0.56版本,增加了支持GTID的功能,建議在MySQL5.6及之后版本使用。MySQL5.5建議使用管理節點版本0.55,數據節點0.54。 ##### 適用場景 目前MHA主要支持一主多從的架構,要搭建MHA,要求一個復制集群必須最少有3臺數據庫服務器,一主二從,即一臺充當Master,一臺充當備用Master,另一臺充當從庫。出于成本考慮,淘寶在此基礎上進行了改造,目前淘寶開發的TMHA已經支持一主一從。 #### MHA工作原理 1. 從宕機崩潰的Master保存二進制日志事件(binlog event); 2. 識別含有最新更新的Slave; 3. 應用差異的中繼日志(relay log)到其他Slave; 4. 應用從Master保存的二進制日志事件; 5. 提升一個Slave為新的Master; 6. 使其他的Slave連接新的Master進行復制; #### MHA的組成 MHA軟件由兩部分組成,Manager工具包和Node工具包,具體如下。 1. Manager工具包情況如下: - masterha_check_ssh:檢查MHA的SSH配置情況。 - masterha_check_repl:檢查MySQL復制狀況。 - masterha_manager:啟動MHA。 - masterha_check_status:檢測當前MHA運行狀態。 - masterha_master_monitor:檢測Master是否宕機。 - masterha_master_switch:控制故障轉移(自動或手動)。 - masterha_conf_host:添加或刪除配置的server信息。 2. Node工具包(通常由MHA Manager的腳本觸發,無需人工操作)情況如下: - save_binary_logs:保存和復制Master的binlog日志。 - apply_diff_relay_logs:識別差異的中級日志時間并將其應用到其他Slave。 - filter_mysqlbinlog:去除不必要的ROOLBACK事件(已經廢棄) - purge_relay_logs:清除中繼日志(不阻塞SQL線程) 重:為了盡可能的減少因為主庫硬件損壞宕機造成的數據丟失,因此在配置MHA的同時建議必須配置MySQL5.5半同步復制。 >拓展思想:為了保證數據一致性,MySQL復制中,常常會在Master上使用sync_binlog參數保證binlog持久化,保證數據一致性。但這種方式對磁盤I/O會造成10~20%的影響。但是還有另外一個思路,就是使用MySQL半同步復制來保證數據一致性,MySQL半同步復制是在從服務器的內存中處理數據并進行發聵,雖然也會造成性能影響,但是相對于對Master造成的磁盤I/O的影響來說,反而是個更好的方法。據《高性能MySQL》 第三版中10.9的測試,寫入遠程的內存(一臺從庫的反饋)比寫入本地的磁盤(寫入并刷新)要更快。使用半同步復制相比主在主庫上進行強持久化的性能有兩倍的改善。
                  <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>

                              哎呀哎呀视频在线观看