Detaillierte Erläuterung der Idee, mysqldump + expect + crontab zur Implementierung eines regelmäßigen MySQL-Cold-Backups unter Linux zu verwenden

Detaillierte Erläuterung der Idee, mysqldump + expect + crontab zur Implementierung eines regelmäßigen MySQL-Cold-Backups unter Linux zu verwenden

1. Aufgetretene Probleme

Wir alle wissen, dass wir nach der Verwendung von mysqldump das MySQL-Passwort manuell eingeben müssen, sodass wir mysqldump nicht direkt in crontab verwenden können, um eine regelmäßige Sicherung durchzuführen. Tatsächlich können wir das Skript expect zur automatischen Eingabe des Kennworts verwenden und so eine wirklich regelmäßige Sicherung durchführen. Wenn Sie nicht wissen, was expect ist, empfehle ich Ihnen, zuerst diesen Artikel zu lesen: https://www.jb51.net/article/197865.htm

2. Ideen

  1. Erstellen Sie eine Utils-Datei zum Speichern von Shell-Skripten, einschließlich mysqldump, scp und anderen Befehlen
  2. Verwenden Sie das Skript expect, um das Skript in utils auszuführen und das Passwort dafür automatisch einzugeben
  3. Führen Sie abschließend expect über das Treiberskript aus und übergeben Sie die erforderlichen Parameter an das Skript.

Die Idee ist folgende:

Bildbeschreibung hier einfügen

3. Code

3.1. Kaltes Backup einer einzelnen Maschine

(1) mysqldump-Shell-Skript
Backup.sh:

#!/bin/bash

mysql_benutzername=$1
Backup-Datenbanken = $2
Backup-Pfad = $3

mysqldump -u ${mysql_username} -p --databases ${backup_databases} > ${backup_path}

(2) Die Ausführung des expect-Skripts von mysqldump kann uns helfen, den MySQL-Code automatisch einzugeben
single_cold_backup_service.exp:

#!/usr/bin/expect

Zeitüberschreitung 5 festlegen

#Lokale Informationen festlegen mysql_username [lindex $argv 0] 
setze Backup_Database [lindex $argv 1] 
setze Backup-Pfad [lindex $argv 2] 

#utils-Pfad festlegen utils_path /home/hadoop/backup_script/utils

Erzeuge Bash ${utils_path}/backup.sh ${mysql_username} ${backup_database} ${backup_path}


erwarten {
	"*assword*" {send "nimabidecao1\r"} #Passwort eingeben}
Erwarte EOF

(3) Führen Sie das Skript aus und führen Sie expect aus. Dort können Sie die erforderlichen Parameter übergeben.
single_cold_backup_service_driver.sh:

#!/bin/bash

#Die Daten hier können als mysql_username=root geschrieben werden
Backup_Databases=Schule
Backup-Pfad = $HOME/Backup-Daten/${Backup-Datenbanken}.sql

#Führen Sie das Expect-Skript aus expect $HOME/backup_script/single_cold_backup/single_cold_backup_service.exp ${mysql_username} ${backup_databases} ${backup_path}

Sie müssen hier genau auf Ihren Pfad achten. Es wird dringend empfohlen, einen absoluten Pfad zur Ausführung zu verwenden

(4) Verwenden Sie crontab, um das Treiberskript regelmäßig auszuführen, und rufen Sie den Crontab-Editor auf: crontab -e
Geben Sie Folgendes ein:

0 9 * * 1 bash /home/hadoop/backup_script/single_cold_backup/single_cold_backup_driver.sh

Das bedeutet: Führe jeden Montag um 9:00 Uhr ein Backup durch. Wenn du die gewünschte Uhrzeit bestätigen möchtest, kannst du auf diese Website gehen: https://crontab-generator.org/ und die gewünschte Uhrzeit auswählen.


3.2. Kaltes Backup auf zwei Maschinen

(1) Remote-Dateien kopieren, um die MySQL-Sicherungsdateien auf den lokalen Computer zu kopieren
scp.sh:

#!/bin/bash

lokaler_Sicherungspfad=$1
ein anderer_Benutzer=$2
eine andere_IP=$3
ein anderer_Sicherungspfad=$4

scp ${local_backup_path} ${ein anderer_Benutzer}@${eine andere_IP}:${ein anderer_backup_path}

(2) Die Ausführung des expect-Skripts von mysqldump kann uns helfen, den MySQL-Code automatisch einzugeben
double_cold_backup_service.exp:

#!/usr/bin/expect

Zeitüberschreitung 5 festlegen

#Host-Informationen setzen mysql_username [lindex $argv 0] 
setze Backup_Database [lindex $argv 1] 
setze Backup-Pfad [lindex $argv 2] 

#Slave-Informationssatz slave_user [lindex $argv 3]
setze Slave-IP [lindex $argv 4]
setze slave_backup_path [lindex $argv 5]

#utils-Pfad festlegen utils_path /home/hadoop/backup_script/utils


Erzeuge Bash ${utils_path}/backup.sh ${mysql_username} ${backup_database} ${backup_path}

erwarten {
	"*assword*" {send "nimabidecao1\r"} #Passwort eingeben}

Bash erzeugen ${utils_path}/scp.sh ${backup_path} ${slave_user} ${slave_ip} ${slave_backup_path}

erwarten {
  "*assword*" {send "nimabidecao1\r"} #Passwort eingeben}

Erwarte EOF

(3) Führen Sie das Skript aus und führen Sie expect aus. Dort können Sie die erforderlichen Parameter übergeben.
double_cold_backup_service_driver.sh:

#!/bin/bash

#Lokale Computerinformationen mysql_username=root
Backup_Databases=Schule
Backup-Pfad = $HOME/Backup-Daten/${Backup-Datenbanken}.sql

#Slave-Informationen slave_user=meizhaowei
slave_ip=172.20.10.14
slave_backup_path=Sicherungsdaten/doule_cold_backup_data/${Backup_Databases}.sql


#Ausführen, absoluten Pfad schreiben, voraussichtlich $HOME/backup_script/double_cold_backup/double_cold_backup_service.exp ${mysql_username} ${backup_databases} ${backup_path} ${slave_user} ${slave_ip} ${slave_backup_path}

(4) Verwenden Sie crontab, um das Treiberskript regelmäßig auszuführen

0 9 * * 1 bash /home/hadoop/backup_script/double_cold_backup/double_cold_backup_driver.sh

Das heißt: Führen Sie jede Woche um 9 Uhr ein Backup durch

Dies ist das Ende dieses Artikels über die Verwendung von mysqldump+expect+crontab in Linux zur Implementierung eines regelmäßigen MySQL-Kaltbackups. Weitere Informationen zum regelmäßigen MySQL-Kaltbackup finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • MySQL-Lösung für zeitgesteuerte Backups (mithilfe von Linux crontab)
  • Analyse der Gründe, warum der mit Linux 6.7 gelieferte crontab-Befehl mysql-libs * nach der Deinstallation nicht verwendet werden kann
  • MySQL-geplante Sicherung mit Crontab-geplantem Sicherungsbeispiel unter Linux
  • So verwenden Sie crontab, um MySQL-Datenbanken regelmäßig im Linux-System zu sichern

<<:  Das Vue-Projekt realisiert Anmelde- und Registrierungseffekte

>>:  Detaillierte Erläuterung der Verwendung von Docker Commit

Artikel empfehlen

Theorie: Die zwei Jahre User Experience

<br />Es ist nicht länger als zwei Jahre her...

So stellen Sie über Navicat eine Remoteverbindung zu MySQL her

Wenn Sie Navicat direkt für die Verbindung über I...

Eingebettetes Transplantations-Docker-Fehlerproblem (Zusammenfassung)

Nach einer langen Zeit der Transplantation und In...

So implementieren Sie Vue Page Jump

1. dies.$router.push() 1. Ansicht <Vorlage>...

Umfassendes Verständnis von Zeilenhöhe und vertikaler Ausrichtung

Vorherige Wörter Zeilenhöhe, Schriftgröße und vert...

Eine gründliche Analyse der HTML-Sonderzeichen

Eine gründliche Analyse von HTML (14) Sonderzeich...

Detaillierter Prozess zur Implementierung des 2048-Minispiels im WeChat-Applet

Rendern Beispielcode Heute werden wir das WeChat-...

Detaillierte Analyse von MySQL-Ausführungsplänen

Vorwort Als wir im vorherigen Interviewprozess na...

So verwenden Sie Axios-Anfragen im Vue-Projekt

Inhaltsverzeichnis 1. Installation 2. Es gibt kei...

Implementierung der Bereitstellung des Nginx+ModSecurity-Sicherheitsmoduls

Inhaltsverzeichnis 1. Herunterladen 2. Bereitstel...