生產環境MySQL資料庫集群MHA上線實施方案

来源:https://www.cnblogs.com/zeq912/archive/2018/12/20/10147347.html
-Advertisement-
Play Games

生產環境MySQL資料庫集群MHA上線實施方案 一.不停庫操作 1.在所有節點安裝MHAnode所需的perl模塊(需要有安裝epel源) 2.在所有的節點安裝mhanode 3.將系統調用的腳本統一放到一個目錄下 4. 安裝MHAManager根據生產環境實際IP更改配置文件和自動切換腳本 l 安 ...


生產環境MySQL資料庫集群MHA上線實施方案

一.不停庫操作

1.在所有節點安裝MHAnode所需的perl模塊(需要有安裝epel源)

yum install perl-DBD-MySQL -y

2.在所有的節點安裝mhanode

rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

3.將系統調用的腳本統一放到一個目錄下


#這裡統一放在了/usr/bin/目錄下
/usr/bin/apply_diff_relay_logs
/usr/bin/filter_mysqlbinlog
/usr/bin/purge_relay_logs
/usr/bin/save_binary_logs

4. 安裝MHAManager根據生產環境實際IP更改配置文件和自動切換腳本

安裝MHA Manger依賴的perl模塊

yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManagerperl-Time-HiRes -y

安裝MHA Manager軟體包

rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm

修改對應mysql環境所需的master_ip_failover腳本和mha配置文件

manger管理IP 配mha配置文件名 腳本名
192.168.1.100 base.cnf  base_master_ip_failover
192.168.1.200 exam_study.cnf     exam_study_master_ip_failover

5. 設置集群內伺服器ssh信任,使用檢查MHA SSH插件腳本檢測通過

masterha_check_ssh--conf=/etc/masterha/base.cnf 
masterha_check_ssh--conf=/etc/masterha/exam_study.cnf

6. 設置定期清除relay_logscrontab

mysql預設會自動清理relay_logs,但MHA會使用relay_logs在主從切換時恢複數據,所以MHA會關閉relay_logs的自動清理功能,會導致relay_logs逐漸增多

*/30 * * * * purge_relay_logs --user=faxuan --password=faxuan.net --host=192.168.1.172--port=3307 --disable_relay_log_purge >> /var/log/relay_log_purge.txt2>&1

二.需要停庫的操作

1.前端門戶nginx掛維護頁

2.停掉所有需要連接資料庫的服務,避免寫庫

例如:resin、tomcat等服務

/etc/init.d/resinstop
/usr/local/apache-tomcat/bin/shutdown.sh

3.主庫備份

用mysqldump或者xtrabackup對主庫進行備份

4.關閉原keepalived,手動綁定VIP

/etc/init.d/keepalivedstop
chkconfig keepalivedoff

 
base(我們公司會員積分的庫):

ifconfig eth0:1192.168.1.101/22 up
ifconfig eth1:110.0.0.101/24 up

 
exam、study(我們公司考試、學習的庫)

ifconfig eth0:1192.168.1.201/22 up 
ifconfig eth1:110.0.0.201/24 up

5.開啟MHA

base:

nohupmasterha_manager --conf=/etc/masterha/base.cnf --remove_dead_master_conf--ignore_last_failover < /dev/null > /var/log/masterha/base/manager.log2>&1 &

#查看日誌

tail -f /var/log/masterha/base/manager.log

 
exam_study:

nohupmasterha_manager --conf=/etc/masterha/exam_study.cnf --remove_dead_master_conf --ignore_last_failover< /dev/null > /var/log/masterha/exam_study/manager.log 2>&1 &

#查看日誌

tail -f /var/log/masterha/exam_study/manager.log

6.測試

6.1準備測試資料庫

create databasetestdb

6.2建表

CREATE TABLE`test_table` (
 `ID` bigint(20) NOT NULLAUTO_INCREMENT COMMENT '主鍵',
                        `DOMAIN_CODE`varchar(20) NOT NULL COMMENT '考試單位編號',
                        `EXAM_NAME` varchar(300)NOT NULL COMMENT '考試名稱',
                        `EXAM_TYPE` int(1) NOTNULL COMMENT '考試類型(正式考試,補考)',
                        `TARGET_EXAM_ID`bigint(20) DEFAULT NULL COMMENT '關聯正式考試的ID(如果是補考,該處是必填)',
                        `EXAM_PICTURE_PATH`varchar(100) DEFAULT NULL COMMENT '圖示路徑',
                        `EXAM_BEGIN_TIME`timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '考試開始時間',
                        `EXAM_END_TIME`timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '考試結束時間',
                        `EXAM_TIME` int(3) NOTNULL COMMENT '考試時長',
                        `EXAM_NEED_SCORE` int(5)NOT NULL COMMENT '考試所需積分',
                        `EXAM_PAPER_TYPE` int(1)DEFAULT NULL COMMENT '考試試卷類型(0固定、1隨機)',
                        `EXAM_SCORE` double(6,2)DEFAULT NULL COMMENT '考試總分(關聯試卷後回填)',
                        `EXAM_PASS_SCORE`double(6,2) NOT NULL COMMENT '考試及格分',
                        `EXAM_COMMIT_NUM` int(2)NOT NULL COMMENT '參考最大次數',
                        `EXAM_STATUS` int(1) NOTNULL COMMENT '發佈狀態0未發佈,1已發佈',
                        `EXAM_YEAR` varchar(5)NOT NULL COMMENT '年份',
                        `EXAM_PAPER_ID`bigint(20) DEFAULT NULL COMMENT '關聯試卷ID',
                        `EXAM_DISCRIPTION`varchar(1000) DEFAULT NULL COMMENT '考試備註',
                        `OPERATOR_USER_ACCOUNT`varchar(20) NOT NULL COMMENT '修改人',
                        `OPERATOR_TIME`timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '修改時間',
                        `TARGET_DOMAIN_CODE`varchar(20) DEFAULT NULL COMMENT '發佈目標單位編號(發佈時回填)',
                        `RANK` varchar(100)DEFAULT NULL COMMENT '職務級別(發佈時回填)',
                        `EXAM_DIPLOMA_ID`bigint(20) DEFAULT NULL COMMENT '關聯證書',
                        `DIPLOMA_NAME`varchar(200) DEFAULT NULL COMMENT '證書標題(關聯證書後回填',
                        `DIPLOMA_PICTURE_PATH`varchar(200) DEFAULT NULL COMMENT '證書背景圖片保存位置(關聯證書後回填)',
                        `INDUSTRY_CODES`varchar(1000) DEFAULT NULL,
                        `LANGUAGE` int(2) NOTNULL DEFAULT '1' COMMENT'语言(0:全部,1:汉语,2:维语,3:蒙语,4:哈语)',
                        `EXT1` int(1) NOT NULLDEFAULT '1' COMMENT '成績計入學分的欄位標識(0 是,1否)',
                        `EXT2` int(3) DEFAULTNULL COMMENT '成績所占比例',
                        `EXT3` varchar(1)DEFAULT NULL,
                        `EXT4` varchar(1)DEFAULT NULL,
                        `EXT5` varchar(1)DEFAULT NULL,
                        PRIMARY KEY (`ID`),
                        KEY `DOMAIN_CODE`(`DOMAIN_CODE`),
                        KEY `EXAM_PAPER_ID`(`EXAM_PAPER_ID`)
                        ) ENGINE=InnoDBAUTO_INCREMENT=365 DEFAULT CHARSET=utf8;   

6.3寫插入數據腳本

往資料庫里插入數據的過程中停庫測試

6.4網路中斷測試

有的時候不是因為主庫掛了,而是因為主庫那台伺服器網路中斷了,所以也要進行VIP漂移等測試,所以這裡要強調一下,不管是任何操作,或正上線任何東西,大家一定都要把問題考慮全面。

7.如果所有測試都沒有問題,就恢復環境,補全mha配置文件,啟動mha

因為測試完之後,mha會自動摘除down了的server標簽,所以要補全配置文件

8.開啟所有連庫的服務(resin/tomcat)

/etc/init.d/resin start
/usr/local/apache-tomcat/bin/startup.sh

9.添加監控

利用zabbix等監控軟體,監控mha的進程。
 
【註意】:之所以把命令都寫出來,是因為,在生產環境中,一定要先寫好上線流程的所有步驟,包括命令,然後在生產環境操作的時候,不要用手敲,一定要複製,複製一定不會出錯,但是手敲,難免會出現錯誤,如果一個步驟出現問題,那麼整個上線過程都會受到影響。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這是我之前寫代碼的時候被卡住的一些小知識點,看到這篇博客的人,如果有用,我很高興很夠幫助到你,如果對你沒有幫助,那麼請你路過就好 1.Winform窗體跳轉 Show(非模態顯示) 可以操作其他窗體,在彈出視窗和調用視窗之間隨意切換,比如:彈出Form2窗體了,還是原本的Form窗體進行操作 Sho ...
  • 本節介紹Client的ClientCredentials客戶端模式,先看下畫的草圖: 一、在Server上添加動態新增Client的API 介面。 為了方便測試,在Server服務端中先添加swagger,添加流程可參考:https://www.cnblogs.com/suxinlcq/p/6757 ...
  • controller ...
  • 平時我們如果要用到委托一般都是先聲明一個委托類型,比如: string說明適用於這個委托的方法的返回類型是string類型,委托名Say後面沒有參數,說明對應的方法也就沒有傳入參數。 寫一個適用於該委托的方法: 最後調用: 這裡我們先聲明委托,然後再將方法傳給該委托。有沒有辦法可以不定義委托變數呢? ...
  • 最近在做文件處理系統中,要把最近打開文件顯示出來,方便用戶使用。網上資料有說,去遍歷“C:\Documents and Settings\Administrator\Recent”下的最近文檔本。文主要介紹在Winform界面菜單中實現【最近使用的文件】動態菜單的處理,實現一個較為常用的功能。 1 ...
  • ```c# public class TimeHelper { private long _start, _stop, _elapsed; /// /// 獲取初始時間戳 /// public void start() { _start = Stopwatch.GetTimestamp(); } /... ...
  • 公司產品對外公佈的介面, 評審後才能發佈, 然後要求生成介面文檔(去除註釋, 這樣更能檢查介面命名是否合理). 之前用的是微軟的一個免費工具, 但好久都沒有更新了, 對新一點的C#語法不支持, 生成的文檔是錯誤的, 如果不想手動從代碼複製方法簽名, 只能手寫一個工具了 這個段代碼以滿足公司要求來編寫 ...
  • 這個在網上已經有很多了,這個只是我自己稍微記一下。 原來用的是花生殼,結果什麼都要錢,多弄幾個子功能變數名稱都要錢。外加有的時候服務又不太穩定。 所以只好又去續了一年的伺服器,升級了帶寬2M。 frp的地址在這裡可以下到 https://github.com/fatedier/frp/releases 當然 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...