MySQL數據庫集羣MHA上線實施方案

生產環境MySQL數據庫集羣MHA上線實施方案
一.不停庫操作
1.在所有節點安裝MHA node所需的perl模塊(需要有安裝epel源)
yum install perl-DBD-MySQL -y
2.在所有的節點安裝mha node
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

  1. 安裝MHA Manager根據生產環境實際IP更改配置文件和自動切換腳本
    安裝MHA Manger依賴的perl模塊
    yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-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
  2. 設置集羣內服務器ssh信任,使用檢查MHA SSH插件腳本檢測通過
    masterha_check_ssh --conf=/etc/masterha/base.cnf
    masterha_check_ssh --conf=/etc/masterha/exam_study.cnf
  3. 設置定期清除relay_logs crontab
    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.txt 2>&1
二.需要停庫的操作
1.前端門戶nginx掛維護頁
2.停掉所有需要連接數據庫的服務,避免寫庫
例如:resin、tomcat等服務
/etc/init.d/resin stop
/usr/local/apache-tomcat/bin/shutdown.sh
3.主庫備份
用mysqldump或者xtrabackup對主庫進行備份
4.關閉原keepalived,手動綁定VIP
/etc/init.d/keepalived stop
chkconfig keepalived off

base(我們公司會員積分的庫):
ifconfig eth0:1 192.168.1.101/22 up
ifconfig eth1:1 10.0.0.101/24 up

exam、study(我們公司考試、學習的庫)
ifconfig eth0:1 192.168.1.201/22 up
ifconfig eth1:1 10.0.0.201/24 up
5.開啓MHA
base:
nohup masterha_manager --conf=/etc/masterha/base.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/base/manager.log 2>&1 &
#查看日誌
tail -f /var/log/masterha/base/manager.log

exam_study:
nohup masterha_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 database testdb
6.2建表
CREATE TABLE test_table (
ID bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主鍵',
DOMAIN_CODE varchar(20) NOT NULL COMMENT '考試單位編號',
EXAM_NAME varchar(300) NOT NULL COMMENT '考試名稱',
EXAM_TYPE int(1) NOT NULL 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) NOT NULL 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) NOT NULL 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) NOT NULL DEFAULT '1' COMMENT '语言(0:全部,1:汉语,2:维语,3:蒙语,4:哈语)',
EXT1 int(1) NOT NULL DEFAULT '1' COMMENT '成績計入學分的字段標識(0 是,1否)',
EXT2 int(3) DEFAULT NULL 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=InnoDB AUTO_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的進程。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章