首页 > 代码库 > 第3天 一篇、MHA安装(单实例)
第3天 一篇、MHA安装(单实例)
【2016年11月29日】 MHA安装
今天刚好做线上MAH,所以好好看了MHA相关的问题。写得与原版本有出处的地方,请去买书自个看哈!!
一、环境初始化
1.环境部署
MySQL主从从结构
VIP绑定
MHA部署
2.用户名创建及管理
3.创建一个库及初始化表结构
4.备份任务建立
+++++++++++++++++++++++++
环境介绍
test01 172.16.7.151 node01 Master
test02 172.16.7.152 node02 Slave
test03 172.16.7.153 管理节点
VIP 172.16.7.155
软件版本
mysql-5.7.14
mha-0.57
基本路径
/usr/local/mysql
mysqldir=/data/mysql/mysql_3306
tmpdir=/data/mysql/mysql_3306/tmp
logbin=/data/mysql/mysql_3306/logs
server-id ip最后一位+端口号
[1]. 环境部署
1) 安装mysql环境
1. 下载
cd /data/server/tools && wget http://dev/mysql/com/get/Downloads/MySQL-5.7/mysql-5.7.14-linux-glibc2.5-x86_64.tar.gz
2. 解压
cd /opt/ && mkdir mysql && cd mysql tar -zxf /data/server/tools/mysql-5.7.14-linux-glibc2.5-x86_64.tar.gz -C .
3. 软连接
cd /usr/local/ && ln -s /opt/mysql/mysql-5.7.14-linux-glibc2.5-x86_64 mysql chown -R mysql:mysql /usr/local/mysql #添加环境变量 echo "export PATH=$PATH:/usr/local/mysql/bin" >>/etc/profile source /etc/profile
4. 创建用户
groupadd mysql useradd -M -g mysql -s /sbin/nologin -d /usr/local/mysql mysql
5. 根据配置文件,创建基本目录
mkdir /data/mysql mkdir /data/mysql/mysql_3306 cd /data/mysql/mysql_3306 mkdir {data,logs,tmp} chown -R mysql:mysql /data/mysql/mysql_3306 创建配置文件 (请查看附件)
6. MySQL初始化
[ MySQL 5.7 ] cd /usr/local/mysql/ ./bin/mysqld --defaults-file=/data/mysql/mysql_3306/my_3306.cnf --initialize # 初始化密码 # cat /data/mysql/mysql3306/data/error.log |grep password # 2016 ...... [Note] A temporary password is generated for root@localhost: DfmzxoGVr0=l # --initialize-insecure (初始化没有密码) [ MySQL 5.5/5.6] ./scripts/mysql_install_db --defaults-file=/data/mysql/mysql_3306/my_3306.cnf
7.创建启动脚本
(1)自带脚本
cd /usr/local/mysql/ support-files/mysql.server /etc/init.d/mysql #启动、关闭 /etc/init.d/mysql start|stop|restart
(2)手工脚本
cd /data/mysql/mysql_3306/ echo "/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql_3306/my_3306.cnf >/dev/null &" >start.sh echo "/usr/local/mysql/bin/mysqladmin -S /data/mysql/mysql_3306/mysql.sock shutdown" >stop.sh
8. 登录初始化
mysql -S /data/mysql/mysql_3306/mysql.sock -uroot -p(在初始化时自动生成) alter user user() identified by ""; #设置密码为空
9. 创建用户
grant all privileges on *.* to ‘admin‘@‘%‘ identified by ‘123456‘; grant replication slave,replication client on *.* to ‘repl‘@‘%‘ identified by ‘repl‘; cninfo(select,update,delete)
2) 服务器之间建立主从关系
chang master to master_host=‘172.16.7.151‘,master_user=‘repl‘,master_port=3306,master_log_file=‘mysql-bin.000001‘,master_log_pos=154; start slave;
3) 在管理节点上安装mha
yum install -y perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-CPAN perl-* * rpm安装 https://code.google.com/p/mysql-master-ha/ yum localinstall mha4*.rpm rpm -ql mha4mysql-manager-0.56-0.el6.noarch
* tar安装
tar -zxf mha4mysql-node-0.57.tar.gz cd mha4mysql-node-0.57 perl Makefile.PL make && make install cd ../ tar -zxf mha4mysql-manager-0.57.tar.gz cd mha4mysql-manager-0.57 perl Makefile.PL make && make install
4) 在master和slave节点安装node
* tar安装
yum install -y perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager tar -zxf mha4mysql-node-0.57.tar.gz cd mha4mysql-node-0.57 perl Makefile.PL make && make instal
* 产生ssh-key
将三台服务器SSH通过密钥认证
* 手工加载vip地址(在Master节点上手工执行)
/etc/init_vip.sh
#在master上手工加载虚拟VIP,如若没有加载,启动管理进程时将报错。
5) 在管理节点上传文件
* 检测文件
/usr/local/bin/master_ip_failover /usr/local/bin/master_ip_online_change
* 配置文件
/etc/app1.cnf
6) 启动
nohup /usr/local/bin/masterha_manager --conf=/etc/app1.cnf --ignore_last_failover </dev/null >/var/log/masterha/manager.log 2>&1 &
# 检测是否启动成功
masterha_check_status --conf=/etc/app1.cnf
# 查看状态信息
masterha_master_monitor --conf=/etc/app1.cnf
# 关闭MHA监控进程
masterha_stop --conf=/etc/app1.cnf
* 常用命令:
#manager端命令 masterha_manager#复制启动MHA进程 masterha_master_switch#监控守护进程,将故障的master进行转移 masterha_master_monitor#监控守护进程,判断master是否崩溃 #node节点命令 save_binary_logs#保存和拷贝死掉的master上的binlog filter_mysqlbinlog#该脚本在新版本里废弃掉了 purge_relay_logs#删除sql_thread线程执行完的relay log apply_diff_relay_logs#识别差异binlog和relay log并应用
7) MHA架构注意事项
1. 防止网络抖动误切换(脑裂)造成数据不一致,VIP没有采用keepalived,就是怕存在网络抖动问题。如果出现脑裂,那么从库会抢夺VIP,由于主库和从库都有VIP,会造成IP冲突,影响业务。
Keepalived只能实现一个节点的监控,而通过自带脚本可以实现两个节点的监控
2. SSH
* 修改默认端口
master_ip_failover master_ip_online_change # MHA::ManagerUtil::exec_ssh_cmd( $orig_master_ip, ‘12345‘, "ip addr del 192.168.143.200/32 dev em2", undef # 替换掉所有默认22端口 # em2 替换成本机网卡即可
* 解决ssh有时会出现连接慢或不通的情况
grep ‘ConnectTimeout‘ /etc/ssh/ssh_config ConnectTimeout 3 # 设置ssh连接超时时间
3. 死掉的master如何与新的Master建立同步复制关系?
在日志中找到CHANGE MASTER TO执行,即可建立新同步复制关系: Tue Nov 29 17:00:50 2016 - [info] All other slaves should start replication from here. Statement should be: CHANGE MASTER TO MASTER_HOST=‘VCrawlerDB-S or 192.168.143.242‘, MASTER_PORT=3307, MASTER_LOG_FILE=‘mysql-bin.000005‘, MASTER_LOG_POS=658, MASTER_USER=‘sys_repl‘, MASTER_PASSWORD=‘xxx‘;
4. MHA结合半同步复制(semi replication)时应注意:
将DB服务器通过VLAN划分为一个独立网段,与应用隔离。(由于MHA是基于ssh公私钥认证的,一般服务器是禁止SSH互通,以避免黑客入侵)
5. MHA 0.56不支持MariaDB 10的GTID复制,仅支持甲骨文MySQL的GTID复制
8) 经验
1) MHA无法回切
2) master VIP需要自己手动配置
MHA多实例也很简单,下次再更新
本文出自 “崛起” 博客,请务必保留此出处http://binbinwudi8688.blog.51cto.com/3023365/1877954
第3天 一篇、MHA安装(单实例)