生产环境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的进程。

 

【注意】:之所以把命令都写出来,是因为,在生产环境中,一定要先写好上线流程的所有步骤,包括命令,然后在生产环境操作的时候,不要用手敲,一定要复制,复制一定不会出错,但是手敲,难免会出现错误,如果一个步骤出现问题,那么整个上线过程都会受到影响。

生产环境MySQL数据库集群MHA上线实施方案的更多相关文章

  1. Facebook揭密:如何让MySQL数据库集群自主运行

    Facebook运行着全球最大的MySQL数据库集群,该集群分布在两个大洲上的多个数据中心中数以千计的服务器上.让人不解的是,Facebook只动用了一个很小的团队来管理这个庞大的MySQL数据库集群 ...

  2. MySQL数据库集群进行正确配置步骤

    MySQL数据库集群进行正确配置步骤 2010-06-09 10:47 arrowcat 博客园 字号:T | T 我们今天是要和大家一起分享的是对MySQL数据库集群进行正确配置,我前两天在相关网站 ...

  3. mysql数据库集群

    mysql数据库集群主要有2种常用方案: replication:速度快.弱一致性.适合保存低价值的数据,主要应用于日志.新闻.帖子等系统. PXC:速度慢.强一致性.适合保存高价值的数据,主要应用于 ...

  4. 【Data Cluster】真机环境下MySQL数据库集群搭建

    真机环境下MySQL-Cluster搭建文档  摘要:本年伊始阶段,由于实验室对不同数据库性能测试需求,才出现MySQL集群搭建.购置主机,交换机,双绞线等一系列准备工作就绪,也就开始集群搭建.起初笔 ...

  5. openstack controller ha测试环境搭建记录(四)——配置mysql数据库集群

    内容正式开始前,我已经在集群中添加了新的节点controller1(IP地址为10.0.0.14). 在所有节点上安装软件:# yum install -y mariadb-galera-server ...

  6. mongodb模拟生产环境的分片集群

       分片是指数据拆分 将其分散在不同的机器上的过程,有时候也叫分区来表示这个概念.将数据分散到不同机器上 不需要功能强大的计算机就可以储存更多的数据,处理更大的负载.        几乎所有的数据库 ...

  7. 正式生产环境下hadoop集群的DNS+NFS+ssh免password登陆配置

    博客地址:http://www.loveweir.com/ 环境虚拟机centos6.5 主机名h1  IP 192.168.137.11  作为DNS FNS的server 主机名h2  IP 19 ...

  8. 基于mysql数据库集群的360度水平切割

    1.why sharding? 我们都知道,信息行业发展日益迅速,积累下来的数据信息越来越多,互联网公司门要维护的数据日益庞大.设想一下,假如腾讯公司只用一个数据库的一张表格来存储所有qq注册用户的登 ...

  9. Python 生产环境MySQL数据库增量备份脚本

    MySQL数据库常用的办法是通过MySQLdump导出sql进行备份,但是不适合数据量很大的数据库,速度,锁表是两个严重的问题.前面写了一遍文章介绍xtrabackup的热备工具,见 http://w ...

随机推荐

  1. 多盟、Testin云测、K9test,助阵阿里云1218 移动开发者狂欢

    经过双十一.双十二全民剁手狂欢后,阿里巴巴旗下的云计算业务,也为IT程序员们打造一场独特的盛宴. 阿里云计算12月18日对旗下主力云计算产品进行打折促销,云服务商.风投机构等都将参与到这场狂欢中.“我 ...

  2. C#开发小技巧

    001.判断一个Form是否已关闭并释放,需要从引用和对象两方面来判断,判断引用是否为null:mainfm==null判断引用的对象是否已释放:mainfm.IsDisposedMainFormma ...

  3. 【Web crawler】爬虫之百度首页

    刚开始学习爬虫,照着教程手打了一遍,还是蛮有成就感的.使用版本:python2.7 *注意:python2的默认编码是ASCII编码而python3默认编码是utf-8 import urllib2 ...

  4. Java Collections Framework知识结构目录

    The core collection interfaces are the foundation of the Java Collections Framework. The Java Collec ...

  5. shell 脚本解压war包+备份+tomcat自动关闭+启动

    公司的开发环境每次替换war包时候,老是需要重新上传并且手动解压,然后再去重启tomcat.觉得这样子太麻烦了,于是写了一个shell脚本,自动解压+备份+tomcat自动关闭+启动.代码如下: #关 ...

  6. html tags and attribute集参考

    cite 表示引用到某一本书籍名称,默认样式为斜体,q 表示直接引用到里面的话,大块的引用使用block默认样式将增加“双引号” ,关键的词用<b>默认为粗体:一些技术术语则用<i& ...

  7. java img图片转pdf 工具类

    package com.elitel.hljhr.comm.web.main.controller; import java.io.File; import java.io.FileNotFoundE ...

  8. 规约模式的ef拼接

    public class LamadaExtention<Dto> where Dto : new() { private List<Expression> m_lstExpr ...

  9. 蓝牙BLE数据包格式汇总

    以蓝牙4.0为例说明: BLE包格式有:广播包.扫描包.初始化连接包.链路层控制包(LL层数据包).逻辑链路控制和自适应协议数据包(即L2CAP数据包)等: 其中广播包又分为:定向广播包和非定向广播包 ...

  10. 如何设置活动监视器中的可见作业数能显示更长范围之内的作业(如何让bpdbjobs/Active Monitor显示更多作业信息)

    一.问题:     如何设置可以使得活动监视器中的可见作业数能显示更长范围之内的作业(即NBU软件不要自动删除活动监视器中短时间内(如8天)内的作业记录)? 二.解决方法:      默认情况下在Ac ...