Einführung in die MySQL-Datenbank: Detaillierte Erläuterung des Datenbanksicherungsvorgangs

Einführung in die MySQL-Datenbank: Detaillierte Erläuterung des Datenbanksicherungsvorgangs

Dieser Artikel erläutert anhand eines Beispiels die Vorgehensweise zum Sichern der Datenbank in der MySQL-Datenbank. Teilen Sie uns die Einzelheiten zu Ihrer Information mit:

Fortsetzung vom letzten Mal: ​​Erste Schritte mit der MySQL-Datenbank-Multiinstanzkonfiguration

Wenn es um Daten geht, sind alle sehr nervös. Es gibt viele Arten von Daten, aber im Allgemeinen sind Daten sehr wichtig. Daher ist die tägliche Datensicherungsarbeit zum Schwerpunkt der Betriebs- und Wartungsarbeiten geworden.

Schauen wir uns zunächst die Daten in der Datenbank an

mysql> wähle * aus Test;
+-----+------+
| Ich würde | Name |
+-----+------+
| 1 | 1 |
| 11 | Text |
| 21 | abc |
| 9 | bcd |
| 111 | 1 |
| 441 | Text |
| 41 | abc |
| 999 | bcd |
+-----+------+
8 Zeilen im Satz (0,00 Sek.)

1. Einzelne Datenbanksicherung

[root@centos6 ~]# mysqldump -uroot -p test >/download/testbak_$(date +%F).sql
Passwort eingeben: 

[root@centos6 ~]# ll /download/
insgesamt 2
-rw-r--r--. 1 root root 1888 Dez 12 20:34 testbak_2016-12-12.sql

Schauen wir uns an, was diese Sicherungsdatei enthält.

[root@centos6 ~]# egrep -v "^--|\*|^$" 

/download/testbak_2016-12-12.sql

Tabelle löschen, wenn `test` existiert;

CREATE TABLE `test` (

 `id` int(4) NICHT NULL,

 `name` char(20) NICHT NULL

)ENGINE=MyISAM STANDARD-CHARSET=latin1;

SPERRTABEN `test` SCHREIBEN;

EINFÜGEN IN `test` WERTE (1,'1'),(11,'text'),(21,'abc'),(9,'bcd'),(111,'1'),(441,'text'),(41,'abc'),(999,'bcd');

TABELLEN ENTSPERREN;

Aus dem obigen Dateiinhalt können wir erkennen, dass der eigentliche Vorgang dieser Sicherung darin besteht, die SQL-Anweisungen zum Erstellen von Datenbanken, Erstellen von Tabellen und Einfügen von Daten zu sichern. Man kann auch sagen, dass die SQL-Anweisungen exportiert werden.

Parameter -B

[root@centos6 ~]# mysqldump -uroot -p -B test >/download/testbak_$(date +%F)_b.sql

Passwort eingeben: 

[root@centos6 ~]# egrep -v "^--|^$" /download/testbak_2016-12-12_b.sql  

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

/*!40101 NAMEN FESTLEGEN utf8 */;

/*!40103 SETZEN @OLD_TIME_ZONE=@@TIME_ZONE */;

/*!40103 SETZE ZEITZONE='+00:00' */;

/*!40014 SETZEN @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;

/*!40014 SETZEN @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

DATENBANK ERSTELLEN /*!32312 WENN NICHT VORHANDEN*/ `test` /*!40100 STANDARDZEICHENSATZ latin1 */;

VERWENDEN Sie „Test“.

Tabelle löschen, wenn `test` existiert;

/*!40101 SET @saved_cs_client = @@character_set_client */;

/*!40101 SET Zeichensatzclient = utf8 */;

CREATE TABLE `test` (

 `id` int(4) NICHT NULL,

 `name` char(20) NICHT NULL

)ENGINE=MyISAM STANDARD-CHARSET=latin1;

/*!40101 SET Zeichensatzclient = @saved_cs_client */;

SPERRTABEN `test` SCHREIBEN;

/*!40000 ALTER TABLE `test` KEYS DISABLE */;

EINFÜGEN IN `test` WERTE (1,'1'),(11,'text'),(21,'abc'),(9,'bcd'),(111,'1'),(441,'text'),(41,'abc'),(999,'bcd');

/*!40000 ALTER TABLE `test` SCHLÜSSEL AKTIVIEREN */;

TABELLEN ENTSPERREN;

/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;

