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

H-Tags sollten bei der Erstellung von Webseiten sinnvoll verwendet werden

HTML-Tags haben spezielle Tags zur Handhabung des ...

Grafisches Tutorial zur Installation und Konfiguration von CenOS6.7 mysql 8.0.22

CenOS6.7 installiert MySQL8.0.22 (empfohlene Samm...

Snake-Spiel mit nativem JS schreiben

In diesem Artikel wird der spezifische Code zum S...

Zabbix überwacht die Konfiguration der Docker-Anwendung

Der Einsatz von Containern kommt immer häufiger v...

Detaillierte Beispiele für Docker-Compose-Netzwerke

Ich habe heute mit den Netzwerkeinstellungen unte...

Tutorial zur manuellen Installation von MySQL 8.0.13

In diesem Artikel finden Sie das Tutorial zur man...

Umfassende Erklärung zum CocosCreator Hot Update

Inhaltsverzeichnis Vorwort Was ist Hot Change Coc...

Detaillierte Erläuterung des Zahlungsfunktionscodes des Vue-Projekts

1. Alipay-Methode: Alipay-Methode: Klicken Sie zu...

Programme zum Abfragen und Löschen der Portnutzung im Windows-Betriebssystem

Im Windows-Betriebssystem das Programm zum Abfrag...

Native js implementiert Warenkorb-Logik und -Funktionen

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Schritte zum Ausführen eines Springboot-Projekts in Linux Docker

Einführung: Die Konfiguration von Docker, auf dem...

Bootstrap3.0-Studiennotizentabelle bezogen auf

In diesem Artikel werden hauptsächlich Tabellen e...