Detaillierte Erklärung zum MySQL-Datenarchivierungstool mysql_archiver

Detaillierte Erklärung zum MySQL-Datenarchivierungstool mysql_archiver

I. Überblick

Es gibt drei Hauptmethoden zum Archivieren historischer Daten in einer MySQL-Datenbank: 1. Erstellen und Schreiben von SP und Festlegen von Ereignissen; 2. Importieren und Exportieren über Dump; 3. Archivieren über das Tool pt-archiver. Die erste Methode ist häufig durch die gleichen Instanzanforderungen eingeschränkt und wird häufig aufgegeben. Der zweite Typ weist eine relativ bessere Leistung auf, aber Betrieb und Wartung bereiten bei vielen Archivtabellen ebenfalls Kopfschmerzen. Daher verwenden viele DBAs häufig die dritte Methode – pt-archiver.

pt-archiver ist eine Komponente des Percona-Toolkit-Toolset und ein Tool, das hauptsächlich zum Archivieren und Löschen von MySQL-Tabellendaten verwendet wird. Es kann die Daten in einer anderen Tabelle oder einer Datei archivieren. pt-archiver beeinträchtigt die Abfrageleistung von OLTP-Transaktionen während des Löschens von Tabellendaten nicht. Zum Archivieren von Daten können diese in einer anderen Tabelle auf einem anderen Server oder in einer Datei archiviert werden.

Ein Internetnutzer hat pt-archiver über Python zu einem kleinen Tool entwickelt - mysql_archiver. Es realisiert grundsätzlich die konfigurierbare Bereitstellung von Archivierungsjobs und ist sehr gut zu verwenden. „MySQL_archiver realisiert grundsätzlich den automatischen Betrieb der Datenarchivierung, die einheitliche Verwaltung der Planung von Archivierungsaufgaben, die automatische Überwachung und Frühwarnung sowie die automatische Berichterstellung. Bis zu einem gewissen Grad spart es die Produktivität und verbessert die Betriebs- und Wartungseffizienz.“

GitHub-Adresse: https://github.com/dbarun/mysql_archiver

2. Hauptparameter von pt-archiver

