Vollständige und inkrementelle Sicherung der MySQL-Datenbank

Datenbanksicherung

In einer Produktionsumgebung ist die Datensicherheit von größter Bedeutung, und jeder Datenverlust kann schwerwiegende Folgen haben

Gründe für Datenverlust

Programmfehler
Menschliches Versagen (die meisten Gründe)
Computerfehler,
Festplattenfehler,
Katastrophen (wie Feuer, Erdbeben) und Diebstahl

Sichern Sie Copywriting aus einer physischen und logischen Perspektive

Physische Sicherung: Sicherung der physischen Dateien (wie Datendateien, Protokolldateien usw.) des Datenbankbetriebssystems. Die
Datenbank ist auf physischer Ebene in drei Dateitypen unterteilt. Der Name jeder Datei beginnt mit dem Namen der Tabelle, und die Erweiterung gibt den Dateityp der
Tabellenstrukturdatei an Definition der Frm-Dateispeichertabelle
Die Erweiterung der Tabellendatendatei lautet .MYD (MYData).
Die Erweiterung der Tabellenindexdatei lautet .MYI (MYIndex). Die
physische Sicherung kann in Offline-Sicherung (Cold-Sicherung) und Online-Sicherung (Hot-Sicherung) unterteilt werden. )
Kalte Sicherung: Wird ausgeführt, wenn die Datenbank geschlossen wird.
Heiße Sicherung: Die Datenbank wird ausgeführt. Diese Sicherungsmethode hängt von der Protokolldatei der Datenbank ab.
Logische Sicherung: Die Sicherung der logischen Datenbankkomponenten (z. B. Tabellen und andere Datenbankobjekte).

Datenbank-Backup-Strategie

Vollständige Sicherung: Erstellen Sie jedes Mal eine vollständige Sicherung der Daten.
Differenzielle Sicherung: Sichern Sie die Dateien, die seit der letzten vollständigen Sicherung geändert wurden.
Inkrementelle Sicherung: Es werden nur die Dateien erstellt, die nach der letzten vollständigen Sicherung oder inkrementellen Sicherung geändert wurden Backup

Vollständige Sicherung

Eine vollständige Sicherung ist eine Sicherung der gesamten Datenbank, Datenbankstruktur und Dateistruktur. Eine
vollständige Sicherung speichert die Datenbank zum Zeitpunkt des Abschlusses der
Sicherung . Eine vollständige Sicherung ist die Grundlage für eine inkrementelle Sicherung.

Vor- und Nachteile einer vollständigen Sicherung

Vorteile:
hohe Sicherheit,
einfache und bequeme Sicherungs- und Wiederherstellungsvorgänge.
Nachteile:
große Datenwiederholung,
viel Sicherungsspeicher, geringe Speicherplatznutzung,
lange Sicherungs- und Wiederherstellungszeit

her damit! Show!

Dateien direkt sichern

[root@5centos mysql]# tar jcvf /beifen/bk-$(date +%F).tar.gz data
[root@5centos mysql]# ls /beifen/
bk-2020-08-20.tar.gz  bk-.tar.gz

Verwenden Sie mysqldump

备份单个库(实际上是备份库里的所有表)
[root@5centos /]# mysqldump -u root -p LIU > /beifen/JUEJUE.sql
Enter password: 

多库备份
[root@5centos beifen]# mysqldump -u root -p --databases LIU PAN > /beifen/databases-LIU_PAN.sql
Enter password: 
[root@5centos beifen]# ls
databases-LIU_PAN.sql  JUEJUE.sql

备份所有库
[root@5centos beifen]# mysqldump -u root -p --opt --all-databases > /beifen/all_databases.sql
Enter password: 

备份指定表
[root@5centos beifen]# mysqldump -u root -p LIU SHUSHU > /beifen/LIU-SHUSHU.sql
Enter password:

Wiederherstellen der Datenbank
Es gibt zwei Möglichkeiten, die Datenbank wiederherzustellen:
eine Quelle,
zwei MySQL -u-Benutzername -p <Sicherungsskript

mysql -u root -p mysql < /beifen/JUEJUE.sql

Inkrementelles Backup

Es werden nur die Dateien gesichert, die
seit der letzten vollständigen Sicherung oder inkrementellen Sicherung geändert wurden. Inkrementelle Sicherungen sind die Dateien oder Inhalte, die seit der letzten Sicherung hinzugefügt oder geändert wurden.

Vor- und Nachteile einer inkrementellen Sicherung

Vorteile:
Keine doppelten Daten, hohe Effizienz, maximale Speicherauslastung
, geringes Sicherungsvolumen, kurze Zeit.
Nachteile:
Problematische Wiederherstellung: Für die Wiederherstellung ist die letzte vollständige Sicherung und alle inkrementellen Sicherungen nach der vollständigen Sicherung erforderlich. Alle inkrementellen Sicherungen sind erforderlich Reverse Push Recovery nacheinander
ist weniger sicher