/*!40014 SETZEN SIE FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;

/*!40014 SETZEN SIE UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;

/*!40101 SET CHARACTER_SET_CLIENT=@ALTER_CHARACTER_SET_CLIENT */;

/*!40101 SET CHARACTER_SET_RESULTS=@ALTE_CHARACTER_SET_RESULTS */;

/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

Die Funktion des Parameters -B ist auf den ersten Blick klar. Wenn unsere Datenbank verloren geht, können wir diese Sicherungsdatei direkt verwenden, um sie wiederherzustellen, ohne die Datenbank und die Tabelle neu erstellen und dann Datenwiederherstellungsvorgänge durchführen zu müssen.

2. Komprimiertes Backup

Manchmal sind die Datenbankdaten groß und müssen für die Sicherung komprimiert werden, um Sicherungszeit und Speicherplatz zu sparen.

[root@centos6 ~]# mysqldump -uroot -p -B test|gzip >/download/testbak_$(date +%F).sql.gz
Passwort eingeben: 

[root@centos6 ~]# ll /download/testbak_2016-12-12.sql.gz
-rw-r--r--. 1 root root 753 12. Dez. 20:49 /download/testbak_2016-12-12.sql.gz

[root@centos6 ~]# ll /download/
insgesamt 14
-rw-r--r--. 1 root root 2027 Dez 12 20:41 testbak_2016-12-12_b.sql
-rw-r--r--. 1 root root 1888 Dez 12 20:34 testbak_2016-12-12.sql
-rw-r--r--. 1 root root 753 Dez 12 20:49 testbak_2016-12-12.sql.gz

Sie können auch den komprimierten Effekt sehen

3. Multi-Datenbank-Backup

[root@centos6 ~]# mysqldump -uroot -p -B test mysql|gzip >/download/testbak_$(date +%F).sql01.gz
Passwort eingeben: 
-- Warnung: Die Daten der Tabelle mysql.event werden übersprungen. Geben Sie die Option --events explizit an.

[root@centos6 ~]# ll /download/testbak_2016-12-12.sql01.gz 
-rw-r--r--. 1 root root 152696 12. Dezember 20:52 /download/testbak_2016-12-12.sql01.gz

Hier gibt es eine Warnmeldung, die ignoriert werden kann oder bei der Sicherung können Parameter hinzugefügt werden. Die Sicherungsanweisung lautet wie folgt

[root@centos6 ~]# mysqldump -uroot -p -B --events test mysql|gzip >/download/testbak_$(date +%F).sql02.gz
Passwort eingeben: 
[root@centos6 ~]# ll /download/testbak_2016-12-12.sql02.gz                 
-rw-r--r--. 1 root root 152749 Dez 12 20:54 /download/testbak_2016-12-12.sql02.gz

Auf diese Weise wird keine Warnmeldung ausgegeben.

Diese Methode, mehrere Datenbanken zusammen zu sichern, führt jedoch zu Problemen. Wenn nur eine der Datenbanken ein Problem aufweist, ist es schwierig, die einzelne Datenbank wiederherzustellen. Daher wird diese Sicherungsmethode nicht häufig verwendet und entspricht nicht den tatsächlichen Anforderungen. Daher sind beim Sichern mehrerer Datenbanken mehrere Sicherungsvorgänge für einzelne Datenbanken erforderlich.

[root@centos6 ~]# mysqldump -uroot -p -B test|gzip >/download/testbackup_$(date +%F).sql.gz         
Passwort eingeben: 

[root@centos6 ~]# mysqldump -uroot -p -B --events mysql|gzip >/download/mysqlbak_$(date +%F).sql.gz      
Passwort eingeben: 

[root@centos6 ~]# ll /download/
insgesamt 80
-rw-r--r--. 1 root root 152608 Dez 12 20:58 mysqlbak_2016-12-12.sql.gz
-rw-r--r--. 1 root root 754 Dez 12 20:58 testbackup_2016-12-12.sql.gz
-rw-r--r--. 1 root root 2027 Dez 12 20:41 testbak_2016-12-12_b.sql
-rw-r--r--. 1 root root 1888 Dez 12 20:34 testbak_2016-12-12.sql
-rw-r--r--. 1 root root 152696 Dez 12 20:52 testbak_2016-12-12.sql01.gz
-rw-r--r--. 1 root root 152749 Dez 12 20:54 testbak_2016-12-12.sql02.gz
-rw-r--r--. 1 root root 753 Dez 12 20:49 testbak_2016-12-12.sql.gz