Parameter Standardwert Parameter Erklärung
--check-slave-lag Gibt an, dass Archivierungsvorgänge angehalten werden sollen, nachdem die Verzögerung der Master-Slave-Replikation den mit der Option „--max-lag“ angegebenen Wert überschreitet. Standardmäßig überprüft das Tool alle Slave-Bibliotheken, diese Option funktioniert jedoch nur bei der angegebenen Slave-Bibliothek (über DSN verbunden).
--check-interval 1 Sekunden Wenn gleichzeitig die Option „–check-slave-lag“ angegeben ist, ist die durch diese Option angegebene Zeit die Zeit, die das Tool pausiert, wenn es eine Verzögerung bei der Master-Slave-Replikation feststellt. Diese Prüfung wird alle 100 Zeilen durchgeführt.
--[Nein]Zeichensatz prüfen Ja Gibt an, dass überprüft werden soll, ob der Datenbankzeichensatz zum Zeitpunkt der Verbindung mit dem Tabellenzeichensatz übereinstimmt.
--commit-each Gibt an, dass so viele Zeilen wie möglich pro Abruf und Archivierung übertragen werden sollen. Diese Option deaktiviert die Option „--txn-size“. Nach jeder Erfassung und Archivierung von Tabellendaten, vor der nächsten Datenerfassung und der mit der Option „--sleep“ angegebenen Ruhezeit wird die Transaktion festgeschrieben und die mit der Option „--file“ angegebene Datei aktualisiert. Die Größe der Transaktion wird mit der Option „--limit“ gesteuert.
--host, -h Geben Sie die Datenbank-IP-Adresse an, mit der eine Verbindung hergestellt werden soll.
--port, -P Geben Sie den Datenbankport an, mit dem eine Verbindung hergestellt werden soll.
--user, -u Geben Sie den Datenbankbenutzer für die Verbindung an.
--password, -p Geben Sie das Datenbankbenutzerkennwort für die Verbindung an.
--Steckdosen Gibt an, dass zur Verbindung eine SOCKET-Datei verwendet werden soll.
--databases,-d Geben Sie die Datenbank an, mit der eine Verbindung hergestellt werden soll
--Quelle Gibt die Tabelle an, die archiviert werden muss. Diese Option ist erforderlich und wird im DSN-Format ausgedrückt.
--dest Geben Sie mithilfe von DSN die zu archivierende Zieltabelle an. Wenn diese Option nicht angegeben ist, wird standardmäßig dieselbe Quelltabelle verwendet, die durch die Option „--source“ angegeben ist.
--Wo Gibt die zu archivierenden Daten über die bedingte WHERE-Anweisung an. Diese Option ist erforderlich. Das Schlüsselwort „WHERE“ muss nicht hinzugefügt werden. Wenn Sie keine WHERE-Bedingung zur Einschränkung benötigen, geben Sie „--where 1=1“ an.
--Datei Geben Sie die Datei an, in der die Tabellendaten archiviert werden sollen. Verwenden Sie ein Format ähnlich MySQL DATE_FORMAT(). Der Dateiinhalt verwendet dasselbe Format wie die SELECT INTO OUTFILE-Anweisung in MySQL. Die Dateibenennungsoptionen lauten wie folgt: ' %Y: Jahr, numerisch, vier Ziffern %m: Monat, numerisch (01..12) %d: Tag des Monats, numerisch (01..31) %H: Stunde (00..23) %i: Minuten, numerisch (00..59) %s: Sekunden (00..59) %D: Datenbankname %t: Tabellenname Beispiel: --file '/var/log/archive/%Y-%m-%d-%D.%t' '
--output-format Gibt das Format der Dateiinhaltausgabe mit der Option „--file“ an. Wenn diese Option nicht angegeben ist, wird standardmäßig das Tabulatorzeichen als Feldtrennzeichen verwendet. Wenn diese Option angegeben ist, wird ',' (Komma) als Feldtrennzeichen und '"' (doppelte Anführungszeichen) zum Einschließen der Felder verwendet. Verwendungsbeispiel: '--output-format=dump'.
--Limit 1 Gibt die Anzahl der Zeilen an, die pro Anweisung aus Tabellen und Archivtabellen abgerufen werden sollen.
--max-lag 1 Sekunden Gibt die maximal zulässige Verzögerungszeit für die Master-Slave-Replikation in Sekunden an. Wenn die Master-Slave-Verzögerung nach dem Abrufen aller Zeilendaten den angegebenen Wert überschreitet, wird der Archivierungsvorgang angehalten und die Ruhezeit der Anhaltung entspricht dem mit der Option „--check-interval“ angegebenen Wert. Nachdem die Ruhezeit abgelaufen ist, überprüfen Sie die Master-Slave-Verzögerung erneut. Die Prüfmethode besteht darin, den aus der Datenbank abgefragten Wert „Seconds_Behind_Master“ zu ermitteln. Wenn die Replikationsverzögerung zwischen Master und Slave immer größer als der durch diesen Parameter angegebene Wert ist oder der Slave die Replikation stoppt, wartet der Vorgang, bis der Slave neu gestartet wird und die Verzögerung kleiner als der durch diesen Parameter angegebene Wert ist.
--kein Löschen Gibt an, dass archivierte Tabellendaten nicht gelöscht werden sollen.
--Fortschritt Geben Sie an, wie viele Zeilen die Fortschrittsinformationen, die aktuelle Uhrzeit, die verstrichene Zeit und wie viele Zeilen archiviert werden sollen.
--säubern Gibt an, dass ein Bereinigungsvorgang statt eines Archivierungsvorgangs ausgeführt werden soll. Es ermöglicht das Ignorieren der Optionen „--dest“ und „--file“. Wenn es sich nur um einen Löschvorgang handelt, ist es effizienter, es mit der Option „--primary-key-only“ zu kombinieren.
--ersetzen Wenn die Schreiboption „--dest“ zum Angeben der Zieltabelle angegeben wird, wird die INSERT-Anweisung als REPLACE-Anweisung neu geschrieben.
--retries 1 Gibt die Anzahl der Wiederholungsversuche an, die durchgeführt werden sollen, wenn bei einem Archivierungsvorgang ein Deadlock oder eine Zeitüberschreitung auftritt. Wenn die Anzahl der Wiederholungsversuche den durch diese Option angegebenen Wert überschreitet, wird das Tool mit einem Fehler beendet.
--Laufzeit Gibt an, wie lange der Tool-Archivierungsvorgang ausgeführt werden muss, bevor er beendet wird. Die zulässigen Zeitsuffixe sind s=Sekunden, m=Minuten, h=Stunden, d=Tage. Wenn nicht angegeben, ist der Standardwert s.
--[nein]sicheres automatisches Inkrementieren Ja Gibt an, dass Zeilen, die dem Maximalwert der Spalte AUTO_INCREMENT entsprechen, nicht archiviert werden sollen. Diese Option fügt beim Archivieren und Bereinigen eine zusätzliche WHERE-Klausel hinzu, um zu verhindern, dass das Tool Datenzeilen mit dem Maximalwert des AUTO_INCREMENT-Attributs für ein einspaltiges aufsteigendes Feld löscht, sodass der entsprechende Wert von AUTO_INCREMENT nach dem Neustart der Datenbank weiterhin verwendet werden kann. Dies führt jedoch dazu, dass die Zeile, die dem Maximalwert des Felds entspricht, nicht archiviert oder gelöscht werden kann.
--schlafen Gibt die Zeit an, die das Tool im Ruhezustand verbleiben muss, wenn archivierte Daten über die SELECT-Anweisung abgerufen werden. Der Standardwert ist „Kein Ruhezustand“. Die Transaktion wird vor dem Ruhezustand nicht festgeschrieben und die mit der Option „--file“ angegebene Datei wird nicht geleert. Wenn die Option „--commit-each“ angegeben ist, werden das Transaktions-Commit und das Leeren der Datei vor dem Ruhezustand durchgeführt.
--Statistiken Gibt an, dass das Tool Zeitstatistiken für Vorgänge sammelt und druckt.
--txn-Größe 1 Gibt die Anzahl der pro Transaktion zu verarbeitenden Zeilen an. Wenn der Wert 0 ist, sind Transaktionen deaktiviert.
--warum-aufhören Gibt an, dass das Tool den Grund druckt, wenn es beendet wird, weil die Anzahl der zu archivierenden Zeilen nicht erreicht wurde. Diese Option lässt sich beim Ausführen einer automatischen Archivierungsaufgabe sehr bequem zusammen mit der Option „--run-time“ verwenden, sodass Sie feststellen können, ob die Archivierungsaufgabe innerhalb der angegebenen Zeit abgeschlossen ist. Wenn zusätzlich die Option „--statistics“ angegeben ist, werden die Gründe für alle Beendigungen ausgedruckt.
--Fremdschlüsselprüfungen überspringen Geben Sie mit der Anweisung SET FOREIGN_KEY_CHECKS = 0 an, ob die Fremdschlüsselprüfung deaktiviert werden soll.

