mysql 主从复制,基于主从复制的mha高可用

两台机器:
master: 172.25.19.1
slave: 172.25.19.2
1.下载mysql以及其环境的依赖包
这里写图片描述
我这里使用GTID模式;
在/etc/my.cnf

server_id=3  #serverid 确保不同
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
log_slave_updates=ON
binlog_format=ROW

然后启动mysql;
这里写图片描述
完成后可以查看 grep password /var/log/mysqld.log 查看临时密码
然后进行安全认证
这里写图片描述
登陆进去好查看master状态;
然后进行用户的认证
这里写图片描述
在slave端 连接master;
这里写图片描述

mha 高可用的搭建
使用三台主机搭建一主两从的主从复制;
下面我已经搭建好了,具体步骤与上述相同
这里写图片描述
在主机上对用户进行授权
这里写图片描述
server2 server3 进行连接
如果这个sql线程为no的话,大概是因为你的数据不同步导致的
可以在master端 rester master; 清空以下日志数据
slave端 rester slave 在启动查看就可以了;
这里写图片描述
测试一下 ,在server1端创建的test库 数据时可以同步过来的
我这里使用server1作为manger
这里写图片描述
安装些软件包

每个节点都需要安装MHA Node的包
当然要保证my.cnf里面的配置一致,因为从机变主机后需要一些配置

我这里自己创建了一个目录
/etc/mha/
cd /etc/mha/
vim app.cnf
>以下为内容
[server default]
manager_workdir=/etc/mha/app1.log
manager_log=/var/log/mysqld.log
master_binlog_dir=/data/mysql
#master_ip_failover_script= /usr/local/bin/master_ip_failover   
#master_ip_online_change_script= /usr/local/bin/master_ip_online_change  
password=WANGpeihua!123
user=root
ping_interval=1
remote_workdir=/tmp
repl_password=WANGpeihua!123
repl_user=repl
#report_script=/usr/local/send_report  
#secondary_check_script= /usr/local/bin/masterha_secondary_check -s server03 -s server02            
#shutdown_script=""  
#ssh_user=root      

[server1]
hostname=172.25.19.1
port=3306

[server2]
hostname=172.25.19.2
port=3306
#candidate_master=1 
#check_repl_delay=0 

[server3]
hostname=172.25.19.3
port=3306

>

这三台机器之间要进行免密连接
这里写图片描述
这里写图片描述
这里写图片描述

然后运用两个脚本进行检查状态;
masterha_check_repl --conf=/etc/mha/app.cnf
masterha_check_ssh --conf=/etc/mha/app.cnf

这里写图片描述
这里写图片描述
显示成功之后 将它打入后台 然后关闭mysql
这里写图片描述

这里写图片描述
查看日志 表示master转换到2上面成功了
这里写图片描述
在2上面可以看到 slave 状态已经不在了
这里写图片描述
在3 上面可以看到 已经自动到2上面了
这里写图片描述
将1启动好 ;之后 连接到2主机上面
下面进行手动切换

masterha_master_switch --master_state=dead --conf=/etc/mha/app.cnf --dead_master_host=172.25.19.2 --dead_master_port=3306 --new_master_host=172.25.19.1 --new_master_port=3306 --ignore_last_failover  #2主机已经死掉了 我要切换到1上面

他的日志会自动在当前页面显示出来 表明成功了
这里写图片描述
server3 可以看到已经到1上面了
这里写图片描述
建议在做切换前用check检查一下

下面增加vip
首先更改脚本



my $vip = '172.25.19.100/24';   自己的vip
my $ssh_start_vip = "/sbin/ip addr add $vip dev eth0";  以及添加删除的方式
my $ssh_stop_vip = "/sbin/ip addr del $vip dev eth0";

GetOptions(

并增加x权限 扔到app.cnf 里所写的位置
在/etc/mha/app.cnf 把原来注释掉的有关脚本的俩行打开

[server default]
manager_workdir=/etc/mha/app1.log
manager_log=/var/log/mysqld.log
master_binlog_dir=/data/mysql
master_ip_failover_script=/usr/local/bin/master_ip_failover  #这两行
master_ip_online_change_script=/usr/local/bin/master_ip_online_change #
password=WANGpeihua!123
user=root
ping_interval=1
remote_workdir=/tmp

在1上面自动切换 可以见到vip已经自动删掉了
这里写图片描述
查看日志
很明显已经成功了
这里写图片描述
这里写图片描述
vip已经在2 上面 加上了
这里写图片描述
用外界远程连接一个vip的数据库
可以看到只是中间有点小的延迟 并没用中断使用;
这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值