Zwei Möglichkeiten zur manuellen Implementierung des MySQL-Hot-Standby mit zwei Maschinen auf dem Alibaba Cloud Server

Zwei Möglichkeiten zur manuellen Implementierung des MySQL-Hot-Standby mit zwei Maschinen auf dem Alibaba Cloud Server

1. Konzept

1. Der Unterschied zwischen Hot Backup und Backup

Hot Backup steht für: High Available (HA), während Backup sich auf Backup bezieht, eine Art der Datensicherung. Dabei handelt es sich um zwei unterschiedliche Konzepte und auch die dazugehörigen Produkte sind hinsichtlich ihrer Funktionen zwei völlig unterschiedliche Produkte. Hot Backup stellt in erster Linie die Geschäftskontinuität sicher und die Implementierungsmethode besteht in der Übertragung des Fehlerpunkts. Der Hauptzweck einer Datensicherung besteht darin, durch die Erstellung einer Kopie einen Datenverlust zu verhindern. Daher liegt beim Backup der Schwerpunkt eher auf der Datenwiederherstellung als auf einem Anwendungsfailover.

2. Was ist Hot-Standby?

Im weiteren Sinne bedeutet Hot-Standby, dass sich zwei Server gegenseitig sichern und für wichtige Dienste gemeinsam den gleichen Dienst ausführen. Bei einem Serverausfall kann ein anderer Server die Serviceaufgabe übernehmen und so automatisch sicherstellen, dass das System seine Dienste weiterhin bereitstellen kann, ohne dass ein menschliches Eingreifen erforderlich ist.

Im engeren Sinne ist Hot-Standby die Verwendung von zwei Servern, die sich gegenseitig sichern und gemeinsam denselben Dienst ausführen, wobei einer der Arbeitsserver (Primärserver) und der andere der Sicherungsserver (Standbyserver) ist. Wenn das System normal läuft, stellt die Arbeitsmaschine Dienste für das Anwendungssystem bereit, und die Backup-Maschine überwacht den Betrieb der Arbeitsmaschine (normalerweise durch Heartbeat-Diagnose, und die Arbeitsmaschine erkennt auch, ob die Backup-Maschine normal läuft). Wenn die Arbeitsmaschine abnormal wird und den Betrieb des Anwendungssystems nicht unterstützen kann, übernimmt die Backup-Maschine aktiv die Arbeit der Arbeitsmaschine und unterstützt weiterhin wichtige Anwendungsdienste, um einen unterbrechungsfreien Betrieb des Systems sicherzustellen. Hot-Standby ist eine Hochverfügbarkeitslösung für Ausfälle von IT-Kernservern, Speichern und Netzwerk-Routing-Switches.

OK, lassen Sie mich vorstellen, wie MySQL Dual-Machine Hot Standby auf Alibaba Cloud Server implementiert wird. Die Details sind wie folgt:

Da der Alibaba Cloud Server keine Keepalive-virtuelle IP unterstützt, ist es unmöglich, MySQL Dual-Machine-Hot-Standby über Keepalive zu implementieren. Es gibt zwei Möglichkeiten, den Dual-Machine-Hot-Standby von Alibaba Cloud zu implementieren:

1. Kaufen Sie die erweiterte Version der Cloud-Datenbank von Alibaba Cloud, die mit einer Slave-Datenbank geliefert wird. Wenn die Master-Datenbank ausfällt, wird automatisch auf die Slave-Datenbank umgeschaltet.

2Hier sprechen wir hauptsächlich über die zweite Methode, bei der MySQL jeweils auf zwei Alibaba Cloud-Servern bereitgestellt wird, um eine Master-Master-Synchronisierung von MySQL zu erreichen. Ich werde mich hier nicht auf die MySQL-Master-Master-Synchronisation konzentrieren. Sie können selbst auf Baidu danach suchen. Wenn Sie es brauchen, schreibe ich vielleicht später einen Artikel. Angenommen, die MySQL-Master-Master-Synchronisierung wurde implementiert. Wie geht man damit um?

Da Springboot verwendet wird, müssen Sie die YML-Datei verarbeiten und dann eine E-Mail an mehrere Personen senden. Hier führt der Host die geplante Aufgabe aus, und die Sicherungsmaschine kann sie bei Bedarf auch entsprechend ausführen.

Da ich MySQL über Docker bereitgestellt habe, habe ich docker ps verwendet, um den Status von MySQL zu überprüfen. Wenn es sich um eine normale Bereitstellung handelt, können Sie PS verwenden oder sich direkt bei MySQL anmelden, um zu sehen, ob es erfolgreich war.

# Kodierung: utf8
Unterprozess importieren
von email.mime.text importiere MIMEText
smtplib importieren
Betriebssystem importieren
#Da hier Java Springboot verwendet wird, müssen Sie beim Wechsel zum Standby-Computer einige YML-Dateien ändern YML_PATH = ''
NEW_YML = ''
msg_from = '' # E-Mail-Adresse des Absenders passwd = '' # Geben Sie den Autorisierungscode der E-Mail-Adresse des Absenders ein msg_to = []
def check_mysql():
 res = Unterprozess.Popen('docker ps |grep mysql', stdout=Unterprozess.PIPE, stderr=Unterprozess.PIPE, shell=True)
 stdout, stderr = res.communicate()
 wenn stdout:
  res_status = Unterprozess.Popen("docker ps |grep mysql| awk '{print $7}'", stdout=Unterprozess.PIPE,
          stderr=Unterprozess.PIPE, Shell=True)
  aus, err = res_status.communicate()
  wenn out.strip() == "Nach oben":
   drucken 'mysql ist ok'
  anders:
   Drucken Sie „MySQL ist defekt. Wechseln Sie zur Standby-Maschine“.
   Flagge = judge_mysql_string()
   if-Flag:
    print 'Bereits mit der Backup-Maschine verbunden, kein Wechsel nötig'
   anders:
    switch_mysql()
 anders:
  Drucken Sie „MySQL ist defekt. Wechseln Sie zur Standby-Maschine“.
  Flagge = judge_mysql_string()
  if-Flag:
   print 'Bereits mit der Backup-Maschine verbunden, kein Wechsel nötig'
  anders:
   switch_mysql()