3. Häufige Fehler bei der Installation und Bereitstellung von mysql_archiver

1. Führen Sie python db_archive_exec.py 127.0.0.1 db123 aus und ein Fehler wird gemeldet

Traceback (letzter Anruf zuletzt):
Datei "/data/mysql_archiver/mysql_archiver-master/db_archive_exec.py", Zeile 7, in <module>
db_conn importieren
Datei "/data/mysql_archiver/mysql_archiver-master/db_conn.py", Zeile 4, in <module>
MySQLdb importieren
ImportError: Kein Modul mit dem Namen MySQLdb

Lösung:

Schritt 1 Grundlegende Umgebung

rm -rf /etc/yum.repos.d/epel*
yum installiere PostgreSQL-Entwicklung Python3-Entwicklung PostgreSQL-Entwicklung Python-Entwicklung

Schritt 2: Setuptools installieren

(1) Laden Sie setuptools-39.2.0.zip herunter
(2) Entpacken und installieren Sie python setup.py build
    python setup.py installieren

Schritt 3 Installieren Sie pip

(1) Laden Sie pip-1.5.4.tar.gz herunter
(2) Installieren Sie python setup.py install

Schritt 4 Installieren Sie MySQL-Python

yum installiere MySQL-Python

2. Melden Sie einen Fehler über das fehlende pt-archiver-Tool

sh: pt-archiver: Befehl nicht gefunden

Lösung:

Laden Sie percona-toolkit-3.2.1_x86_64.tar.gz herunter, installieren Sie es und richten Sie einen Softlink ein.

Zum Beispiel:

ln -s /data/mysql_archiver/percona-toolkit-3.2.1/bin/pt-archiver /usr/local/bin/pt-archiver

3. Fehlende Dokumentation

<Typ 'Ausnahmen.Ausnahme'>
[Errno 2] Keine solche Datei oder kein solches Verzeichnis: u'/software/python_script/db_archive_XXXXdb_XXXtablename.log'

Lösung:

Erstellen Sie eine Datei: /software/python_script

4. Zeichensatzproblem

Zeichensatz-Fehlanpassung: --source DSN verwendet utf8, Tabelle verwendet utf8mb4. Sie können diese Prüfung deaktivieren, indem Sie --no-check-charset angeben.

Lösung:

