• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    阿里云服务器手动实现mysql双机热备的两种方式

    一、概念

    1、热备份和备份的区别

      热备份指的是:High Available(HA)即高可用,而备份指的是Backup,数据备份的一种。这是两种不同的概念,应对的产品也是两种功能上完全不同的产品。热备份主要保障业务的连续性,实现的方法是故障点的转移。而备份,主要目的是为了防止数据丢失,而做的一份拷贝,所以备份强调的是数据恢复而不是应用的故障转移。

    2、什么是双机热备? 

      双机热备从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务。当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续提供服务。

      从狭义上讲,双机热备就是使用互为备份的两台服务器共同执行同一服务,其中一台主机为工作机(Primary Server),另一台主机为备份主机(Standby Server)。在系统正常情况下,工作机为应用系统提供服务,备份机监视工作机的运行情况(一般是通过心跳诊断,工作机同时也在检测备份机是否正常),当工作机出现异常,不能支持应用系统运营时,备份机主动接管工作机的工作,继续支持关键应用服务,保证系统不间断的运行。双机热备针对的是IT核心服务器、存储、网络路由交换的故障的高可用性解决方案。

    好,下面给大家介绍阿里云服务器实现mysql双机热备,具体内容如下所示:

    阿里云服务器由于不支持keepalive虚拟ip,导致无法通过keepalive来实现mysql的双机热备。我们这里要实现阿里云的双机热备有两种方式:

    1,购买阿里云的云数据库高级版,自带从库,主库故障自动切换到从库

    2这里主要是讲第二种方式,两台阿里云服务器,分别部署mysql,实现mysql的主主同步。这里就不着重讲mysql的主主同步了,大家可以自行百度,有需要的,以后可能会出一篇文章。假设现在已经实现了mysql主主同步的情况下,如何处理

    因为使用的是springboot,所以需要处理下yml文件,然后加了个发送邮件给多个人,这里主机跑的定时任务,备机需要的话,也可以相应的跑一下

    因为我是使用docker部署的mysql,所以使用的docker ps 查看mysql的状态,如果普通部署的可以使用ps或者直接登录mysql看能否成功来判断

    # coding: utf8
    import subprocess
    from email.mime.text import MIMEText
    import smtplib
    import os
    #因为这里用的Java的springboot,如果切换备机,需要修改部分yml文件
    YML_PATH = ''
    NEW_YML = ''
    msg_from = '' # 发送方邮箱
    passwd = '' # 填入发送方邮箱的授权码
    msg_to = []
    def check_mysql():
     res = subprocess.Popen('docker ps |grep mysql', stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
     stdout, stderr = res.communicate()
     if stdout:
      res_status = subprocess.Popen("docker ps |grep mysql| awk '{print $7}'", stdout=subprocess.PIPE,
              stderr=subprocess.PIPE, shell=True)
      out, err = res_status.communicate()
      if out.strip() == "Up":
       print 'mysql is ok'
      else:
       print 'mysql is broken, switch standby machine'
       flag = judge_mysql_string()
       if flag:
        print '已经连接备机,无需切换'
       else:
        switch_mysql()
     else:
      print 'mysql is broken, switch standby machine'
      flag = judge_mysql_string()
      if flag:
       print '已经连接备机,无需切换'
      else:
       switch_mysql()
    def switch_mysql():
     print '---copy yml----'
     subprocess.call('cp {} {}'.format(NEW_YML, YML_PATH), shell=True)
     subprocess.call('docker restart tomcat', shell=True)
     subject = 'mysql主机故障'
     info = 'mysql主机故障,已经切换到备机,请查看主机问题,及时修复,如需切换回去,' \
    
     content = 'html>meta charset="UTF-8">body>p style="color: red">{}/p> /body>/html>'.format(info)
     send_email(subject, content)
     print '----end switch---'
    def send_email(subject, content):
     msg = MIMEText(content, 'html', 'utf-8')
     msg['Subject'] = subject
     msg['From'] = msg_from
     msg['To'] = ','.join(msg_to)
     try:
      s = smtplib.SMTP_SSL("smtp.qq.com", 465)
      s.login(msg_from, passwd)
      s.sendmail(msg_from, msg_to, msg.as_string())
     except Exception as e:
      print e
     finally:
      s.quit()
    def judge_mysql_string():
     with open(os.path.join(YML_PATH, 'application.yml'),'r') as f:
      res = f.read()
      if 'your ip' in res:
       return True
      else:
       return False
    check_mysql()

    总结

    以上所述是小编给大家介绍的阿里云服务器手动实现mysql双机热备的两种方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
    如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

    您可能感兴趣的文章:
    • 阿里云服务器手动实现mysql双机热备的两种方式
    • 阿里云ECS云服务器(linux系统)安装mysql后远程连接不了(踩坑)
    • 阿里云esc服务器Docker部署单节点Mysql的讲解
    • 阿里云云服务器mysql密码找回的方法
    • 使用navicate连接阿里云服务器上的mysql
    • Mysql数据库双机热备难点分析
    • Mysql 数据库双机热备的配置方法
    • mysql双机热备份的实现步骤
    上一篇:详解MySQL8.0+常用命令
    下一篇:mysql双机热备实现方案【可测试】
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    阿里云服务器手动实现mysql双机热备的两种方式 阿里,云,服务器,手动,实现,