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

Lösung zum automatischen Stoppen des MySQL-Dienstes

Dieser Artikel stellt hauptsächlich die Lösung fü...

Vue realisiert den Produktlupeneffekt

In diesem Artikelbeispiel wird der spezifische Co...

So implementieren Sie den Dienststatus zur Nginx-Konfigurationserkennung

1. Überprüfen Sie, ob das Modul „Status prüfen“ i...

Gründe und Methoden zum Warten auf die Sperre der Tabellenmetadaten in MySQL

Wenn MySQL DDL-Operationen wie „Alter Table“ ausf...

Linux-Grundlagen-Tutorial: Sonderberechtigungen SUID, SGID und SBIT

Vorwort Für Datei- oder Verzeichnisberechtigungen...

Zeitleistenimplementierungsmethode basierend auf ccs3

In Webprojekten nutzen wir häufig die Zeitleisten...

Antworten auf mehrere häufig gestellte MySQL-Interviewfragen

Vorwort: Bei Vorstellungsgesprächen für verschied...

Warum MySQL die Verwendung von Nullspalten mit Standardwerten nicht empfiehlt

Die Antwort, die Sie oft hören, ist, dass die Ver...

Warum Nginx besser ist als Apache

Nginx hat in nur wenigen Jahren den Großteil des ...

Analyse des Unterschieds zwischen fettgedrucktem <b> und <strong>

Wir alle Webmaster wissen, dass es bei der Optimi...

MySQL 5.7.18 Installations-Tutorial unter Windows

In diesem Artikel wird erklärt, wie Sie MySQL aus...

Schritte zum Installieren einer RocketMQ-Instanz unter Linux

1. JDK installieren 1.1 Überprüfen Sie, ob die ak...