找回密码
 立即注册
首页 业界区 安全 搭建数据库服务高可用架构

搭建数据库服务高可用架构

能杜孱 昨天 21:25
搭建数据库服务高可用架构
  1. 为了实现数据服务主库异常后,可以将从库自动切换为主库
复制代码
1.搭建高可用主从架构
  1. 架构环境规划 -- centos 7.9主库    10.0.0.51    8.0.36  MHA-node从库    10.0.0.52    8.0.36  MHA-node从库    10.0.0.53    8.0.36  MHA-node mgr     10.0.0.54    8.0.36  MHA-node MHA-manager MHA-manager: 管理程序包  负责监控和控制主从架构 MHA-node   : 节点程序包  和管理程序进行对接步骤一:在虚拟环境中部署安装数据库和MHA程序主库安装程序信息安装数据库8.0.36 程序 并实现程序正常运行 (二进制包)安装MHA-node程序yum install perl-DBD-MySQL -yrpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpmyum localinstall -y mha4mysql-node-0.58-0.el7.centos.noarch.rpm从库安装程序信息安装数据库8.0.36 程序 并实现程序正常运行 (二进制包)安装MHA-node程序yum install perl-DBD-MySQL -yrpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpmyum localinstall -y mha4mysql-node-0.58-0.el7.centos.noarch.rpm管理节点程序信息安装数据库8.0.36 程序 不需要程序正常运行 (二进制包)安装MHA-node程序yum install perl-DBD-MySQL -yrpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpmyum localinstall -y mha4mysql-node-0.58-0.el7.centos.noarch.rpm安装MHA-manager程序yum install -y perl-Config-Tiny epel-release perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiResrpm -ivh mha4mysql-manager-0.58-0.el7.centos.noarch.rpm yum localinstall -y mha4mysql-manager-0.58-0.el7.centos.noarch.rpm步骤二:在数据库和管理节点中做高可用环境配置准备好主从同步架构环境 -- GTID(推荐)show slave status\G实现主从数据库之间互信 -- ssh互信      主库操作 -- 10.0.0.51rm -rf /root/.ssh ssh-keygencd /root/.ssh mv id_rsa.pub authorized_keysscp  -r  /root/.ssh  10.0.0.52:/root scp  -r  /root/.ssh  10.0.0.53:/rootscp  -r  /root/.ssh  10.0.0.54:/rootssh 10.0.0.52 datessh 10.0.0.53 datessh 10.0.0.54 date- 以上操作完毕,表示52和53和54都信任了51ssh 10.0.0.51 datessh 10.0.0.53 datessh 10.0.0.54 date-- 以上操作完毕,表示51和53和54都信任了52ssh 10.0.0.51 datessh 10.0.0.52 datessh 10.0.0.54 date-- 以上操作完毕,表示51和52和54都信任了53ssh 10.0.0.51 datessh 10.0.0.52 datessh 10.0.0.53 date-- 以上操作完毕,表示51和52和53都信任了54步骤三:运行启动高可用服务程序ln -s /usr/local/mysql/bin/mysql  /usr/bin/mysqlln -s /usr/local/mysql/bin/mysqlbinlog  /usr/bin/mysqlbinlog-- 命令软链接创建,在管理节点和主从节点都进行创建-- 以下操作信息,在管理节点执行即可(10.0.0.54)mkdir -p /etc/mha-- 创建配置文件目录mkdir -p /var/log/mha/app1-- 创建日志目录create user mha@'10.0.0.%' identified with mysql_native_password by 'mha';grant all privileges on *.* to mha@'10.0.0.%';-- 在主从环境搭建好,在主库中创建mha监控用户cat > /etc/mha/app1.cnf &1 &MHA服务启动扩展说明:masterha_check_status --conf=/etc/mha/app1.cnfapp1 (pid:23754) is running(0:PING_OK), master:10.0.0.51-- 查看mha服务是否正确运行排查启动异常方法:1)查看日志信息,确认启动异常原因 /var/log/mha/app1/manager.log2)执行查看命令,确认启动异常原因masterha_check_ssh --conf=/etc/mha/app1.cnf -- 确认SSH互信是否正常masterha_check_repl --conf=/etc/mha/app1.cnf-- 确认主从同步是否正常
复制代码
2.MHA高可用功能配置和原理说明
  1. 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=15) 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. 1)VIP地址漂移功能设置   /usr/local/bin/master_ip_failover   mha服务加载2)数据补偿功能设置      搭建binlog日志远程备份功能/可以拉取备份日志3)实现MHA报警功能       /usr/local/bin/send_report          mha服务加载
复制代码
MHA高可用切换原理
  1. 1)当MHA实现高可用监控后,会不断对主库发起探活测试,但发现主库不能连接或返回查询结果2)当MHA发现主库异常后,会先举行新主角色选举过程3)当新的主节点选择后,会将数据信息在新的主节点上进行补偿4)在新的主节点补偿数据后,会实现新主节点和其余从节点之间主从关系重建5)在原有主节点上会删除VIP地址,在新主节点上会生成VIP地址(VIP漂移)6)所有前端业务都会访问新的主节点7)会利用邮件报警脚本,实现MHA故障转移报警通知
复制代码
3.MHA高可用功能测试和修复
  1. 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  /var/log/mha/app1/manager.log 2>&1 &
复制代码
4.MHA切换主数据库角色到原有主库
  1. 利用脚本文件实现角色手工切换转移   52(主) -主角色切换- 51(主)步骤一:编写手工切换脚本信息,并加载手工切换脚本vim /usr/local/bin/master_ip_online_change21 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.cnfmaster_ip_online_change_script=/usr/local/bin/master_ip_online_change步骤二:实现手工切换主备角色信息masterha_stop  --conf=/etc/mha/app1.cnfmasterha_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.54master_binlog_dir=/backup/binlog/10.0.0.51/   no_master=1cd /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. 1)MHA高可用架构部署过程   环境准备(安装程序 主从同步 ssh互信设置) --> 编写配置文件,并启动mha服务 --> 额外功能设置(VIP漂移/数据补偿功能/报警功能设置)2)MHA高可故障切换原理/高可用切换测试3)MHA故障修复过程   -- 将故障节点修复后,可以重新加入到高可用集群中   -- 可以手工将原有主库角色恢复
复制代码
课程知识练习
  1. 1.重新部署综合架构LNMP架构(wordpress) 在数据库应用上可以应用mysql数据库(构建为高可用架构)2.测试主库故障,网站业务是否可以正常访问  50x
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册