아 리 클 라 우 드 서버 수 동 으로 mysql 쌍 기 열 비 를 실현 하 는 두 가지 방식

개념
1.열 백업 과 백업 의 차이
핫 백업 이란 High Available(HA)즉 고가 용 을 가리 키 며 백업 은 Backup,데이터 백업 의 일종 을 가리킨다.이것 은 두 가지 서로 다른 개념 이 고 대응 하 는 제품 도 두 가지 기능 적 으로 완전히 다른 제품 이다.열 백업 은 주로 업무 의 연속 성 을 보장 하고 실현 하 는 방법 은 고장 점 의 이전 이다.백업 의 주요 목적 은 데이터 손실 을 방지 하기 위해 복사 한 것 이기 때문에 백업 은 데이터 복구 가 응용의 고장 전이 가 아니 라 데이터 복 구 를 강조 한다.
2.쌍 기 열 비 는 무엇 입 니까? 
이중 열 비 는 넓 은 의미 에서 볼 때 중요 한 서비스 에 대해 두 대의 서버 를 사용 하여 서로 백업 하고 같은 서 비 스 를 공동으로 집행 하 는 것 이다.한 서버 가 고장 이 났 을 때 다른 서버 가 서비스 임 무 를 맡 을 수 있어 인공 적 인 관여 가 필요 없 는 상황 에서 시스템 이 지속 적 으로 서 비 스 를 제공 할 수 있 도록 자동 으로 보장 한다.
협의 적 으로 볼 때 쌍 기 열 비 는 서로 백업 하 는 두 서버 를 사용 하여 같은 서 비 스 를 공동으로 수행 하 는 것 이다.그 중에서 한 호스트 는 작업 기(Primary Server)이 고 다른 호스트 는 백업 호스트(Standby Server)이다.시스템 의 정상 적 인 상황 에서 작업 기 는 응용 시스템 에 서 비 스 를 제공 하고 백업 기 는 작업 기의 운행 상황 을 감시 합 니 다(일반적으로 심장 박동 진단 을 통 해 작업 기 는 백업 기 가 정상 적 인지 검사 합 니 다).작업 기 에 이상 이 생 겨 응용 시스템 운영 을 지원 하지 못 할 때 백업 기 는 작업 기 를 주동 적 으로 관리 하고 관건 적 인 응용 서 비 스 를 계속 지원 합 니 다.시스템 의 끊 임 없 는 운행 을 보증 하 다.듀 플 렉 스 열 비 는 IT 핵심 서버,저장 소,네트워크 경로 교환 고장 에 대한 높 은 가용성 솔 루 션 을 겨냥 하고 있다.
자,다음은 아 리 클 라 우 드 서버 가 my sql 쌍 기 열 비 를 실현 하 는 것 을 소개 합 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
아 리 클 라 우 드 서버 는 keepalive 가상 ip 을 지원 하지 않 기 때문에 keepalive 를 통 해 my sql 의 이중 열 비 를 실현 할 수 없습니다.우리 가 있 는 이곳 에서 아 리 운 의 쌍 기 열 비 를 실현 하려 면 두 가지 방식 이 있다.
1.아 리 클 라 우 드 의 클 라 우 드 데이터베이스 고급 버 전 을 구 매 하여 라 이브 러 리 에서 메 인 라 이브 러 리 고장 에서 라 이브 러 리 로 자동 으로 전환 합 니 다.
2.여 기 는 주로 두 번 째 방식 을 말 합 니 다.두 대의 아 리 클 라 우 드 서버 는 각각 my sql 을 배치 하여 my sql 의 메 인 동기 화 를 실현 합 니 다.여기 서 my sql 의 주 동기 화 를 다시 말 하지 않 아 도 됩 니 다.여러분 은 스스로 바 이 두 를 할 수 있 습 니 다.필요 한 것 이 있 으 면 나중에 글 이 나 올 수 있 습 니 다.현재 my sql 메 인 동기 화 를 실현 했다 고 가정 하면 어떻게 처리 합 니까?
springboot 을 사용 하기 때문에 yml 파일 을 처리 하고 여러 사람 에 게 메 일 을 보 내야 합 니 다.여기 호스트 가 달 리 는 정시 작업,준비 장치 가 필요 하 다 면 그 에 맞 게 달 릴 수 있 습 니 다.
저 는 docker 를 사용 하여 배 치 된 my sql 이기 때문에 사용 한 것 입 니 다docker psmy sql 의 상 태 를 살 펴 보고 일반 배 치 된 것 이 ps 를 사용 하거나 my sql 에 직접 로그 인하 여 성공 적 으로 판단 할 수 있 습 니 다.

# 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()
총결산
위 에서 말 한 것 은 소 편 이 소개 한 아 리 클 라 우 드 서버 가 수 동 으로 my sql 쌍 기 열 비 를 실현 하 는 두 가지 방식 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!

좋은 웹페이지 즐겨찾기