国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 建站經驗 > 正文

防止服務器宕機時My-SQL數據丟失的幾種方案

2019-11-02 15:27:30
字體:
來源:轉載
供稿:網友

   這篇文章主要介紹了防止服務器宕機時MySQL數據丟失的幾種方案,結合實踐介紹了Replication和Monitor以及Failover這三個項目的應用,需要的朋友可以參考下

  對于多數應用來說,MySQL都是作為最關鍵的數據存儲中心的,所以,如何讓MySQL提供HA服務,是我們不得不面對的一個問題。當master當機的時候,我們如何保證數據盡可能的不丟失,如何保證快速的獲知master當機并進行相應的故障轉移處理,都是需要我們好好思考的。這里,筆者將結合這段時間做的MySQL proxy以及toolsets相關工作,說說我們現階段以及后續會在項目中采用的MySQL HA方案。

  Replication

  要保證MySQL數據不丟失,replication是一個很好的解決方案,而MySQL也提供了一套強大的replication機制。只是我們需要知道,為了性能考量,replication是采用的asynchronous模式,也就是寫入的數據并不會同步更新到slave上面,如果這時候master當機,我們仍然可能會面臨數據丟失的風險。

  為了解決這個問題,我們可以使用semi-synchronous replication,semi-synchronous replication的原理很簡單,當master處理完一個事務,它會等待至少一個支持semi-synchronous的slave確認收到了該事件并將其寫入relay-log之后,才會返回。這樣即使master當機,最少也有一個slave獲取到了完整的數據。

  但是,semi-synchronous并不是100%的保證數據不會丟失,如果master在完成事務并將其發送給slave的時候崩潰,仍然可能造成數據丟失。只是相比于傳統的異步復制,semi-synchronous replication能極大地提升數據安全。更為重要的是,它并不慢,MHA的作者都說他們在facebook的生產環境中使用了semi-synchronous(這里),所以我覺得真心沒必要擔心它的性能問題,除非你的業務量級已經完全超越了facebook或者google。在這篇文章里面已經提到,MySQL 5.7之后已經使用了Loss-Less Semi-Synchronous replication,所以丟數據的概率已經很小了。

  如果真的想完全保證數據不會丟失,現階段一個比較好的辦法就是使用gelera,一個MySQL集群解決方案,它通過同時寫三份的策略來保證數據不會丟失。筆者沒有任何使用gelera的經驗,只是知道業界已經有公司將其用于生產環境中,性能應該也不是問題。但gelera對MySQL代碼侵入性較強,可能對某些有代碼潔癖的同學來說不合適了:-)

  我們還可以使用drbd來實現MySQL數據復制,MySQL官方文檔有一篇文檔有詳細介紹,但筆者并未采用這套方案,MHA的作者寫了一些采用drdb的問題,在這里,僅供參考。

  在后續的項目中,筆者會優先使用semi-synchronous replication的解決方案,如果數據真的非常重要,則會考慮使用gelera。

  Monitor

  前面我們說了使用replication機制來保證master當機之后盡可能的數據不丟失,但是我們不能等到master當了幾分鐘才知道出現問題了。所以一套好的監控工具是必不可少的。

  當master當掉之后,monitor能快速的檢測到并做后續處理,譬如郵件通知管理員,或者通知守護程序快速進行failover。

  通常,對于一個服務的監控,我們采用keepalived或者heartbeat的方式,這樣當master當機之后,我們能很方便的切換到備機上面。但他們仍然不能很即時的檢測到服務不可用。筆者的公司現階段使用的是keepalived的方式,但后續筆者更傾向于使用zookeeper來解決整個MySQL集群的monitor以及failover。

  對于任何一個MySQL實例,我們都有一個對應的agent程序,agent跟該MySQL實例放到同一臺機器上面,并且定時的對MySQL實例發送ping命令檢測其可用性,同時該agent通過ephemeral的方式掛載到zookeeper上面。這樣,我們可以就能知道MySQL是否當機,主要有以下幾種情況:

  機器當機,這樣MySQL以及agent都會當掉,agent與zookeeper連接自然斷開

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 琼结县| 澄城县| 云安县| 昌图县| 芷江| 察隅县| 阜平县| 勐海县| 西宁市| 普洱| 武平县| 炎陵县| 义马市| 吉水县| 彭泽县| 沾化县| 婺源县| 泊头市| 普安县| 监利县| 石泉县| 海门市| 禹州市| 吴川市| 蒲江县| 普兰县| 蓬安县| 横山县| 大余县| 肃北| 伊宁县| 神农架林区| 南京市| 宜城市| 西峡县| 汉阴县| 灌阳县| 长沙市| 教育| 徐汇区| 萨嘎县|