4. Einzeltabellensicherung

Der Zweck der Sicherung in separaten Datenbanken besteht darin, die Vorgänge beim Wiederherstellen der Datenbank zu vereinfachen. Dabei besteht jedoch auch das Problem, dass, wenn eine Tabelle in einer Datenbank beschädigt ist, die gesamte Datenbank jedoch nicht wiederhergestellt werden kann. In der tatsächlichen Produktion wird daher häufig die Sicherung separater Datenbanken und Tabellen verwendet. Auf diese Weise werden auch die Daten gesichert und die Vorgänge bei der Wiederherstellung sind einfach.

[root@centos6 ~]# mysqldump -uroot -p -B test test >/download/test_testbak_$(date +%F).sql   

Passwort eingeben: 

[root@centos6 ~]# egrep -v "#|^$|\*" /download/test_testbak_2016-12-12.sql

-- MySQL-Dump 10.13 Distrib 5.5.52, für Linux 2.6 (x86_64)
--
-- Host: localhost Datenbank: test
-- ------------------------------------------------------
--Serverversion 5.5.53-log
--
-- Aktuelle Datenbank: `test`
--
VERWENDEN Sie „Test“.
--
-- Tabellenstruktur für Tabelle „test“
--
Tabelle löschen, wenn `test` existiert;
CREATE TABLE `test` (
 `id` int(4) NICHT NULL,
 `name` char(20) NICHT NULL
)ENGINE=MyISAM STANDARD-CHARSET=latin1;
--
-- Daten für die Tabelle „Test“ ausgeben
--
SPERRTABEN `test` SCHREIBEN;
EINFÜGEN IN `test` WERTE (1,'1'),(11,'text'),(21,'abc'),(9,'bcd'),(111,'1'),(441,'text'),(41,'abc'),(999,'bcd');
TABELLEN ENTSPERREN;
--
-- Aktuelle Datenbank: `test`
--
VERWENDEN Sie „Test“.
--
-- Tabellenstruktur für Tabelle „test“
--
Tabelle löschen, wenn `test` existiert;
CREATE TABLE `test` (
 `id` int(4) NICHT NULL,
 `name` char(20) NICHT NULL
)ENGINE=MyISAM STANDARD-CHARSET=latin1;
--
-- Daten für die Tabelle „Test“ ausgeben
--
SPERRTABEN `test` SCHREIBEN;
EINFÜGEN IN `test` WERTE (1,'1'),(11,'text'),(21,'abc'),(9,'bcd'),(111,'1'),(441,'text'),(41,'abc'),(999,'bcd');
TABELLEN ENTSPERREN;
-- Dump abgeschlossen am 12.12.2016 21:13:16

Daher ist die Sicherung von Shard-Tabellen dasselbe wie die Sicherung von Shard-Bibliotheken. Sie müssen nur mehrere Sicherungsvorgänge für einzelne Tabellen durchführen. Einige Freunde werden jedoch definitiv Fragen stellen. Wenn eine Bibliothek Tausende oder Zehntausende von Tabellen enthält, wie lange dauert es dann, eine solche Sicherung vorzubereiten? ? ? ? Für die Sicherung großer Datenmengen können Sie professionelle Backup-Tools verwenden. Für die Sicherung kleiner Datenmengen oder Tabellen können Sie den Sicherungsvorgang in ein Skript schreiben und in eine geplante Aufgabe einbinden. Sie müssen dann nur noch prüfen, ob die Sicherung erfolgreich war.

Geben Sie ein einfaches Sicherungsskript ausschließlich zu Referenzzwecken in der tatsächlichen Produktionsumgebung frei.

[root@centos6-Skripte]# vi bak.sh 
#!/bin/sh
##########################################
#diese Skripte wurden von root von mingongge erstellt
#erstellt am 11.11.2016
#######################################

ip=`grep 'IPADDR' /etc/sysconfig/network-scripts/ifcfg-eth0|awk -F "=" '{print $2}'`
#Server-IP-Variable BAKDIR=/backup definieren 
#Sicherungspfad definieren [ ! -d $BAKDIR/${ip} ] && mkdir -p $BAKDIR/${ip}
 #Wenn der Pfad nicht existiert, erstellen Sie einen. Dies ist praktisch, wenn viele Server vorhanden sind. DB_PWD="mingongge"
