Heim  >  Artikel  >  Datenbank  >  Ausführliche Erläuterung der Sicherung und Wiederherstellung von MySQL-Daten

Ausführliche Erläuterung der Sicherung und Wiederherstellung von MySQL-Daten

迷茫
迷茫Original
2017-03-26 13:31:421121Durchsuche

Dieser Artikel verwendet MySQL5.5 Centos6.5 64-Bit (ich verwende RPM, um MySQL zu installieren, und das Datenbankinstallationsverzeichnis ist das Standardverzeichnis)

1 Sicherungsvorkehrungen

Lesesperrenproblem: Sobald die Datenbank (oder eine bestimmte Tabelle) einen Lesesperrvorgang durchführt, wirkt sich dies auf den Schreibvorgang der Datenbank aus, sodass nicht in die Datenbank geschrieben werden kann diesmal. Der Grund, warum der Lesesperrvorgang während der Datensicherung durchgeführt wird, besteht darin, die Integrität und Konsistenz der Sicherungsdaten sicherzustellen, und sie werden nach Abschluss der Datensicherung automatisch entsperrt.

Problem beim Aktualisieren des Protokolls: Bei jeder Datensicherung wird eine neue Protokolldatei generiert. Auf diese Weise werden die Daten in dieser Zeit plötzlich abstürzen, wenn die Datenbank abstürzt Der Zeitraum kann über das Bin-Log-Protokoll wiederhergestellt werden. Schritte zur Datenwiederherstellung: Wiederherstellen der gesicherten Daten + Wiederherstellen der Daten im neuesten Bin-Log-Protokoll

2. Verwenden Sie mysqldump für die Buchsicherung

mysqldump: Befehl zum Sichern der Daten in der Datenbank in einer Textdatei. Die Struktur der Tabelle und die Daten in der Tabelle werden in der generierten Textdatei gespeichert.

So funktioniert der mysqldump-Befehl: Er ermittelt zunächst die Struktur der Tabelle, die gesichert werden muss, und generiert dann eine CREATE-Anweisung in der Textdatei. Konvertieren Sie dann alle Datensätze in der Tabelle in eine INSERT-Anweisung. Mithilfe dieser Anweisungen können Sie dann Tabellen erstellen und Daten einfügen.

Sichern Sie die Testdatenbank im Verzeichnis /tmp/mysql_back/

 [root@localhost tmp]# mysqldump -uroot -p111111 test -l -F > '/tmp/mysql_back/test.sql';

Parameterinterpretation:

1. mysqldump MySQL-Datensicherungsbefehl

2. -uroot -p111111 Benutzername und Passwort

3. Test: Zu sichernder Datenbankname

4. -l: Lesesperrensteuerung

5. -F: Erzeugen Sie eine neue Protokolldatei

Nachdem Sie diese Anweisung ausgeführt haben, werden Sie feststellen, dass ein neues Bin-Log-Protokoll mysql-bin.000002

6. /tmp/mysql_back/test.sql: Der Speicherort und der Name der generierten Sicherungsdatei

3. Datenwiederherstellung

1 . Wiederherstellung der Sicherungsdaten:

 [root@localhost tmp]# mysql -uroot -p111111 test -v -f</tmp/mysql_back/test.sql
-v: Zeigen Sie die detaillierten Informationen des Imports an

-f: Wenn während des Importvorgangs ein Fehler auftritt, können Sie ihn überspringen und mit der Ausführung fortfahren die folgenden Aussagen.

2. Stellen Sie die Daten im bin-log-Protokoll wieder her:

Alle Datensätze im mysql-bin.000002-Protokoll unter /var/lib/mysql

[ root@ localhost mysql]# mysqlbinlog --no-defaults mysql-bin.000002 |mysql -uroot -p111111 test;

3. Stellen Sie die Daten am angegebenen Speicherort im Bin-Log-Protokoll wieder her

Bestandene Positionswiederherstellungsdaten

BEGIN
/*!*/;
# at 175
#170206 22:55:48 server id 1  end_log_pos 263     Query    thread_id=17    exec_time=0    error_code=0
use `test`/*!*/;
SET TIMESTAMP=1486392948/*!*/;
insert into t1 values(10)
/*!*/;
# at 263
#170206 22:55:48 server id 1  end_log_pos 290     Xid = 178
COMMIT/*!*/;
# at 290
#170206 22:55:54 server id 1  end_log_pos 358     Query    thread_id=17    exec_time=0    error_code=0
SET TIMESTAMP=1486392954/*!*/;
BEGIN
/*!*/;
# at 358
#170206 22:55:54 server id 1  end_log_pos 446     Query    thread_id=17    exec_time=0    error_code=0
SET TIMESTAMP=1486392954/*!*/;
insert into t1 values(12)
/*!*/;
# at 446
#170206 22:55:54 server id 1  end_log_pos 473     Xid = 179
COMMIT/*!*/;
# at 473
#170206 22:56:42 server id 1  end_log_pos 547     Query    thread_id=17    exec_time=0    error_code=0
SET TIMESTAMP=1486393002/*!*/;
truncate t1
Stellen Sie die Daten im Bin-Log-Protokoll an Position 172, 473 (end_log_pos) wieder her

[root@localhost mysql]# mysqlbinlog --no- defaults mysql-bin.000002 --start-position="175" --stop-position="473"|mysql -uroot -p111111 test;

4. Stellen Sie den angegebenen Zeitraum im Bin-Log-Protokoll wieder her Datenformat

: Ersetzen Sie 3

--start-position="175" durch --start-date="2016-12-30 21:30:34"

--stop-position="473" wird ersetzt durch --stop-date="2016-12-30 23:30:34"

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Sicherung und Wiederherstellung von MySQL-Daten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn