生產環境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更改配置文件和自動切換腳本
l 安裝MHA Manger依賴的perl模塊
yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManagerperl-Time-HiRes -y
l 安裝MHA Manager軟體包
rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm
l 修改對應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的進程。
【註意】:之所以把命令都寫出來,是因為,在生產環境中,一定要先寫好上線流程的所有步驟,包括命令,然後在生產環境操作的時候,不要用手敲,一定要複製,複製一定不會出錯,但是手敲,難免會出現錯誤,如果一個步驟出現問題,那麼整個上線過程都會受到影響。