her damit! Show!

Fügen Sie das Element log-bin = Dateipfad (Dateipfad ist der Pfad der Binärdatei) zum Element [mysqld] der MySQL-Konfigurationsdatei hinzu, z. B. log-bin = mysql-bin, und starten Sie den Dienst mysqld neu.

Der Standardpfad der binären Protokolldatei lautet / usr / local / mysql / data

Die Bedeutung des MySQL-Binärprotokolls für die Sicherung

Das Binärprotokoll speichert alle Aktualisierungen oder Vorgänge, die die Datenbank möglicherweise aktualisieren. Das
Binärprotokoll beginnt mit der Aufzeichnung, nachdem der MySQL-Server gestartet wurde, und erstellt eine neue Protokolldatei neu, nachdem die Datei die von max_binlog_size festgelegte Größe erreicht oder den Befehl flush logs erhalten hat. Sie müssen
nur regelmäßig Flush-Protokolle ausführen Die Methode erstellt ein neues Protokoll neu, generiert eine Folge von Binärdateien und speichert diese Protokolle an einem sicheren Ort, um eine inkrementelle Sicherung abzuschließen

Datendatei sichern

[root@5centos data]# systemctl stop mysqld
tar zcvf /beifen/mysql-$(date +%F).tar.gz /usr/local/mysql/data/
[root@5centos data]# systemctl start mysqld

Binärdatei öffnen

[root@5centos data]# vim /etc/my.cnf
[mysqld]
……省略部分……
log-bin=mysql-bin

[root@5centos data]# systemctl restart mysqld
[root@5centos data]# ll
总用量 122928
……省略部分……发现已生成二进制文件
-rw-r-----. 1 mysql mysql      154 8月  22 22:47 mysql-bin.000001

Erstellen Sie eine Demobibliothek und eine Tabelle

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| JUEJUE             |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> use JUEJUE;
Database changed
mysql> show tables;
+------------------+
| Tables_in_JUEJUE |
+------------------+
| LIULIU           |
+------------------+
1 row in set (0.00 sec)
mysql> select * from LIULIU;
+----+------+-------+
| ID | NAME | HIGHT |
+----+------+-------+
|  1 | JIAN | 175.0 |
|  2 | HAO  | 174.0 |
+----+------+-------+
2 rows in set (0.00 sec)

Erstellen Sie eine vollständige Sicherung

[root@5centos data]# mysqldump -u root -p JUEJUE > /beifen/JUEJUE.sql
Enter password: 

增量备份
[root@5centos data]# mysqladmin -u root -p flush-logs;
Enter password: 

查看增量日志文件
[root@5centos data]# ls
mysql-bin.000001  mysql-bin.000002

Fehlbedienung simulieren

mysql> insert into LIULIU values (4,'GU',190);
Query OK, 1 row affected (0.01 sec)

mysql> insert into LIULIU values (5,'cai',180);
Query OK, 1 row affected (0.00 sec)

mysql> insert into LIULIU values (3,'SHA',180);
Query OK, 1 row affected (0.00 sec)

[root@5centos data]# mysqladmin -u root -p flush-logs;
Enter password: 

Dateien anzeigen

[root@5centos data]# mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000003 > /beifen/bk03.txt

[root@5centos data]# vim /beifen/bk03.txt 
##最后一条执行
# at 625
#200822 23:54:34 server id 1  end_log_pos 673 CRC32 0xd27d03dd  Write_rows: table id 108 flags: STMT_END_F
### INSERT INTO `JUEJUE`.`LIULIU`
### SET
###   @1=5
###   @2='cai'
###   @3=180.0

Simulierte Wiederherstellung

mysql> drop table LIULIU;
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
Empty set (0.00 sec)


基于时间
[root@5centos data]# mysqlbinlog --no-defaults --stop-datetime='2020-8-22  23;54:34' /usr/local/mysql/data/mysql-bin.000003 | mysql -u root -p
Enter password: 

+----+------+-------+
| ID | NAME | HIGHT |
+----+------+-------+
|  1 | JIAN | 175.0 |
|  2 | HAO  | 174.0 |
|  4 | GU   | 190.0 |
|  5 | cai  | 180.0 |
+----+------+-------+
如果想恢复特定的,恢复时开始和结束时间分开写就行

基于位置
我这又删了,不掩饰了
[root@5centos data]# mysqlbinlog --no-defaults --stop-position='625' /usr/local/mysql/data/mysql-bin.000003 | mysql -u root -p123123


+----+------+-------+
| ID | NAME | HIGHT |
+----+------+-------+
|  1 | JIAN | 175.0 |
|  2 | HAO  | 174.0 |
|  4 | GU   | 190.0 |
|  5 | cai  | 180.0 |
+----+------+-------+

Ich denke du magst

Origin blog.csdn.net/Ora_G/article/details/108123009
Empfohlen
Rangfolge