生產環境MySQL數據庫集群MHA上線實施方案


生產環境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的進程。
 
【注意】:之所以把命令都寫出來,是因為,在生產環境中,一定要先寫好上線流程的所有步驟,包括命令,然后在生產環境操作的時候,不要用手敲,一定要復制,復制一定不會出錯,但是手敲,難免會出現錯誤,如果一個步驟出現問題,那么整個上線過程都會受到影響。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM