Beschreibung: MySQL (5.6.6 und höher), innodb_file_per_table ist aktiviert.
1.1. Arbeitsschritte:
0. Zielserver: ALTER TABLE t DISCARD TABLESPACE;
2 die Quellserver-.ibd- und t.cfg-Dateien auf den Zielserver
4. Zielserver: ALTER TABLE t IMPORT TABLESPACE;
Instanztabelle [mysql5711], übertragen in die Tabelle test_purge unter der Bibliothek burn_test2 in [mysql57112]
1.2.1. Vorbereitung
1. Erstellen Sie einen Tabellenbereich auf dem Zielserver
+----+-----+
| 3 |. 40 || 60 |
|. 100 ||. ---+
8 Zeilen im Satz (0,01 Sek.)
--Zielserver [mysql57112]
--
-- test_purge existiert nicht auf dem Zielserver, erstellen Sie zuerst die Tabelle
mysql> CREATE TABLE `test_purge` (
`a` int( 11) NOT NULL AUTO_INCREMENT,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`a`),
UNIQUE KEY `b` (`b`)
) ENGINE=InnoDB AUTO_INCREMENT= 11 DEFAULT CHARSET=utf8mb4;
Abfrage OK, 0 Zeilen betroffen (0,16 Sek.)
#
# Zielserver
#
[root@MyServer burn_test_2]> ll | ---- -. 1 mysql mysql 8578 21. März 10:31 test_purge.frm # Tabellenstruktur
-rw-r----- 1 mysql mysql 57344 21. März 10:31 test_purge.ibd # Tabellenplatz, den Sie benötigen Übergeben Sie DISCARD an den Tabellenbereich. Löschen Sie die Datei. ALTER TABLE test_purge DISCARD TABLESPACE; bedeutet, die Datei test_purge.frm zu behalten und die Datei test_purge.ibd zu löschen Tabelle test_purge verwerfen Tabellenbereich;
Abfrage OK, 0 Zeilen betroffen (0,04 Sek.)
MySQL> Tabellen anzeigen;
+--------+
| Tables_in_burn_test_2 |
+--- --------------------+
|. ------ ----+
2 Zeilen im Satz (0,00 Sek.)
mysql> select * from test_purge;
ERROR 1814 (HY000): Tablespace wurde für Tabelle „test_purge“ verworfen
[root@MyServer burn_test_2 ]> ll |. grep test_purge
-rw-r----- 1 mysql mysql 21 10:31 test_purge.frm
1 Befehl zum Exportieren des Tabellenbereichs (gleichzeitig Lesesperre hinzufügen)
-- Quellserver
mysql> Flush-Tabelle test_purge für den Export -- Tatsächlich eine Lesesperre zu dieser Tabelle hinzufügen
Abfrage OK, 0 Zeilen betroffen (0,00 sek)2. Exportieren Sie die cfg-Datei und die ibd-Datei, kopieren Sie sie in die Datenbank des Zielservers
#
[root@MyServer burn_test]> --. 1 mysql mysql 462 21. März 10:58 test_purge.cfg # Nach dem Export enthält die zusätzliche Datei einige Metadateninformationen
-rw-r-----. 1 mysql mysql 8578 4. März 15:41 test_purge.frm
-rw-r- ----. 1 mysql mysql 5.7.11_2/burn_test_2/ # Tabellenbereich und CFG-Datei kopieren, bitte verwenden Sie scp remote (lokale Multi-Instanz-Demonstration, der Bibliotheksname ist hier anders)
3 Entsperren Sie den Tabellenbereich nach dem Export so schnell wie möglich
-- Quellserver
mysql> Tabellen entsperren; -- Entsperren Sie es so schnell wie möglich
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)
Hinweis: Achten Sie darauf, die CFG- und IBD-Dateien vor dem Entsperren zu kopieren, da die CFG-Datei beim Entsperren gelöscht wird
# Protokolle auf dem Quellserver `burn_test`.`test_purge` auf die Festplatte geleert
[Hinweis] InnoDB: Löschen der Metadatendatei './burn_test/test_purge.cfg' # Nach dem Entsperren der Tabelle wird die Datei automatisch gelöscht
4. Berechtigungen zum Ändern der CFG-Datei und der IBD-Datei auf dem Zielserver
#
5. Führen Sie den Importbefehl auf dem Zielserver aus. Tabellenbereich
--alter table test_purge import tablespace -- Tabellenbereich importierenQuery OK, 0 Zeilen betroffen (0,24 Sek.)
mysql> select * from test_purge; -- Kann vom Quellserver kopierte Daten lesen
+----+-----+
+----+------+
|. 10 |
|. 40 |
| 100 |
+ ----+----- -+
8 Zeilen im Satz (0,00 Sek.)
# In error.log angezeigte Informationen
InnoDB: Tablespace für die Tabelle „burn_test/test_purge“ wird importiert, die vom Host „MyServer“ exportiert wurde.
Hinweis:
Die Namen der Tabellen müssen gleich sein. Nach dem obigen Test können die Bibliotheksnamen unterschiedlich sein.
Diese Methode kann auch für die Sicherung und Wiederherstellung von Partitionstabellen verwendet werden. 🎜🎜#
Das obige ist der detaillierte Inhalt vonBeispielanalyse der Tabellenbereichsübertragung in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!