Ändern Sie die ausführbare Datei db_archive_exec.py und fügen Sie den Parameter --no-check-charset für pt-archiver hinzu

5. Fehler bei der Parametereinstellung

Verwendung: pt-archiver [OPTIONEN] --source DSN --where WHERE

Fehler in Befehlszeilenargumenten:
 * --txn-size und --commit-each schließen sich gegenseitig aus.

pt-archiver nibblet Datensätze aus einer MySQL-Tabelle. Die --source und --dest
Argumente verwenden DSN-Syntax; wenn COPY auf „yes“ gesetzt ist, wird als Standardwert für --dest der Wert des Schlüssels verwendet.
von --source. Für weitere Details verwenden Sie bitte die Option --help oder versuchen Sie 'perldoc
/usr/local/bin/pt-archiver‘ für die vollständige Dokumentation.

Lösung:

pt-archiver entfernt den Parameter --commit-each

6.Kodierung „utf8mb4“ kann nicht gefunden werden

Fehlermeldung:

Die Kodierung „utf8mb4“ kann in Zeile 6711 von /usr/local/bin/pt-archiver nicht gefunden werden.

Lösung:

pt-archiver entfernt die Parameter --bulk-insert --bulk-delete

IV. Wichtigste Referenzmaterialien

1. Praxis der MySQL-Datenarchivierung - die leistungsstarke Kombination aus Python und pt-archiver

https://blog.csdn.net/n88lpo/article/details/78905528?utm_medium=distribute.pc_relevant.none-task-blog-baidulandingword-14&spm=1001.2101.3001.4242

2.MySQL-Datenarchivierungstool

https://github.com/dbarun/mysql_archiver#readme

3. Installieren Sie MySQLdb und grundlegende Vorgänge unter Linux

https://www.cnblogs.com/blogsme/archive/2012/12/12/2814588.html

4.pt-Tool pt-archiver

https://www.cnblogs.com/yhq1314/p/10601801.html

5. Installationsschritte und detaillierte Verwendung von pip unter Linux

https://www.jb51.net/article/118035.htm

6. Zusammenfassung des pt-Archivers von Percona-Toolkit

https://www.cnblogs.com/dbabd/p/10721857.html

Dies ist das Ende dieses Artikels mit der detaillierten Erklärung des MySQL-Datenarchivierungstools mysql_archiver. Weitere relevante Inhalte zur MySQL-Datenarchivierung finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die verwandten Artikel weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Schritte zur Installation von MySQL unter Windows mithilfe einer komprimierten Archivdatei
  • Lösen Sie das Problem, dass Oracle-Datenbankarchivprotokolle Speicherplatz belegen
  • Datenbankfehler ORA-01196 – detaillierte Erklärung zur Wiederherstellung nach Verlust des Archivprotokolls
  • Detaillierte Erläuterung des SQL Server-Skripts zur automatischen Umlaufarchivierung von Partitionsdaten
  • Oracles Archivmodus Allgemeine Befehle für ORACLE-Datenbankarchivprotokolle

<<:  Docker stellt über einen Port eine Verbindung zu einem Container her

>>:  Auszeichnungssprache - CSS-Layout

Artikel empfehlen

Der Prozess der Installation und Konfiguration von Nginx in Win10

1. Einleitung Nginx ist ein kostenloser, quelloff...

Detaillierte Erklärung des Parameters slave_exec_mode in MySQL

Heute habe ich zufällig den Parameter slave_exec_...

So erstellen Sie mit Photoshop ein Web-Drahtgittermodell

Dieser Beitrag stellt eine Reihe kostenloser Phot...

So verstehen Sie die semantische HTML-Struktur

Ich glaube, jeder kennt HTML und CSS, kennt die T...

HTML-Tabellen-Markup-Tutorial (43): VALIGN-Attribut der Tabellenüberschrift

In vertikaler Richtung können Sie die Ausrichtung...

Erstellen, Einschränkungen und Löschen von Fremdschlüsseln in MySQL

Vorwort Ab MySQL-Version 3.23.44 unterstützen Inn...

MYSQL Eine Frage zur Verwendung von Zeichenfunktionen zum Filtern von Daten

Problembeschreibung: Struktur: test hat zwei Feld...

Verwendung des Linux Dig-Befehls

Dig-Einführung: Dig ist ein Tool, das DNS einschl...

So kopieren Sie eine MySQL-Tabelle

Inhaltsverzeichnis 1.mysqldump Ausführungsprozess...

Hinweise zum Upgrade auf mysql-connector-java8.0.27

Kürzlich wurde bei einem Online-Sicherheitsscan e...