06.30 生产环境MySQL数据库集群MHA上线实施方案
来源:互联网 发布:我知谁掌管明天 作者 编辑:程序博客网 时间:2024/04/27 15:13
第一章 不停库操作
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
4. 安装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配置文件
5. 设置集群内服务器ssh信任,使用检查MHA SSH插件脚本检测通过
masterha_check_ssh --conf=/etc/masterha/base.cnf masterha_check_ssh --conf=/etc/masterha/exam_study.cnf
6. 设置定期清除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 stopchkconfig keepalived off
#base(某某公司会员积分的库):ifconfig eth0:1 192.168.1.101/22 upifconfig 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. 测试
#准备测试数据库create database testdb#建表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;#写插入数据脚本往数据库里插入数据的过程中停库测试#网络中断测试有的时候不是因为主库挂了,而是因为主库那台服务器网络中断了,所以也要进行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的进程。
【注意】:之所以把命令都写出来,是因为,在生产环境中,一定要先写好上线流程的所有步骤,包括命令,然后在生产环境操作的时候,不要用手敲,一定要复制,复制一定不会出错,但是手敲,难免会出现错误,如果一个步骤出现问题,那么整个上线过程都会受到影响。
阅读全文
1 0
- 06.30 生产环境MySQL数据库集群MHA上线实施方案
- MySQL数据库集群MHA上线实施方案(生产环境)
- MySQL MHA+lvs+keepalived线上生产环境
- MHA+lvs+keepalived线上生产环境
- 生产环境Mysql数据库备份脚本
- MySQL简单MHA环境搭建
- mysql主从集群高可用架构-----MHA
- [MySQL] 生产环境MySQL数据库事务一直在RUNNING
- [MySQL] 生产环境MySQL数据库事务一直在RUNNING
- 生产环境下的MySQL数据库主从同步总结
- MySQL数据库在单机生产环境下配置注意事项
- mysql MHA
- mysql-mha
- mysql-mha
- mysql高可用集群——MHA架构
- 读写分离MySQL+MHA+MAXSCALE集群高可用
- Greenplum 数据库 集群安装部署(生产环境) 所需硬件
- 产品项目上线svn预处理更新生产环境
- String、StringBuffer与StringBuilder的区别小见
- 7月读书
- Oil Deposits
- 第21篇:9 种改善 AngularJS 性能的方法
- struts2-下载文件
- 06.30 生产环境MySQL数据库集群MHA上线实施方案
- laravel权限控制(登录,增删改查权限)
- 打开库存会计期 CST_ACCOUNTINGPERIOD_PUB.OPEN_PERIOD
- 安卓自定义View基础01-坐标系讲解
- 【docker 17 源码分析】 docker run container 源码分析二 docker start
- ac自动机详解(2)
- 数据库高级检索技术
- 电商详情页:你的转化率低不是没有原因的!
- Makefile解析