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

  • 相关阅读:
    pyinstaller模块
    使用reduce方法数组去重
    Linux的关机与重启命令
    splice和slice的区别
    发现splice的新大陆
    text-decoration和outline
    前端中关于堆和栈的那些事
    git
    前端代码规范
    弹性布局在项目中的使用示例
  • 原文地址:https://www.cnblogs.com/zeq912/p/10147347.html
Copyright © 2011-2022 走看看