DB_USER="Stamm"
MYSQL="/Anwendung/mysql/bin/mysql"
MYSQL_DUMP="/Anwendung/mysql/bin/mysqldump"
DATA=`Datum +%F`

####Zurück zu den Testdatenbanken####

DB_NAME=`$MYSQL -u$DB_USER -p$DB_PWD -e "Datenbanken anzeigen;"|sed '1,5d'`
 #Datenbankvariable für Namen in $DB_NAME definieren
#For-Schleifenanweisung nimmt den Bibliotheksnamen an
 $MYSQL_DUMP -u$DB_USER -p$DB_PWD -B ${name} |gzip >$BAKDIR/${ip}/${name}_$DATA.sql.gz 
 #Vollständige Datenbanksicherung [ ! -d $BAKDIR/${ip}/${name} ] && mkdir -p $BAKDIR/${ip}/${name}
#Beurteilen Sie diesen Pfad, um zu unterscheiden, welche Datenbank die Sicherungsdatei für den Tabellennamen in `$MYSQL -u$DB_USER -p$DB_PWD -e "Tabellen von ${name} anzeigen;"|sed '1d'` hat.
#For-Schleifenanweisung nimmt Tabellennamen an
  $MYSQL_DUMP -u$DB_USER -p$DB_PWD ${name} ${tablename} |gzip >$BAKDIR/${ip}/${name}/${tablename}_$DATA.sql.gz
#Tabellensicherung abgeschlossen
Erledigt

Die Ergebnisse der Ausführung sind wie folgt

[root@ranzhioa ~]# Baum /Backup/
/Sicherung/
10.1xx.1xx.1xx #Server-IP
 xxxxxxxx #Tatsächlich lautet der Datenbankname cash_balance_2016-12-15.sql.gz
cash_depositor_2016-12-15.sql.gz
cash_trade_2016-12-15.sql.gz
crm_customer_2016-12-15.sql.gz
crm_delivery_2016-12-15.sql.gz
crm_order_2016-12-15.sql.gz
crm_orderAction_2016-12-15.sql.gz
crm_orderField_2016-12-15.sql.gz
crm_plan_2016-12-15.sql.gz

Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen auf dieser Site ansehen: „MySQL-Abfragekenntnisse“, „Zusammenfassung der allgemeinen MySQL-Funktionen“, „MySQL-Protokolloperationskenntnisse“, „Zusammenfassung der MySQL-Transaktionsoperationskenntnisse“, „MySQL-gespeicherte Prozedurkenntnisse“ und „Zusammenfassung der MySQL-Datenbanksperrenkenntnisse“.

Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist.

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Wissenspunkte zur Echtzeitsicherung der MySQL-Datenbank
  • Detaillierte Erläuterung der drei Möglichkeiten zum Sichern von MySQL
  • Mehrere Möglichkeiten zum Sichern einer MySql-Datenbank
  • Zusammenfassung verschiedener Implementierungsmethoden zur Sicherung von MySQL-Datenbanken
  • Ausführliche Erläuterung zum MySQL-Lernen einer Datenbanksicherung

<<:  Verständnis und Anwendungsszenarien von Enumerationstypen in TypeScript

>>:  Das Vue-Projekt realisiert das Zeichnen eines Wasserzeichens in einem bestimmten Bereich

Artikel empfehlen

HTML-Sprachenzyklopädie

123WORDPRESS.COM--HTML超文本标记语言速查手册<!-- --> !D...

Einführung in das Batch-Cache-Löschskript von nginx proxy_cache

Vorwort: Ich habe zuvor den offiziellen Proxy-Cac...

Detaillierte Erläuterung der JavaScript-Closure-Probleme

Closures sind eines der traditionellen Features r...

XHTML-Tutorial für die ersten Schritte: XHTML-Webseiten-Bildanwendung

<br />Das sinnvolle Hinzufügen von Bildern k...

Vue implementiert eine Wettervorhersagefunktion

In diesem Artikel wird der spezifische Code von V...

Bootstrap realisiert den Karusselleffekt

In diesem Artikel wird der spezifische Code von B...

Sieben verschiedene Farbschemata für das Website-Design-Erlebnis

Die Farbabstimmung beim Erstellen einer Website i...

Detaillierte Erklärung zur Verwendung der JavaScript-Zwischenablage

(1) Einleitung: clipboard.js ist ein leichtes Jav...