当前位置: 首页 > 编程笔记 >

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

慕阳伯
2023-03-14
本文向大家介绍阿里云服务器手动实现mysql双机热备的两种方式,包括了阿里云服务器手动实现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双机热备的两种方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

 类似资料:
  • 买了一个阿里云服务器,必须要创建实例才可以使用吗?什么是阿里云服务器的实例呢?

  • 本文向大家介绍阿里云ECS服务器部署django的方法,包括了阿里云ECS服务器部署django的方法的使用技巧和注意事项,需要的朋友参考一下 参考 服务器安装的是Centos 系统。 uwsgi是使用pip安装的。 nginx是使用yum install nginx安装。 python 2.7, mysql 5.5使用 yum安装。 它们之间的逻辑关系如下: the web client <->

  • 在 Docker 集群 部署项目时,收集日志会是一个比较麻烦的问题,但阿里云提供了十分好用的 日志收集系统,本篇文档就是简略介绍一下阿里云日志收集的使用方法。 Docker Swarm 集群搭建 开通日志服务 首先第一步便是在阿里云上开通 日志服务。 日志服务文档 以下的教程是一个顺序的操作方式,一步一步讲述如何使用日志服务。 安装 Logtail 容器 标准 Docker 日志采集流程文档 参数

  • 本文向大家介绍详解Mysql双机热备和负载均衡的实现步骤,包括了详解Mysql双机热备和负载均衡的实现步骤的使用技巧和注意事项,需要的朋友参考一下 MySQL数据库没有增量备份的机制,但它提供了一种主从备份的机制,就是把主数据库的所有的数据同时写到备份数据库中。实现MySQL数据库的热备份。 下面是具体的主从热备份的步骤: 假设主服务器A(master)、从服务器为B(slave) A:192.1

  • 本文向大家介绍keepalived双机热备nginx的配置方法,包括了keepalived双机热备nginx的配置方法的使用技巧和注意事项,需要的朋友参考一下 nginx目前是我最常用的反向代理服务,线上环境为了能更好的应对突发情况,一般会使用keepalived双机热备nginx或者使用docker跑nginx集群,keepalived是比较传统的方式,虽然用docker跑nginx集群更方便,

  • 本文向大家介绍阿里云服务器ubuntu 配置教程,包括了阿里云服务器ubuntu 配置教程的使用技巧和注意事项,需要的朋友参考一下 由于阿里云的导入自定义 ubuntu 镜像需要开通 OSS 快照是收费的(看着感觉不贵,但是也很麻烦),而且自己已配置好的镜像想导入需要转换格式,还存在不能使用的情况,所以麻烦点直接在阿里云原来的ubuntu里直接配置需要用到的内容。 首先,阿里云服务器ubuntu默