介紹
一直以來, 我們並未在線上啟用masterha_manager 自動切換腳本, 主要因為在網路抖動(網線, 所屬機櫃交換器不穩定)的情況下並不能保證資料庫真的不能存取.例如重啟檢測腳本所在機器的網卡並不能說明資料庫出了問題, 所以從這方面看我們不能僅通過一個點的檢測就判斷數據庫不可訪問.
幸好可以通過consul(因為consul 提供dns介面, 筆者更傾向於使用consul, 而不是etcd)集群的特性, 我們增加多點檢測機制, 在n 個集群的環境中, 有超過半數的檢測點檢測到數據庫有問題, 我們就認為數據庫不可訪問, 這時則開始呼叫masterha_manager
腳本進行切換, 如下圖所示:
<checkmysql> <checkmysql> <checkmysql> | | | +---------+ +---------+ +---------+ | consul1 | | consul2 | | consul3 | +---------+ +---------+ +---------+ \ | / \ | / \ | / \ | / +----------------------+ | http api && acl | +----------------------+ | | +----------------------+ | consul-template | ----> < mysqlxxx.tpl > ---> <mysqlxxx.conf> +----------------------+ | +--------------------------+ | masterha_manager_consul | +--------------------------+
##checkmysql 需要部署到每台
consul server 中, 這樣我們就實作了多點偵測MySQL 是否正常, 如果正常,
checkmysql 會設定一個值為1 的鍵:
mysql/mysqlxxxx /node-consul, 反之則值為0, 其中
node-consul 的預設值為目前主機的hostname.
checkmysql 檢測完後,我們使用consul-template 工具根據模板檔案
mysqlxxx.tpl 來監聽所有key 的變更, 如果有變化則產生配置
mysqlxxxx.conf, 進而呼叫
masterha_manager_consul#腳本開始進行切換.
masterha_manager_consul 腳本中重寫了方法
MHA::HealthCheck::wait_until_unreachable, 避免了無限循環檢測, 如果少於一半的檢測點認為資料庫異常, 則退出該輪的呼叫, 否則啟用子程序開始執行切換操作.
masterha_manager_consul 是基於MHA v0.5.6修改的, 並且預設只在當天的21點到第二天的9 點之間做自動切換, 可以透過
night 選項控制此功能. 另外多台
consul server 建議部署到不同的交換器或機櫃.
mha_manager_consul ├── bin │ ├── checkmysql │ └── masterha_manager_consul ├── conf │ ├── db.cnf │ └── template-config ├── consul │ ├── acl │ │ ├── policy.ano │ │ └── policy.key │ ├── conf │ │ └── consul.conf │ └── conf.d │ └── server.json ├── README.md └── template └── mysql3308.tpl測試環境繼續使用以往的測試環境:
os | hostname | ##version | |
---|---|---|---|
centos 6.5 | cz-test1 | consul 0.8v | |
centos 6.5 | #cz-test2 | consul 0.8v | |
centos 6.5 | cz-test3 | consul 0.8v |
以上是consul架構的 MHA 自動切換實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

MySQL在Web應用中的主要作用是存儲和管理數據。 1.MySQL高效處理用戶信息、產品目錄和交易記錄等數據。 2.通過SQL查詢,開發者能從數據庫提取信息生成動態內容。 3.MySQL基於客戶端-服務器模型工作,確保查詢速度可接受。

構建MySQL數據庫的步驟包括:1.創建數據庫和表,2.插入數據,3.進行查詢。首先,使用CREATEDATABASE和CREATETABLE語句創建數據庫和表,然後用INSERTINTO語句插入數據,最後用SELECT語句查詢數據。

MySQL適合初學者,因為它易用且功能強大。 1.MySQL是關係型數據庫,使用SQL進行CRUD操作。 2.安裝簡單,需配置root用戶密碼。 3.使用INSERT、UPDATE、DELETE、SELECT進行數據操作。 4.複雜查詢可使用ORDERBY、WHERE和JOIN。 5.調試需檢查語法,使用EXPLAIN分析查詢。 6.優化建議包括使用索引、選擇合適數據類型和良好編程習慣。

MySQL適合初學者,因為:1)易於安裝和配置,2)有豐富的學習資源,3)SQL語法直觀,4)工具支持強大。儘管如此,初學者需克服數據庫設計、查詢優化、安全管理和數據備份等挑戰。

是的,sqlisaprogramminglanguges pecialized fordatamanage.1)它具有焦點,focusingonwhattoachieveratherthanhow.2)sqlisessential forquerying forquerying,插入,更新,更新,和detletingdatainrelationalDatabases.3)

ACID屬性包括原子性、一致性、隔離性和持久性,是數據庫設計的基石。 1.原子性確保事務要么完全成功,要么完全失敗。 2.一致性保證數據庫在事務前後保持一致狀態。 3.隔離性確保事務之間互不干擾。 4.持久性確保事務提交後數據永久保存。

MySQL既是數據庫管理系統(DBMS),也與編程語言緊密相關。 1)作為DBMS,MySQL用於存儲、組織和檢索數據,優化索引可提高查詢性能。 2)通過SQL與編程語言結合,嵌入在如Python中,使用ORM工具如SQLAlchemy可簡化操作。 3)性能優化包括索引、查詢、緩存、分庫分錶和事務管理。

MySQL使用SQL命令管理數據。 1.基本命令包括SELECT、INSERT、UPDATE和DELETE。 2.高級用法涉及JOIN、子查詢和聚合函數。 3.常見錯誤有語法、邏輯和性能問題。 4.優化技巧包括使用索引、避免SELECT*和使用LIMIT。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Dreamweaver Mac版
視覺化網頁開發工具