对于MySQL的不完全恢复,我们可以借助于Innobackupex的多重备份加上binlog来将数据库恢复到任意时刻。这里的不完全恢复(也叫时点恢复)是相对于完全恢复。本文主要演示了基于Innobackupex如何做一个不完全恢复,供大家参考。 a、创建演示环境 robin@localhost[
对于MySQL的不完全恢复,我们可以借助于Innobackupex的多重备份加上binlog来将数据库恢复到任意时刻。这里的不完全恢复(也叫时点恢复)是相对于完全恢复。本文主要演示了基于Innobackupex如何做一个不完全恢复,供大家参考。a、创建演示环境 robin@localhost[(none)]> show variables like 'version'; --当前MySQL版本 +---------------+------------+ | Variable_name | Value | +---------------+------------+ | version | 5.6.12-log | +---------------+------------+ robin@localhost[(none)]> reset master; Query OK, 0 rows affected (0.03 sec) robin@localhost[(none)]> use tempdb; robin@localhost[tempdb]> create table tb(id smallint,val varchar(20)); robin@localhost[tempdb]> insert into tb values(1,'fullbak'); --创建一个全备 SHELL> innobackupex --user=robin -password=xxx --port=3606 --socket=/tmp/mysql3606.sock --defaults-file=/etc/my3606.cnf \ > /hotbak/full --no-timestamp b、创建一个增备 --在创建增备前插入一条记录到tb robin@localhost[tempdb]> insert into tb values(2,'Incbak'); SHELL> innobackupex --user=robin -password=xxx --port=3606 --socket=/tmp/mysql3606.sock --defaults-file=/etc/my3606.cnf \ > --incremental /hotbak/inc --incremental-basedir=/hotbak/full --no-timestamp --再次新增一条记录 robin@localhost[tempdb]> insert into tb values(3,'pointrecover'); Query OK, 1 row affected (0.01 sec) --记下当前的时间点用于后续的不完全恢复 robin@localhost[tempdb]> system date; Thu Dec 25 11:53:54 CST 2014 --模拟误操作 robin@localhost[tempdb]> truncate table tb; Query OK, 0 rows affected (0.01 sec) c、再次全备 SHELL> innobackupex --user=robin -password=xxx --port=3606 --socket=/tmp/mysql3606.sock --defaults-file=/etc/my3606.cnf \ > /hotbak/full2 --no-timestamp --全备后新增一张表 robin@localhost[tempdb]> create table tb_after_truncate(id int,val varchar(20)); Query OK, 0 rows affected (0.02 sec)3、演示恢复过程
--下面理清一下思路: --当前备份情况: 全备+增备+全备 --我们在增备之后truncate了表tb,然后又创建了一个全备,新建了一个表tb_after_truncate。 --此时我们需要将数据库恢复到truncate(误操作)之前 --解决方案:我们需要利用第一次的全备+增备+binglog来恢复到truncate前,当前第二次全备用不上。 a、先做基于全备的apply,注意,此时使用了--redo-only SHELL> i【本文来自鸿网互联 (http://www.68idc.cn)】nnobackupex --apply-log --redo-only --user=robin -password=xxx --port=3606 \ > --defaults-file=/etc/my3606.cnf /hotbak/full b、基于增备的apply, --此时没有--redo-only,如果有多个增备,仅仅最后一个增备无需指定--redo-only SHELL> innobackupex --apply-log --user=robin -password=xxx --port=3606 --defaults-file=/etc/my3606.cnf \ > /hotbak/full --incremental-dir=/hotbak/inc c、进行copy back SHELL> mysqldown -P3606 --copy back前关闭实例 SHELL> netstat -nltp|grep mysql|grep 3606 SHELL> mv /data/inst3606/data3606 /data/inst3606/data3606bk SHELL> mkdir -p /data/inst3606/data3606 SHELL> innobackupex --user=robin -password=xxx --port=3606 --copy-back /hotbak/full --defaults-file=/etc/my3606.cnf SHELL> chown -R mysql:mysql /data/inst3606/data3606 d、启动恢复后的实例 SHELL> mysqld_safe --defaults-file=/etc/my3606.cnf & SHELL> mysql -uroot -pxxx -P3606 -S /tmp/mysql3606.sock \ > -e "select * from tempdb.tb" Warning: Using a password on the command line interface can be insecure. +------+---------+ | id | val | +------+---------+ | 1 | fullbak | | 2 | Incbak | +------+---------+ --获取增量之后的log position SHELL> cd /hotbak/inc/ SHELL> more xtrabackup_binlog_info inst3606bin.000001 774 --这里使用了stop-datetime去将日志追加到truncate之前 SHELL> mysqlbinlog /data/inst3606/log/bin/inst3606bin.000001 --start-position=774 --stop-datetime="2014-12-25 11:53:54" \ > |mysql -urobin -pxxx -P3606 -S /tmp/mysql3606.sock --验证结果如下,可以看到已经恢复到truncate之前了 SHELL> mysql -uroot -pxxx -P3606 -S /tmp/mysql3606.sock \ > -e "select * from tempdb.tb" Warning: Using a password on the command line interface can be insecure. +------+--------------+ | id | val | +------+--------------+ | 1 | fullbak | | 2 | Incbak | | 3 | pointrecover | +------+--------------+ --如果我们需要继续恢复后面的事务,我们可以找出truncate前后位置,然后跳过这个position SHELL> mysqlbinlog /data/inst3606/log/bin/inst3606bin.000001 --start-datetime="2014-12-25 11:53:54"|grep truncate -A5 truncate table tb /*!*/; # at 1180 #141225 11:55:35 server id 3606 end_log_pos 1260 CRC32 0x12f55fc5 Query thread_id=928 exec_time=0 error_code=0 SET TIMESTAMP=1419479735/*!*/; /*!\C latin1 *//*!*/; -- create table tb_after_truncate(id int,val varchar(20)) /*!*/; # at 1392 #141225 13:06:47 server id 3606 end_log_pos 1415 CRC32 0xf956f311 Stop DELIMITER ; # End of log file --我们找出的position为1260,跳过1260之前的继续追加binlog SHELL> mysqlbinlog /data/inst3606/log/bin/inst3606bin.000001 --start-position=1260 \ > |mysql -urobin -pxxx -P3606 -S /tmp/mysql3606.sock --验证追加后的结果,可以看到表tb_after_truncate存在 [mysql@app ~]$ mysql -uroot -pxxx -P3606 -S /tmp/mysql3606.sock \ > -e "desc tempdb.tb_after_truncate" Warning: Using a password on the command line interface can be insecure. +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | val | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+4、小结
f、也可以跳过故障点,继续追加后面的binlog日志至最新,如本文尾部的演示

MySQL ist für Anfänger geeignet, um Datenbankfähigkeiten zu erlernen. 1. Installieren Sie MySQL Server- und Client -Tools. 2. Verstehen Sie grundlegende SQL -Abfragen, wie z. B. SELECT. 3.. Stammdatenoperationen: Daten erstellen, Daten einfügen, aktualisieren und löschen. 4. Lernen Sie fortgeschrittene Fähigkeiten: Unterabfragen und Fensterfunktionen. 5. Debugging und Optimierung: Überprüfen Sie die Syntax, verwenden Sie Indizes, vermeiden Sie die Auswahl*und verwenden Sie die Grenze.

MySQL verwaltet strukturierte Daten effizient durch Tabellenstruktur und SQL-Abfrage und implementiert Inter-Tisch-Beziehungen durch Fremdschlüssel. 1. Definieren Sie beim Erstellen einer Tabelle das Datenformat und das Typ. 2. Verwenden Sie fremde Schlüssel, um Beziehungen zwischen Tabellen aufzubauen. 3.. Verbessern Sie die Leistung durch Indexierung und Abfrageoptimierung. 4. regelmäßig Sicherung und Überwachung von Datenbanken, um die Datensicherheit und die Leistungsoptimierung der Daten zu gewährleisten.

MySQL ist ein Open Source Relational Database Management -System, das in der Webentwicklung häufig verwendet wird. Zu den wichtigsten Funktionen gehören: 1. unterstützt mehrere Speichermotoren wie InnoDB und MyISAM, geeignet für verschiedene Szenarien; 2. Bietet Master-Slave-Replikationsfunktionen, um Lastausgleich und Datensicherung zu erleichtern. 3.. Verbessern Sie die Abfrageeffizienz durch Abfrageoptimierung und Index.

SQL wird verwendet, um mit der MySQL -Datenbank zu interagieren, um die Datenzusatz, Löschung, Änderung, Inspektion und Datenbankdesign zu realisieren. 1) SQL führt Datenoperationen über SELECT, INSERT, INTERATE, UPDATE, Löschen von Anweisungen durch. 2) Verwenden Sie Anweisungen für Datenbankdesign und -verwaltung create, ändern, fallen. 3) Komplexe Abfragen und Datenanalysen werden über SQL implementiert, um die Effizienz der Geschäftsentscheidungen zu verbessern.

Zu den grundlegenden Operationen von MySQL gehört das Erstellen von Datenbanken, Tabellen und die Verwendung von SQL zur Durchführung von CRUD -Operationen für Daten. 1. Erstellen Sie eine Datenbank: createdatabasemy_first_db; 2. Erstellen Sie eine Tabelle: CreateTableBooks (IDINGAUTO_INCRECTIONPRIMARYKEY, Titelvarchar (100) Notnull, AuthorVarchar (100) Notnull, veröffentlicht_yearint); 3.. Daten einfügen: InsertIntoBooks (Titel, Autor, veröffentlicht_year) va

Die Hauptaufgabe von MySQL in Webanwendungen besteht darin, Daten zu speichern und zu verwalten. 1.Mysql verarbeitet effizient Benutzerinformationen, Produktkataloge, Transaktionsunterlagen und andere Daten. 2. Durch die SQL -Abfrage können Entwickler Informationen aus der Datenbank extrahieren, um dynamische Inhalte zu generieren. 3.Mysql arbeitet basierend auf dem Client-Server-Modell, um eine akzeptable Abfragegeschwindigkeit sicherzustellen.

Zu den Schritten zum Erstellen einer MySQL -Datenbank gehören: 1. Erstellen einer Datenbank und Tabelle, 2. Daten einfügen, und 3. Durchführen von Abfragen. Verwenden Sie zunächst die Anweisungen für erstellte und creatEtable, um die Datenbank und Tabelle zu erstellen, und verwenden Sie dann die Anweisung InsertInto, um die Daten einzulegen, und verwenden Sie schließlich die Auswahlanweisung, um die Daten abzufragen.

MySQL ist für Anfänger geeignet, da es einfach zu bedienen und leistungsfähig ist. 1.Mysql ist eine relationale Datenbank und verwendet SQL für CRUD -Operationen. 2. Es ist einfach zu installieren und erfordert, dass das Stammbenutzerkennwort konfiguriert wird. 3.. Verwenden Sie Einfügen, Aktualisieren, Löschen und Wählen Sie, um Datenvorgänge auszuführen. 4. OrderBy, wo und Join kann für komplexe Abfragen verwendet werden. 5. Debugging erfordert die Überprüfung der Syntax und verwenden Sie Erklärungen zur Analyse der Abfrage. 6. Die Optimierungsvorschläge umfassen die Verwendung von Indizes, die Auswahl des richtigen Datentyps und der guten Programmiergewohnheiten.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

Dreamweaver Mac
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)