Beispiel für einen Persistenzbetrieb mit Gearman + MySQL

Beispiel für einen Persistenzbetrieb mit Gearman + MySQL

Dieser Artikel verwendet die Gearman+MySQL-Methode, um Persistenzoperationen zu implementieren. Teilen Sie uns die Einzelheiten zu Ihrer Information mit:

1. Warum Persistenz?

Die Arbeitswarteschlange im Jobserver von Gearman wird im Speicher gespeichert. Sobald der Server neu gestartet wird oder abstürzt, während noch unverarbeitete Aufgaben vorhanden sind, gehen diese Aufgaben verloren.
Mithilfe persistenter Speicherwarteschlangen können Sie Hintergrundaufgaben hinzufügen und diese in einer externen persistenten Warteschlange (z. B. einer MySQL-Datenbank) speichern.

2. Für Artikel über Gearman Persistenz wird empfohlen, die offizielle Dokumentation zu lesen

http://gearman.org/manual/job_server/#persistent_queues

3. Erstellen Sie eine Datenbank und eine Tabelle für die Persistenz

DATENBANK ERSTELLEN gearman;

Tabelle „gearman_queue“ erstellen (
`unique_key` varchar(64) NICHT NULL,
`function_name` varchar(255) NICHT NULL,
`Priorität` int(11) NICHT NULL,
`data` longblob NICHT NULL,
`wann_ausgeführt_werden` int(11),
PRIMÄRSCHLÜSSEL (`unique_key`)
)ENGINE=InnoDB STANDARD-CHARSET=utf8;

4. Gearman-Benutzer erstellen

> Benutzer „Gearman“@„%“ erstellen, IDENTIFIZIERT DURCH „123456“;
> gewähre alles für Gearman.* AN 'Gearman'@'%';
> Berechtigungen leeren;

5. Geben Sie beim Starten von gearmand Persistenzparameter an

> gearmand -q libdrizzle \
--libdrizzle-host=192.168.1.100 \
--libdrizzle-port=3306 \
--libdrizzle-user=Gearman \
--libdrizzle-password=123456 \
--libdrizzle-db=Getriebe \
--libdrizzle-table=Gearman_Warteschlange \
--libdrizzle-mysql

Oder verwenden Sie wie folgt

> gearmand -q mysql \
--mysql-host=192.168.1.100 \
--mysql-port=3306 \
--mysql-user=Gearman \
--mysql-password=123456 \
--mysql-db=Getriebe \
--mysql-table=gearman_queue

Wenn das folgende Problem auftritt, bedeutet dies, dass Sie beim Kompilieren und Installieren von Gearman libdrizzle nicht installiert haben.

gearmand: nicht erkannte Option „--libdrizzle-host=192.168.1.100“

Laden Sie libdrizzle von der folgenden URL herunter

https://launchpad.net/libdrizzle/+download

Beispiel: libdrizzle-5.1.4.tar.gz

Installieren Sie libdrizzle

> tar xf libdrizzle-5.1.4.tar.gz
>cd libdrizzle-5.1.4

Es ist am besten, hier kein --prefix anzugeben, da Gearman bei der Angabe anderer Verzeichnisse beim Kompilieren unten möglicherweise die relevanten Header-Dateien und Linkbibliotheken nicht finden kann und Sie Softlinks manuell hinzufügen müssen

> ./konfigurieren
> machen && machen installieren

Dann kompilieren und installieren wir gearman

> tar xf gearmand-1.1.12.tar.gz 
>cd gearmand-1.1.12

Wenn Sie sich über die Parameter von configure nicht sicher sind, können Sie den folgenden Befehl verwenden, um zu überprüfen

> ./configure --help

Sie müssen mysql-devel hier installieren, damit Gearman die MySQL-Persistenz unterstützt

> yum installiere MySQL-Server MySQL-Entwicklung

Da ich Gearman früher installiert habe, habe ich --prefix nicht angegeben. Deshalb habe ich es hier nicht angegeben. Sie können es bei Bedarf selbst angeben.

> ./konfigurieren
> machen && machen installieren

Die letzte Meldung, die nach Abschluss der Konfiguration angezeigt wird

* Bibliotheken: 
* LDFLAGS-Flags: 
* Assertionen aktiviert: nein
* Debug aktiviert: nein
* Warnungen als Fehler: nein
* Erstellen mit libsqlite3 nein
* Erstellen mit libdrizzle ja
* Erstellen mit libmemcached nicht gefunden
* Erstellen mit libpq nein
* Gebäude mit Tokyo Office Building Nr.
* Erstellen mit libmysql ja
* SSL aktiviert: nein
* cyassl gefunden: nein
* openssl gefunden: ja
* make -j: 2
* VCS-Checkout: nein
* Sphinx-Build: :

Schließlich können Sie sehen, dass libdrizzle und libmysql ja anzeigen

Überprüfen Sie, ob es installiert ist

> gearmand --Hilfe

Wenn der folgende Fehler auftritt

gearmand: Fehler beim Laden gemeinsam genutzter Bibliotheken: libdrizzle.so.9: Gemeinsam genutzte Objektdatei kann nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis

Bitte öffnen und ändern Sie /etc/ld.so.conf

