mysql 学习笔记之搭建MHA高可用
发表于:2024-11-28 作者:千家信息网编辑
千家信息网最后更新 2024年11月28日,4. 搭建MHA高可用4.1 架构图这里只搭建一套主从,架构如下4.2 安装MHA Node所有节点都需要安装,包括MHA,Master,Slave4.2.1 安装依赖包yum install -y
千家信息网最后更新 2024年11月28日mysql 学习笔记之搭建MHA高可用
4. 搭建MHA高可用
4.1 架构图
这里只搭建一套主从,架构如下
4.2 安装MHA Node
所有节点都需要安装,包括MHA,Master,Slave
4.2.1 安装依赖包
yum install -y perl-DBD-MySQL perl-ExtUtils-MakeMaker perl-CPAN
4.2.2 下载软件包
https://github.com/yoshinorim/mha4mysql-node/releases/tag/v0.58
4.2.3 编译安装
#解压tar zxvf mha4mysql-node-0.58.tar.gz#移动到/usr/local/目录下,并切换目录mv mha4mysql-node-0.58 /usr/local/cd /usr/local/mha4mysql-node-0.58#编译安装perl Makefile.PL makemake install
安装完成后 会在/usr/local/bin/生成以下脚本文件,Node脚本说明(这些工具通常由MHAManager的脚本触发)
save_binary_logs //保存和复制master的二进制日志apply_diff_relay_logs //识别差异的中继日志事件并将其差异 //的事件应用于其他的slavefilter_mysqlbinlog //去除不必要的ROLLBACK事件(MHA已 ///不再使用这个工具)purge_relay_logs //清除中继日志(不会阻塞SQL线程)
4.3 安装MHA Manger
4.3.1 安装依赖
yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager -y
4.3.2 下载软件包
https://github.com/yoshinorim/mha4mysql-manager/releases/tag/v0.58
4.3.3 编译安装
#解压tar -zxf mha4mysql-manager-0.58.tar.gz#移动到/usr/local/目录下,并切换目录mv mha4mysql-manager-0.58 /usr/local/cd /usr/local/mha4mysql-manager-0.58/# 编译安装perl Makefile.PLmakemake install
安装完成后,在/usr/local/bin会多出以下相关的命令脚本:
masterha_check_repl //检查MySQL复制健康状况masterha_check_ssh //检查ssh健康状况masterha_check_status //检测当前MHA运行状态masterha_conf_host //添加或者删除配置的server信息masterha_manager //启动MHAmasterha_master_monitor //检测master是否宕机masterha_master_switch //控制故障转移(自动或者手动)masterha_secondary_check //如果从manager节点发现masterha_stop //停止MHA
在/usr/local/mha4mysql-manager-0.58/samples/scripts 目录下会有相关脚本
master_ip_failover //自动切换时vip管理的脚本,不是必须,如果我们使用keepalived的,我们可以自己编写脚本完成对vip的管理,比如监控mysql,如果mysql异常,我们停止keepalived就行,这样vip就会自动漂移indistinguishableness //在线切换时vip的管理,不是必须,同样可以可以自行编写简单的shell完成power_manager //故障发生后关闭主机的脚本,不是必须send_report //因故障切换后发送报警的脚本,不是必须,可自行编写简单的shell完成
4.4 设置host 解析
4.4.1 设置主机名
#MHAhostnamectl set-hostname MHA#Masterhostnamectl set-hostname Master#Slave01hostnamectl set-hostname Slave01#Slave02hostnamectl set-hostname Slave02
4.4.2 配置Host文件
# vim /etc/hosts192.168.56.50 MHA192.168.56.51 Master192.168.56.52 Slave01192.168.56.53 Slave02
4.5 配置互信
#创建目录,所有节点执行mkdir ~/.sshcd ~/.ssh#生成公钥和私钥文件,一直回车使用默认即可,所有节点执行ssh-keygen -t rsa#将所有节点上的公钥复制到一台机器上,汇总成 authorized_keys#192.168.56.51服务器上,将生成的公钥复制到192.168.56.50下scp id_rsa.pub root@192.168.56.50:/root/.ssh/id_rsa.pub_51#192.168.56.52服务器上,将生成的公钥复制到192.168.56.50下scp id_rsa.pub root@192.168.56.50:/root/.ssh/id_rsa.pub_52#192.168.56.53服务器上,将生成的公钥复制到192.168.56.50下scp id_rsa.pub root@192.168.56.50:/root/.ssh/id_rsa.pub_53#192.168.56.50服务器上,将50,51,52,53服务器的公钥追加到认证文件中cat id_rsa.pub id_rsa.pub_51 id_rsa.pub_52 id_rsa.pub_53 >> authorized_keys#192.168.56.50服务器上,将汇总的公钥认证文件分发到其它节点scp authorized_keys root@192.168.56.51:/root/.ssh/scp authorized_keys root@192.168.56.52:/root/.ssh/scp authorized_keys root@192.168.56.53:/root/.ssh/#所有节点 验证ssh免密登录,第一次可能需要输入yes,后续不需要输入密码ssh 192.168.56.50 datessh 192.168.56.51 datessh 192.168.56.52 datessh 192.168.56.53 date
4.6 搭建主从复制(略)
参考第3节 Replication, 另注意如下事项:
#主从节点复制的过滤规则要相同,即binlog_do_db 与 binlog_ignore_db #参数主从配置需要相同#采用命令方式将从库设为只读,不要将该参数写进配置文件中mysql -e "set global read_only=1"#关闭中继日志的清除mysql -e "set global relay_log_purge=0"
4.7 配置MHA
4.7.1 创建监控用户
create user 'mha'@'%' identified by 'mha';GRANT ALL PRIVILEGES ON *.* TO 'mha'@'%';flush privileges;
4.7.2 创建配置文件
(1)创建目录
mkdir /mha/app1
(1)编辑配置文件
# vim /mha/app1/app1.cnf[server default]#mha manager日志文件manager_log=/mha/app1/manager.log#manager工作目录manager_workdir=/mha/app1#master节点存放binlog日志路径,以便MHA找到binlog,这里就是MySQL的数据目录master_binlog_dir=/data/mysql/3306/data#发生切换时slave节点binlog日志存放路径remote_workdir=/data/mysql/3306/data#自动切换脚本master_ip_failover_script=/usr/local/bin/master_ip_failover#手动切换脚本master_ip_online_change_script=/usr/bin/master_ip_online_change#一旦MHA到51的监控之间出现问题,MHA Manager将尝试从52和53登录到51secondary_check_script=/usr/local/bin/masterha_secondary_check -s 192.168.56.52 -s 192.168.56.53 --user=root --port=22 --master_host=192.168.56.51 --master_port=3306#监控主节点时间间隔ping_interval=3#设置故障发生后关闭故障主机脚本(该脚本的主要作用是关闭主机放在发生脑裂,这里没有使用)#shutdown_script=""#数据库监控用户user=mhapassword=mha#复制用户repl_password=replrepl_user=repl#ssh登录用户ssh_user=root[server1]hostname=192.168.56.51port=3306[server2]candidate_master=1check_repl_delay=0hostname=192.168.56.52port=3306[server3]hostname=192.168.56.53port=3306
可以从从模板中拷贝后更改
cp /usr/local/mha4mysql-manager-0.58/samples/conf/app1.cnf /mha/
app1.cnf #是对某个复制组的配置文件。masterha_default.cnf #MHA manager的全局配置文件,可以通过这一个配置文件管理多个复制组
4.7.1 检查状态
masterha_check_ssh --conf=/mha/app1/app1.cnfmasterha_check_repl --conf=/mha/app1/app1.cnf
如出现错误:
Bareword "FIXME_xxx" not allowed while "strict subs" in use at /etc/mha/script/master_ip_failover line 100.
[^bug]: 注释掉 FIXME_xxx;
4.8 启动HMA Manager 监控
#查看MHA manager监控状态,这里没有运行masterha_check_status --conf=/mha/app1/app1.cnf#app1 is stopped(2:NOT_RUNNING).#启动MHA监控 --remove_dead_master_conf --ignore_last_failovernohup masterha_manager --conf=/mha/app1/app1.cnf --remove_dead_master_conf --ignore_last_failover 稍等片刻,出现提示:#app1 (pid:29512) is running(0:PING_OK),master:192.168.56.51 # 停止MHA监控masterha_stop --conf=/mha/app1/app1.cnf
4.9 检查日志
[root@localhost app1]# tail -f /mha/app1/manager.log +--192.168.56.53(192.168.56.53:3306)Fri Aug 23 10:09:30 2019 - [info] Checking master_ip_failover_script status:Fri Aug 23 10:09:30 2019 - [info] /usr/local/mha4mysql-manager-0.58/samples/scripts/master_ip_failover --command=status --ssh_user=root --orig_master_host=192.168.56.51 --orig_master_ip=192.168.56.51 --orig_master_port=3306Fri Aug 23 10:09:30 2019 - [info] OK.Fri Aug 23 10:09:30 2019 - [warning] shutdown_script is not defined.Fri Aug 23 10:09:30 2019 - [info] Set master ping interval 3 seconds.Fri Aug 23 10:09:30 2019 - [info] Set secondary check script: /usr/local/bin/masterha_secondary_check -s 192.168.56.52 -s 192.168.56.53 --user=root --port=22 --master_host=192.168.56.51 --master_port=3306Fri Aug 23 10:09:30 2019 - [info] Starting ping health check on 192.168.56.51(192.168.56.51:3306)..Fri Aug 23 10:09:30 2019 - [info] Ping(SELECT) succeeded, waiting until MySQL doesn't respond..
Ping(SELECT) succeeded ,整个系统监控正常开始了。
4.10 定时清理中继日志
4.10.1 创建清理脚本
# vim purge_relay_log.sh #!/bin/bash#数据库用户名密码端口user=rootpasswd='Yxc@3306'port=3306#脚本日志存放路径log_dir='/mha/app1'#指定创建relay log的硬链接的位置,默认是/var/tmp。由于系统不同分区创建硬链接文件会失败,故需要执行硬链接具体位置,成功执行脚本后,硬链接的中继日志文件被删除。work_dir='/mha'#删除中继日志脚本purge='/usr/local/bin/purge_relay_logs'if [ ! -d $log_dir ]then mkdir $log_dir -pfi#--disable_relay_log_purge :默认情况下,如果relay_log_purge=1,脚本会什么都不清理,自动退出。通过设定这个参数,当relay_log_purge=1的情况下会将relay_log_purge设置为0。清理relay log之后,最后将参数设置为OFF。$purge --user=$user --password=$passwd --disable_relay_log_purge --port=$port --workdir=$work_dir >> $log_dir/purge_relay_logs.log 2>&1
4.10.2 授权
chmod a+x purge_relay_log.sh
4.10.3 创建定时任务
00 03 * * * /bin/bash /root/purge_relay_log.sh
4.11 keepalievd 配置VIP
略
4.12 Failover测试验证
略
脚本
文件
日志
配置
节点
监控
目录
切换
公钥
服务器
中继
服务
故障
用户
生成
主从
主机
参数
链接
检查
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
学校教师网络安全培训材料
Arcgis数据库blob类型
软件开发公司税务优惠政策
公安部参公管理网络技术
互联网时代软件开发模式
应用软件开发需要什么技术
清华大学软件开发和研究中心
网络安全经费保障情况汇报
网络安全教育宣讲新闻
ptsd网络安全
奇安信亮相中国网络安全年会
虹口区市场软件开发诚信经营
数据库data文件夹在哪
教育软件开发方向职业规划
小学国家网络安全宣传总结
怀旧服服务器状态查询小程序
一体机能不能安装数据库
win10 服务器管理在哪
计算机应用网络技术论文
辽宁cmmi软件开发
聊城录入数据库
2020羊城杯网络安全
db2数据库行数
系统网络安全数据库
服务器小游戏
通信与网络技术国家中心
郑州的软件开发公司多吗
网络安全管理流程
连接本机数据库
广州专业的软件开发公司