MySQL Replication和Oracle logical standby的原理對比

來源:互聯網
上載者:User

        MySQL Replication和Oracle logical standby都是SQL apply,那麼在實現上有何區別?
       
        Binary Log 和 Redo的傳輸原理
       
        MySQL Replication可以很方便的用來做應用的讀擴充,也可以幫MySQL實現一定程度的HA方案
        整個複製過程實際上就是Slave從Master端抓取Binary Log然後再在自己身上完全順序的執行日誌中所記錄的各種操作

 

        ㈠ 如何同步?
      
           主庫將所有的更新操作,寫入二進位日誌。
           從庫運行"IO線程"(Slave IO Thread)讀取主庫的二進位日誌。
           從庫運行"SQL線程"(Slave SQL Thread)執行IO線程(Slave IO Thread)讀取的日誌中的SQL,從而保持和主庫的事務一致
      
        ㈡ 如何分配請求?
      
           目前,這部分需要在應用程式層實現。
           執行更新SQL(UPDATE,INSERT,DELETE)時,請求主庫
           執行查詢SQL(SELECT)時,請求從庫
           所以,當你的應用(Application)SELECT請求所佔的比率越大,那麼Relication就會越有效
      
       
        ㈢ MySQL如何傳輸二進位日誌,是主庫推,還是備庫拉?MySQL日誌傳輸的即時性如何?
       
        在MySQL Replication結構中,備庫端初次通過CHANGE MASTER TO完成Replication配置,再使用start slave命令開始複製
        更細緻的:
          ① Slave上的IO Thread串連上Master,並向Master發起讀取Binary Log的請求(COM_BINLOG_DUMP命令),
             從指定記錄檔的指定位置(或者最開始的日誌)之後的日誌內容
          ② Master收到COM_BINLOG_DUMP請求後,使用dump thread不斷向Slave IO Thread發送Binary Log(指定記錄檔的指定位置之後的日誌資訊)
             返回資訊中除了日誌所包含的資訊之外,還包括本次返回的資訊在Master的Binary Log的檔案名稱以及在Binary Log中的位置
          ③ 在Master一旦有新的日誌產生後,立刻會發送一次廣播,dump thread在收到廣播後,則會讀取二進位日誌並通過網路向Slave傳輸日誌
          ④ Slave的IO thread接收到資訊後,將接收到的日誌內容依次寫入到Slave的Relay Log檔案(mysql-relay-bin.xxxxxx)的最末端。並將讀取到的
             Master的Binary Log的檔案名稱和位置記錄到master-info檔案中,以便在下次讀取的時候能夠清楚地告訴Master:
             “俺們需要從某個Binary Log的哪個位置開始往後的日誌內容,請發給我”
          ⑤ Slave的SQL thread檢測到Relay Log中新增加了內容後,會馬上解析Log檔案中的內容成為在Master真實執行時候的那些可執行檔Query語句,
             並在自身執行這些Query。這樣,實際上就是在Master和Slave執行了同樣的Query,所以兩端的資料完全一樣。
          所以這是一個主庫向備庫不斷推送的過程

        新日誌在產生後,只需一次廣播和網路就會立刻(<1ms)向發送到備庫,如果主備之間網路較好的話(例如RTT<1ms),備庫端的日誌也就小於2ms了
        所以,一般的(依賴於RTT),備庫的即時性都非常好。
        注釋:
        RTT(Round-Trip Time): 往返時延,在電腦網路中它也是一個重要的效能指標,
        它表示從發送端發送資料開始,到發送端收到來自接收端的確認(接收端收到資料後便立即發送確認),總共經曆的時延
       
       
       
        對於Oracle,在primary,DataGuard可以使用歸檔進程(ARCn)或者日誌寫進程(LGWR)收集redo資料並傳輸到standby
       
        ㈠ 使用ARCn歸檔redo資料
           預設情況下,RTS使用ARCn進程歸檔redo日誌。不過ARCn歸檔進程只支援最高效能的保護模式
           primary日誌發生切換時就會啟動歸檔:
            ● 在primary(假設有2個歸檔進程),一旦ARC0進程完成redolog的歸檔,ARC1進程即開始傳輸該歸檔到standby的指定路徑
            ● 在standby,RFS進程輪流將redo資料寫入standby log,再由standby中的ARCn進程將其寫入歸檔,然後通過SQL apply將資料應用到standby資料庫

        ㈡ 使用LGWR歸檔即時同步redo資料
           使用LGWR進程與使用ARCn進程有明顯不同,LGWR無須等待日誌切換及完成歸檔
            ● 在primary,LGWR提交redo資料到LNSn(LGWR Network Server process)進程(n>0),LNSn啟動網路傳輸
            ● 在standby的RFS(Remote File Server)將接收到的redo資料寫入standby log。在此期間,primary的事務會一直保持,直到所有含LGWR SYNC屬性的LOG_ARCHIVE_DEST_n指定路徑均已完成接收

        ㈢ 使用LGWR歸檔非同步redo資料
           大致步驟與同步傳輸相同,差別只在LNSn進程這裡,LGWR寫資料到online redolog
           LNSn進程訪問online redolog並傳輸資料到遠程standby的RFS而不再與本地LGWR之間有聯絡
           standby資料庫方面的處理邏輯仍然不變

 

        複製實現層級和資料保護模式
       
        MySQL Replication可以是基於statement level,也可以基於row level
        不同的複製層級會影響到Master的Binary Log記錄成不同的形式
         ① row level
            Binary Log會記錄成每一行資料被修改的形式,然後再Slave再對相同資料進行修改
            優點:
                ⒈ Row Level的日誌內容會非常清楚的記錄下每一行資料修改的細節,非常容易理解
                ⒉ 不存在某些情況下預存程序或function以及trigger的調用和觸發無法被正確複製的問題
            缺點:
                產生驚人的日誌量
         ② statement level
             每一條會修改資料的Query都會記錄到Master的Binary Log中。Slave 在複製的時候SQL線程會解析成和原來Master端執行過的相同的Query來再次執行
             優點:
                減少Binary Log日誌量,節約了IO成本,提高了效能
             缺點:
                ⒈ 必須級聯記錄每條語句在執行時的上下文資訊
                ⒉ 存在某些情況下預存程序或function以及trigger的調用和觸發無法被正確複製的問題
        

        
        Data Guard提供了三種資料保護的模式


        ① 最大保護(Maximum protection):
           所有的事務在提交前至少一個standby資料庫redo資料被同步寫入
           如果出現了什麼故障導致standby資料庫停用話,primary資料庫會被shutdown
        ② 最高效能(Maximum performance):
           事務可以隨時提交,當前primary資料庫的redo資料也需要至少寫入一個standby資料庫,不過這種寫入可以是不同步的
        ③ 最高可用性(Maximum availability):
           和maximum protection一樣,至少一個standby資料庫redo資料被同步寫入
           不過與之不同的是,如果出現故障匯入無法同時寫入standby資料庫redo log,primary資料庫並不會shutdown
           而是自動轉為最高效能模式,等standby資料庫恢複正常之後,它又會再自動轉換成最高可用性模式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.