> vi /etc/ld.so.conf

Fügen Sie den folgenden Satz hinzu

/usr/local/lib

Führen Sie ldconfig aus.

>ldconfig

Führen Sie den obigen Befehl gearmand --help erneut aus. Wenn die folgende Meldung erscheint, war die Installation erfolgreich.

eingebaut:

libdrizzle:
--libdrizzle-host arg (=localhost) Host des Servers.
--libdrizzle-port arg (=3306) Port des Servers. (standardmäßig Drizzle)
--libdrizzle-uds arg Unix-Domänen-Socket für Server.
--libdrizzle-user arg (=root) Benutzername für die Authentifizierung.
--libdrizzle-password arg Passwort zur Authentifizierung.
--libdrizzle-db arg (=gearman) Zu verwendende Datenbank.
--libdrizzle-table arg (=Warteschlange) Zu verwendende Tabelle.
--libdrizzle-mysql MySQL-Protokoll verwenden.

MySQL:
--mysql-host arg (=localhost) MySQL-Host.
--mysql-port arg (=3306) Port des Servers. (standardmäßig 3306)
--mysql-user arg MySQL-Benutzer.
--mysql-password arg MySQL-Benutzerpasswort.
--mysql-db arg MySQL-Datenbank.
--mysql-table arg (=gearman_queue) MySQL-Tabellenname.

Wenn beim Starten von Gearmand über Libdrizzle die folgenden Probleme auftreten

gearmand: Fehler beim Initialisieren der Warteschlange: libdrizzle

Und der Eintrag im Log sieht so aus

FEHLER 22.02.2017 07:51:02.536574 [main] Initialisierung von libdrizzle fehlgeschlagen: 
initialisieren(QUEUE_ERROR) -> libgearman-server/queue.cc:246

Ich weiß nicht, ob es daran liegt, dass die MySQL-Version zu hoch ist oder ob es andere Gründe gibt. Wenn Sie es versuchen und es nicht funktioniert, versuchen Sie es mit einer anderen Methode. Ich habe die andere Methode erfolgreich getestet.

Erstellen eines Hintergrundjobs

> gearman -f test -b 123456

Zeigen Sie die Datenbank wie folgt an:

Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen auf dieser Site ansehen: „Zusammenfassung der Kenntnisse im Bereich MySQL-Indexoperationen“, „Zusammenfassung der Kenntnisse im Bereich MySQL-Allgemeinfunktionen“, „Zusammenfassung der Kenntnisse im Bereich MySQL-Protokolloperationen“, „Zusammenfassung der Kenntnisse im Bereich MySQL-Transaktionsoperationen“, „Zusammenfassung der Kenntnisse im Bereich MySQL-gespeicherte Prozeduren“ und „Zusammenfassung der Kenntnisse im Zusammenhang mit MySQL-Datenbanksperren“.

Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist.

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Bereitstellung von MySQL mit Docker (Datenpersistenz)
  • Detaillierte Erklärung der Java-Emoji-Persistenz in MySQL
  • Neue Funktionen von MySQL 8: So ändern Sie persistente globale Variablen
  • Neue Funktionen von MySQL 8: Detaillierte Erklärung der Persistenz des automatisch inkrementierten Primärschlüssels
  • Gründe, warum MySQL 8.0-Statistiken ungenau sind
  • Übersicht über MySQL-Statistiken
  • Detaillierte Erläuterung der persistenten MySQL-Statistiken

<<:  So aktualisieren Sie Ubuntu 20.04 LTS unter Windows 10

>>:  Detaillierte Analyse von Homologie und Domänenübergreifendkeit, JSONP (Funktionskapselung), CORS-Prinzip

Artikel empfehlen

Analyse des Prozesses der einfachen Bereitstellung von Nginx im Docker-Container

1. Stellen Sie den Nginx-Dienst im Container bere...

So deinstallieren Sie MySQL 5.7.19 unter Linux

1. Finden Sie heraus, ob MySQL zuvor installiert ...

So mounten Sie eine Festplatte in Linux

Wenn Sie eine virtuelle Maschine verwenden, stell...

Detaillierte Erklärung zur Verwendung der Vue-Komponente zur Kennzeichensuche

Eine einfache Nummernschild-Eingabekomponente (vu...

Detaillierte Erklärung verschiedener HTTP-Rückgabestatuscodes

Wenn an Ihren Server eine Anforderung zum Anzeige...

Bedingtes Rendering von Vue (v-if und v-show)

Inhaltsverzeichnis 1. v-wenn 2. Verwenden Sie v-i...

Grafisches Tutorial zur Installation von MySQL 8.0.12

MySQL8.0.12-Installationstutorial, mit allen teil...

Detaillierte Schritte zur Installation von Anaconda unter Linux (Ubuntu 18.04)

Anaconda ist die beliebteste Python-Plattform für...

Angular Dependency Injection erklärt

Inhaltsverzeichnis Überblick 1. Abhängigkeitsinje...

Eine kurze Erläuterung der Rolle und Funktionsweise von Schlüsseln in Vue3

Welche Funktion hat dieses Schlüsselattribut? Sch...

So löschen Sie eine MySQL-Tabelle

Das Löschen einer Tabelle in MySQL ist sehr einfa...