def switch_mysql():
 drucken '---yml kopieren----'
 Unterprozess.Aufruf('cp {} {}'.format(NEW_YML, YML_PATH), shell=True)
 subprocess.call('Docker startet Tomcat neu', Shell=True)
 Betreff = „MySQL-Hostfehler“
 info = 'MySQL-Hostfehler, wurde auf die Backup-Maschine umgeschaltet, bitte überprüfen Sie das Hostproblem und beheben Sie es rechtzeitig, wenn Sie zurückschalten müssen,' \
 Inhalt = '<html><meta charset="UTF-8"><body><p style="color: red">{}</p> </body></html>'.Format(Info)
 send_email(Betreff, Inhalt)
 drucken '----Endschalter---'
def send_email(Betreff, Inhalt):
 msg = MIMEText(Inhalt, 'html', 'utf-8')
 msg['Betreff'] = Betreff
 msg['Von'] = msg_von
 msg['An'] = ','.join(msg_an)
 versuchen:
  s = smtplib.SMTP_SSL("smtp.qq.com", 465)
  s.login(msg_from, passwd)
  s.sendmail(msg_from, msg_to, msg.als_string())
 außer Ausnahme als e:
  drucken
 Endlich:
  s.beenden()
def judge_mysql_string():
 mit open(os.path.join(YML_PATH, 'application.yml'),'r') als f:
  res = f.lesen()
  wenn „Ihre IP“ in res:
   returniere True
  anders:
   returniere False
mysql()

Zusammenfassen

Oben sind zwei Möglichkeiten, MySQL Dual-Machine Hot Standby auf Alibaba Cloud Server manuell zu implementieren. Ich hoffe, es wird Ihnen helfen. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!
Wenn Sie diesen Artikel hilfreich finden, können Sie ihn gerne abdrucken und dabei bitte die Quelle angeben. Vielen Dank!

Das könnte Sie auch interessieren:
  • Zwei Möglichkeiten zur manuellen Implementierung des MySQL-Hot-Standby mit zwei Maschinen auf dem Alibaba Cloud Server
  • Der Alibaba Cloud ECS-Cloud-Server (Linux-System) kann nach der Installation von MySQL keine Remoteverbindung herstellen (Falle)
  • Alibaba Cloud ESC Server Docker-Bereitstellung von Single Node Mysql
  • So rufen Sie das Kennwort von Alibaba Cloud Server MySQL ab
  • Verwenden Sie Navicate, um eine Verbindung zu MySQL auf dem Alibaba Cloud Server herzustellen
  • Analyse der Schwierigkeiten im Hot-Standby der MySQL-Datenbank
  • Konfigurationsmethode für den Hot-Standby-Betrieb mit MySQL-Datenbank auf zwei Maschinen
  • Implementierungsschritte für MySQL-Hot-Backup auf zwei Maschinen

<<:  Notieren Sie einen Fehlerbehebungsbericht für die hohe CPU-Auslastung des Tomcat-Prozesses

>>:  Eine kurze Erläuterung der Rolle und Funktionsweise von Schlüsseln in Vue3

Artikel empfehlen

Vue implementiert die Anmeldung mit grafischem Bestätigungscode

In diesem Artikelbeispiel wird der spezifische Co...

PNG-Alpha-Transparenz in IE6 (vollständige Sammlung)

Viele Leute sagen, dass IE6 PNG-Transparenz nicht...

Tutorial zum Herunterladen und Installieren von MySQL 8.0.12 WinX64

MySQL 8.0.12 Download- und Installations-Tutorial...

Apache Calcite-Code zur Dialektkonvertierung

Definition Calcite kann SQL vereinheitlichen, ind...

Der Unterschied zwischen ${param} und #{param} in MySQL

Der von ${param} übergebene Parameter wird als Te...

Zusammenfassung mehrerer APIs oder Tipps in HTML5, die Sie nicht verpassen sollten

In früheren Blogbeiträgen habe ich mich auf einige...

Zehn Erfahrungen im Webdesign im Jahr 2008

<br />Das Internet verändert sich ständig un...

Tipps zum Implementieren mehrerer Rahmen in CSS

1. Mehrere Grenzen[1] Hintergrund: Box-Shadow, Um...

So erstellen Sie ein neues Image basierend auf einem vorhandenen Image in Docker

Das Erstellen neuer Images aus vorhandenen Images...

MySQL-Leistungsoptimierungs-Index-Pushdown

Index Condition Pushdown (ICP) wird in MySQL 5.6 ...

Web-Theorie: Bringen Sie mich nicht zum Nachdenken über Lesehinweise

Kapitel 1 <br />Das wichtigste Prinzip, um ...

Verwandte Befehle zur vollständigen Deinstallation von Nginx unter Ubuntu 16.04

nginx Übersicht nginx ist ein kostenloser, quello...