马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
搭建数据库服务高可用架构
- 为了实现数据服务主库异常后,可以将从库自动切换为主库
复制代码 1.搭建高可用主从架构
2.MHA高可勤奋能设置和原理阐明
- 1)MHA高可用服务运行启动
- nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &
- --conf=/etc/mha/app1.cnf -- 配置文件没有存储在默认路径下,需要进行指定加载;需要利用自定义配置文件实现多个主从架构高可用
- --remove_dead_master_conf -- 表示在配置文件中会将有故障的主节点配置删除,避免配置信息影响选主效率
- --ignore_last_failover -- 表示可以让高可用服务出现异常后,快速启动
- < /dev/null -- 表示程序运行过程中,忽略所有交互操作信息
- PS:MHA实现高可用属于一次性高可用服务
- 2)MHA高可用主节点监控过程
- mha会调用masterha_master_monitor监控主节点脚本 实现确认主库是否存活
- 应用监控用户(mha)登录连接主库,执行SQL语句 select user();
- 当发现监控用户无法连接主库或者无法向主库发送查询请求,都会触发故障转移操作
- 3)MHA会从其余节点中选择新主节点(选主过程) 52 53 54 55 56 57
- 进行分组操作
- alive 将活着的从节点划分到存活组中 52 53
- latest 数据量和主库基本一致的组 52 53
- pref 指定接替主库角色节点信息组 (candidate_master=1)
- dead 不会参数选主的角色组 54 (no_master=1/log_bin=0/检测主从数据差异量>100M)
- 根据不同策略选主
- 最优策略 先考虑 alive 其次考虑 latest 再其次考虑 pref 最后确认 dead组 55 56
- 以上策略选择完,还有多个节点信息,根据节点顺序编号选择最终的主节点
- 次优选择 先考虑 alive 其次考虑 latest dead组
- 以上策略选择完,还有多个节点信息,根据节点顺序编号选择最终的主节点
- 再次优选择 先考虑 alive 其次考虑 pref dead组
- 以上策略选择完,还有多个节点信息,根据节点顺序编号选择最终的主节点
- 最后选主方法 先考虑 alive dead组
- 以上策略选择完,还有多个节点信息,根据节点顺序编号选择最终的主节点
- 4)MHA数据补偿操作过程
- 情况一:原有主库只是数据库服务异常,但是数据库系统环境正常(ssh连接管理)
- ssh 连接主库 -- 到指定binlog目录中拉取日志 -- 从库中(选举后)-- 将主库binlog信息补充到从库中
- 情况二:原有主库系统崩溃,无法实现ssh连接管理
- 1)所有从库之间进行binlog信息对比 ssh连接所有从库
- 52 新主 -- 53 binlog -- 54 binlog -- 55 binlog
- 1-15 1-9 1-15 1-10
- 2)借助远程日志备份服务器,将binlog日志信息拉取并补偿数据
- 必须搭建好原有备份日志服务/管理节点可以连接备份服务器拉取日志
- mkdir -p /backup/binlog/10.0.0.51/ && cd /backup/binlog/10.0.0.51/
- mysqlbinlog -R --host=10.0.0.51 --user=root --password=123456 --raw --stop-never binlog.000001 &
- vim /etc/mha/app1.cnf
- [binlog1]
- hostname=10.0.0.54
- master_binlog_dir=/backup/binlog/10.0.0.51/
- no_master=1
- 5) MHA会自动完成主从重建过程
- 52 新主 10.0.0.52 3306 repl 123456
- 管理其他从节点和新主建立连接
- 53 从库 stop slave; change master 10.0.0.52 3306 repl 123456; start slave
- 54 从库 stop slave; change master 10.0.0.52 3306 repl 123456; start slave
- 6) MHA实现VIP地址创建和实现地址漂移
- ifconfig ens33:1 10.0.0.50/24 -- 在主库中执行
- 上传脚本文件信息
- vim /usr/local/bin/master_ip_failover
- 13 my $vip = '10.0.0.50/24';
- 14 my $key = '1';
- 15 my $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip";
- 16 my $ssh_stop_vip = "/sbin/ifconfig ens33:$key down";
- 17 my $ssh_Bcast_arp= "/sbin/arping -I ens33 -c 3 -A 10.0.0.50";
- -- 以上编写内容在mha管理节点操作
- vim /etc/mha/app1.cnf
- [server default]
- master_ip_failover_script=/usr/local/bin/master_ip_failover
- 7) MHA故障切换实现邮件报警功能
- vim /usr/local/bin/send_report
- 28 my $smtp='smtp.qq.com';
- 29 my $mail_from='330882721@qq.com';
- 30 my $mail_user='330882721';
- 31 my $mail_pass='lshxuahtxuxfcaec';
- 32 #my $mail_to=['to1@qq.com','to2@qq.com',];
- 33 my $mail_to='330882721@qq.com';
- vim /etc/mha/app1.cnf
- [server defaults]
- report_script=/usr/local/bin/send_report
复制代码 MHA额外设置
- 1)VIP地址漂移功能设置 /usr/local/bin/master_ip_failover mha服务加载
- 2)数据补偿功能设置 搭建binlog日志远程备份功能/可以拉取备份日志
- 3)实现MHA报警功能 /usr/local/bin/send_report mha服务加载
复制代码 MHA高可用切换原理
- 1)当MHA实现高可用监控后,会不断对主库发起探活测试,但发现主库不能连接或返回查询结果
- 2)当MHA发现主库异常后,会先举行新主角色选举过程
- 3)当新的主节点选择后,会将数据信息在新的主节点上进行补偿
- 4)在新的主节点补偿数据后,会实现新主节点和其余从节点之间主从关系重建
- 5)在原有主节点上会删除VIP地址,在新主节点上会生成VIP地址(VIP漂移)
- 6)所有前端业务都会访问新的主节点
- 7)会利用邮件报警脚本,实现MHA故障转移报警通知
复制代码 3.MHA高可勤奋能测试和修复
- MHA切换功能测试
- masterha_stop --conf=/etc/mha/app1.cnf
- nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &
- /etc/init.d/mysqld stop
- -- 模拟主库异常
- -- 检测VIP地址是否漂移 主库vip是否清理 从库是否生成VIP
- -- 检查主从关系是否重新建立 show slave status\G 获取新主库连接信息
- -- 检查报警邮件信息是否收到 QQ 其他邮箱
- MHA切换修复过程:
- 步骤一:将原有主库恢复运行启动
- /etc/init.d/mysqld start
- -- 当主库无法正常恢复启动,可以重新建立新的数据库实例(重新加载备份数据 和新主库建立主从同步)
- 步骤二:在原有主库中做设置,实现和新主库建立主从同步
- reset master;
- CHANGE MASTER TO
- MASTER_HOST='10.0.0.52',
- MASTER_PORT=3306,
- MASTER_USER='repl',
- MASTER_PASSWORD='123456',
- master_auto_position=1;
- 在新主库中做数据备份,在原主库中进行数据恢复
- mysqldump -A --source-data >/backup/all-03-09-02.sql
- scp -rp /backup/all-03-09-02.sql 10.0.0.51:/backup/
- mysql </backup/all-03-09-02.sql
- start slave;
- 步骤三:在MHA配置文件中,添加原主节点配置信息
- vim /etc/mha/app1.cnf
- [server1]
- hostname=10.0.0.51
- port=3306
- 步骤四:恢复binlog日志远程备份功能
- 10.0.0.54
- mkdir -p /backup/binlog/10.0.0.52/ && chown -R mysql.mysql /backup/binlog/10.0.0.52/
- cd /backup/binlog/10.0.0.52/
- mysqlbinlog -R --host=10.0.0.52 --user=root --password=123456 --raw --stop-never binlog.000001 &
- 步骤五:重新恢复MHA服务运行启动
- vim /etc/mha/app1.cnf
- [binlog1]
- hostname=10.0.0.54
- master_binlog_dir=/backup/binlog/10.0.0.52/
- no_master=1
- nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &
复制代码 4.MHA切换主数据库脚色到原有主库
- 利用脚本文件实现角色手工切换转移 52(主) -主角色切换- 51(主)
- 步骤一:编写手工切换脚本信息,并加载手工切换脚本
- vim /usr/local/bin/master_ip_online_change
- 21 my $vip = "10.0.0.50/24";
- 22 my $key = "1";
- 23 my $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip";
- 24 my $ssh_stop_vip = "/sbin/ifconfig ens33:$key $vip down";
- 25 my $ssh_Bcast_arp= "/sbin/arping -I ens33 -c 3 -A 10.0.0.50/24";
- vim /etc/mha/app1.cnf
- master_ip_online_change_script=/usr/local/bin/master_ip_online_change
- 步骤二:实现手工切换主备角色信息
- masterha_stop --conf=/etc/mha/app1.cnf
- masterha_master_switch --conf=/etc/mha/app1.cnf --master_state=alive --new_master_host=10.0.0.51 --orig_master_is_new_slave --running_updates_limit=10000
- --master_state=alive -- 表示在主节点正常运行状态,做主备切换
- --new_master_host -- 表示将哪个节点切换成主节点
- --orig_master_is_new_slav -- 表示让其余从节点和新主节点重新建立主从关系
- --running_updates_limit -- 切换过程有异常超过时间设定,会撤销切换
- FLUSH NO_WRITE_TO_BINLOG TABLES --在主节点做命令执行 切换过程中禁止向主节点写入新的binlog信息
- 步骤三:重新恢复MHA服务运行
- vim /etc/mha/app1.cnf
- [binlog1]
- hostname=10.0.0.54
- master_binlog_dir=/backup/binlog/10.0.0.51/
- no_master=1
- cd /backup/binlog/10.0.0.51/
- mysqlbinlog -R --host=10.0.0.51 --user=root --password=123456 --raw --stop-never binlog.00000X &
- nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &
复制代码 总结
- 1)MHA高可用架构部署过程
- 环境准备(安装程序 主从同步 ssh互信设置) --> 编写配置文件,并启动mha服务 --> 额外功能设置(VIP漂移/数据补偿功能/报警功能设置)
- 2)MHA高可故障切换原理/高可用切换测试
- 3)MHA故障修复过程
- -- 将故障节点修复后,可以重新加入到高可用集群中
- -- 可以手工将原有主库角色恢复
复制代码 课程知识训练
- 1.重新部署综合架构LNMP架构(wordpress) 在数据库应用上可以应用mysql数据库(构建为高可用架构)
- 2.测试主库故障,网站业务是否可以正常访问 50x
复制代码 免责声明:如果侵犯了您的权益,请联系站长及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金. |