MySQL数据库高可用之MHA安装部署基础命令

关闭selinux:
vim /etc/selinux/config下
selinux=disables
在这里插入图片描述

关闭防火墙端口
firewall-cmd --add-port=3306/tcp –permanent
firewall-cmd --add-port=3306/tcp
在这里插入图片描述

安装:
yum install -y repel-release
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
在这里插入图片描述

/etc/yum.repos.d/下有epel.repo文件
yum -y install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-ParallelForkManager perl-Config-IniFiles ncftp perl-Params-Validate perl-CPAN perl-TestMock-LWP.noarch perl-LWP-Authen-Negotiate.noarch perl-devel perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
在这里插入图片描述

编写/hosts文件(为克隆做准备)
vim /etc/hosts
192.168.xx master1
xxxx master2
xxxx slave
xxxx manager
在这里插入图片描述

systemctl stop mysqld关闭MySQL服务
rm -rf /usr/local/mysql/data/auto.cnf删除uuid
vim /etc/ld.so.conf下/usr/local/mysql/lib
ldconfig启动ld服务
在这里插入图片描述

Ping master1master2slave1manger测试是否能解析到ip
无密登录(私钥公钥)
ssh-keygen -t rsa(创建公私钥)
ll /root/.ssh下rsa.pub为公钥rsa为私钥(查看共私钥)
for i in master1 master2 slave1 manager;do ssh-copy-id $i ;done(生成私秘钥并且赋值,每台主机都是创建生成这样才可以无密钥登录)在这里插入图片描述

for i in master1 master2 slave1 manager; do ssh $i hostname;done(打印每台的hostname)
在这里插入图片描述

检测是否支持安装插件
在这里插入图片描述

所有mysql数据库服务器,安装半同步插件(semisync_master.so,semisync_slave.so)
在这里插入图片描述

检查是否安装正确
在这里插入图片描述

在配置数据同步先将主mysql服务器拷贝到从mysql服务器上
scp /etc/my.cnf ip:/etc
在这里插入图片描述

更改主配
vim /etc/my.cnf

server-id = 1 
log-bin=mysql-bin 
binlog_format=mixed 
log-bin-index=mysql-bin.index 
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000 
rpl_semi_sync_slave_enabled=1 
relay_log_purge=0 
relay-log = relay-bin 
relay-log-index = slave-relay-bin.index

在这里插入图片描述

重置主服务mysql -uroot -p123456 -e “reset master”
重启mysql服务
在这里插入图片描述

Scp /etc/my.cnf ip:/etc(进入后更改server)
在这里插入图片描述
在这里插入图片描述

重置主服务重启MySQL服务
在这里插入图片描述

slave文件中配置:

Server-id = 3 
log-bin = mysql-bin 
relay-log = relay-bin 
relay-log-index = slave-relay-bin.index 
read_only = 1 
rpl_semi_sync_slave_enabled=1

在这里插入图片描述

重置主服务重启MySQL服务
在这里插入图片描述

在master1主服务上创建权限用户
grant replication slave on . to rep@‘192.168.179.%’ identified by’123456’;
grant all privileges on . to ager@‘192.168.179.%’ identified by ‘123456’;
在这里插入图片描述

在master2主服务上创建权限用户
grant replication slave on . to rep@‘192.168.179.%’ identified by’123456’;
grant all privileges on . to ager@‘192.168.179.%’ identified by ‘123456’;
在这里插入图片描述

在slave1主服务上创建权限用户
grant all privileges on . to ager@‘192.168.179.%’ identified by ‘123456’;
在这里插入图片描述

查看半同步相关信息
在这里插入图片描述

查看半同步状态
在这里插入图片描述

在master2服务上

change master to
master_host='master1ip',
master_user='rep',
master_password='123456',
master_log_file='二进制',
master_log_pos=pos值;

开启从服务start slave
在这里插入图片描述

在slave1服务上

change master to
master_host='master1ip',
master_user='rep',
master_password='123456',
master_log_file='二进制',
master_log_pos=pos值;

开启从服务start slave
在这里插入图片描述

查看master1服务器的半同步状态
在这里插入图片描述

在manager主机上安装mha4mysql-manager-0.58.tar,mha4mysql-node-0.58.tar
在其余主机安装mha4mysql-node-0.58.tar
安装:
tar zxf mha4mysql-node-0.58.tar.gz
cd mha4mysql-node-0.58/
perl Makefile.PL
make && make install
在这里插入图片描述

在manager上
在这里插入图片描述
在这里插入图片描述

创建文件夹
mkdir /etc/masterha存放文件
mkdir -p /masterha/app1存放日志
mkdir /scripts存放脚本

cp samples/conf/* /etc/masterha
cp samples/scripts/* /scripts

编写配置文件
vim /etc/masterha/app1.cnf

[server default]
manager_workdir=/masterha/app1
manager_log=/masterha/app1/manager.log
user=ager
password=123456
ssh_user=root
repl_user=rep
repl_password=123456
ping_interval=1

[server1]
hostname=ip
port=3306
master_binlog_dir=/usr/local/mysql/data
candidate_master=1

[server2]
hostname=ip
port=3306
master_binlog_dir=/usr/local/mysql/data
candidate_master=1

[server3]
hostname=ip
port=3306
master_binlog_dir=/usr/local/mysql/data
no_master=1

在这里插入图片描述

保存退出

/etc/masterha/masterha_default.cnf
在这里插入图片描述

配关配置项的解释: manager_workdir=/masterha/app1 //设置manager的工作目录 manager_log=/masterha/app1/manager.log //设置manager的日志 user=manager //设置监控用户manager password=123456 //监控用户manager的密码 ssh_user=root //ssh连接用户 repl_user=mharep //主从复制用户 repl_password=123.abc //主从复制用户密码 ping_interval=1 //设置监控主库,发送ping包的时间间隔,默认 是3秒,尝试三次没有回应的时候自动进行railover master_binlog_dir=/usr/local/mysql/data //设置master 保存 binlog的位置,以便MHA可以找到master的日志,我这里的也就是mysql的数据目录 candidate_master=1 //设 置为候选master,如果设置该参数以后,发生主从切换以后将会将此从库提升为主库

检测ssh有效性
masterha_check_ssh --global_conf=/etc/masterha/masterha_default.cnf --conf=/etc/masterha/app1.cnf
在这里插入图片描述

集群赋值的有效性
masterha_check_repl --global_conf=/etc/masterha/masterha_default.cnf --conf=/etc/masterha/app1.cnf
如果测试不成功则在每台主机上ln -s /usr/local/mysql/bin/* /usr/local/bin(除manager)
在这里插入图片描述

启动 manager
nohup(离线管理) masterha_manager --conf=/etc/masterha/app1.cnf --conf=/etc/masterha/app1.cnf &>/tmp/master.log &(放到后台)
在这里插入图片描述

检查状态
masterha_check_status --conf=/etc/masterha/app1.cnf
在这里插入图片描述

上slave1上查看状态
在这里插入图片描述

MHA Manager 端日常主要操作步骤
1)检查是否有下列文件,有则删除。 发生主从切换后,MHAmanager服务会自动停掉,且在 manager_workdir(/masterha/app1)目录下面生成文件app1.failover.complete,若要启动MHA,必须先确保 无此文件) 如果有这个提示,那么删除此文件/ masterha/app1/app1.failover.complete [error] [/usr/share/perl5/vendor_perl/MHA/MasterFailover.pm, ln298] Last failover was done at 2015/01/09 10:00:47. Current time is too early to do failover again. If you want to do failover, manually remove / masterha/app1/app1.failover.complete and run this script again.
在这里插入图片描述

2)检查MHA复制检查:(需要把master设置成candicatade的从服务器)
在这里插入图片描述
在这里插入图片描述

3)停止MHA:
在这里插入图片描述

4)启动MHA:
在这里插入图片描述

当有slave 节点宕掉时,默认是启动不了的,加上 --ignore_fail_on_start 即使有节点宕掉也能启动MHA,如下:
在这里插入图片描述

5) 检查状态:
在这里插入图片描述

6) 检查日志:
在这里插入图片描述

7)主从切换后续工作 重构: 重构就是你的主挂了,切换到Candicate master上,Candicate master变成了主, 因此重构的一种方案原主库修复成一个新的slave 主库切换后,把原主库修复成新从库,然后重新执行以上5 步。原主库数据文件完整的情况下,可通过以下方式找出最后执行的CHANGE MASTER命令:
在这里插入图片描述

启动manager
在这里插入图片描述

注意:如果正常,会显示"PING_OK",否则会显示"NOT_RUNNING",这代表MHA监控没有开启。
定期删除中继日志 在配置主从复制中,slave上设置了参数relay_log_purge=0,所以slave节点需要定期删除中 继日志,建议每个slave节点删除中继日志的时间错开。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值