RabbitMQ-Backups sind eine JSON-Darstellung der Metadaten Ihres Brokers. Dazu gehören Benutzer, vhosts, Warteschlangen, Austausch und Bindungen. Sicherungen werden mit dem export
für einen laufenden Cluster erstellt Befehl, der vom RabbitMQ-Management-Plugin bereitgestellt wird. Nachrichten werden nicht in die Sicherung aufgenommen.
Verwandte Inhalte
- Wie installiert man Erlang auf ArchLinux
- So installieren Sie Erlang unter FreeBSD 13
- So installieren Sie RabbitMQ unter FreeBSD 13
- So installieren Sie Erlang auf Ubuntu 20.04
- So installieren Sie Erlang auf OpenSUSE Leap 15.3
- So installieren Sie RabbitMQ in OpenSUSE Leap 15.3
- So installieren Sie Erlang auf Fedora 35
- So installieren Sie RabbitMQ in Fedora 35
- So installieren Sie Erlang auf Rocky Linux/Alma Linux/CentOS 8
- So installieren und aktivieren Sie das EPEL-Repository unter Rocky Linux/Centos 8
RabbitMQ-Cluster-Status
So erhalten Sie den Clusterstatus
sudo rabbitmqctl cluster_status
Ausgabe auf meinem Server
$ sudo rabbitmqctl cluster_status
/usr/lib/erlang/erts-12.1.5/bin/beam.smp: /usr/lib/libncursesw.so.6: no version information available (required by /usr/lib/erlang/erts-12.1.5/bin/beam.smp)
Cluster status of node [email protected] ...
Basics
Cluster name: [email protected]
Disk Nodes
[email protected]
Running Nodes
[email protected]
Versions
[email protected]: RabbitMQ 3.8.22 on Erlang 24.1.7
Maintenance status
Node: [email protected], status: not under maintenance
Alarms
(none)
Network Partitions
(none)
Listeners
Node: [email protected], interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: [email protected], interface: 0.0.0.0, port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Node: [email protected], interface: [::], port: 15672, protocol: http, purpose: HTTP API
Feature flags
Flag: drop_unroutable_metric, state: disabled
Flag: empty_basic_get_metric, state: disabled
Flag: implicit_default_bindings, state: enabled
Flag: maintenance_mode_status, state: enabled
Flag: quorum_queue, state: enabled
Flag: user_limits, state: enabled
Flag: virtual_host_metadata, state: enabled
Herunterladen von rabbitmqadmin
Das Befehlszeilentool rabbitmqadmin wird für die Sicherung und Wiederherstellung verwendet.
Das Verwaltungs-Plug-in wird mit einem Befehlszeilentool rabbitmqadmin. Sie müssen das Verwaltungs-Plugin aktivieren:
sudo rabbitmq-plugins enable rabbitmq_management
Meine Ausgabe
~> sudo rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node [email protected]:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to [email protected]
Plugin configuration unchanged.
Dieses Plug-in wird verwendet, um einige der gleichen Aktionen wie die webbasierte Benutzeroberfläche auszuführen, was für Automatisierungsaufgaben möglicherweise bequemer ist.
Nachdem Sie das Verwaltungs-Plug-in aktiviert haben, laden Sie rabbitmqadmin
herunter Python-Befehlszeilentool, das mit der HTTP-API interagiert. Es kann von jedem RabbitMQ-Knoten heruntergeladen werden, auf dem das Verwaltungs-Plugin unter
http://{node-hostname}:15672/cli/
Machen Sie die Datei nach dem Herunterladen ausführbar und verschieben Sie sie nach /usr/local/bin
Verzeichnis:
chmod +x rabbitmqadmin
sudo mv rabbitmqadmin /usr/local/bin
So sichern Sie RabbitMQ-Konfigurationen
Die RabbitMQ-Sicherung enthält keine Nachrichten, da sie in einem separaten Nachrichtenspeicher gespeichert werden. Es werden nur RabbitMQ-Benutzer, Vhosts, Warteschlangen, Austauschvorgänge und Bindungen gesichert. Die Sicherungsdatei ist eine JSON-Darstellung von RabbitMQ-Metadaten.
Um RabbitMQ-Konfigurationen zu sichern, verwenden Sie den Befehl:
rabbitmqadmin export <backup-file-name>
Beispiel:
$ rabbitmqadmin export rabbitmq-backup-config.json Exported definitions for localhost to "rabbitmq-backup-config.json"
Der Export wird in die Datei rabbitmq-backup-config.json
geschrieben .
So stellen Sie die Sicherung der RabbitMQ-Konfigurationen wieder her
Um Ihre RabbitMQ-Konfigurationen aus einem Backup wiederherzustellen, verwenden Sie den Befehl:
rabbitmqadmin import <JSON backup file >
Beispiel
$ rabbitmqadmin import rabbitmq-backup-config.json Imported definitions for localhost from "rabbitmq-backup.json"
So sichern Sie RabbitMQ-Daten
RabbitMQ-Definitionen und -Nachrichten werden in einer internen Datenbank gespeichert, die sich im Datenverzeichnis des Knotens befindet. Um den Verzeichnispfad abzurufen, führen Sie den folgenden Befehl für einen laufenden RabbitMQ-Knoten aus:
sudo rabbitmqctl eval 'rabbit_mnesia:dir().'
Beispielausgabe:
$ sudo rabbitmqctl eval 'rabbit_mnesia:dir().' "/var/lib/rabbitmq/mnesia/[email protected]"
Dieses Verzeichnis enthält viele Dateien:
# ls /var/lib/rabbitmq/mnesia/[email protected] cluster_nodes.config msg_stores rabbit_durable_exchange.DCD rabbit_durable_queue.DCL rabbit_runtime_parameters.DCL rabbit_user.DCD rabbit_vhost.DCD DECISION_TAB.LOG nodes_running_at_shutdown rabbit_durable_exchange.DCL rabbit_durable_route.DCD rabbit_serial rabbit_user_permission.DCD schema.DAT LATEST.LOG quorum rabbit_durable_queue.DCD rabbit_runtime_parameters.DCD rabbit_topic_permission.DCD rabbit_user_permission.DCL schema_version
In RabbitMQ-Versionen ab 3.7.0 werden alle Nachrichtendaten im Verzeichnis msg_stores/vhosts zusammengefasst und in einem Unterverzeichnis pro vhost gespeichert. Jedes vhost-Verzeichnis ist mit einem Hash benannt und enthält eine .vhost-Datei mit dem vhost-Namen, sodass der Nachrichtensatz eines bestimmten vhost separat gesichert werden kann.
Kopieren oder archivieren Sie dieses Verzeichnis und seinen Inhalt, um RabbitMQ-Definitionen und Nachrichtendaten zu sichern. Aber zuerst müssen Sie den RabbitMQ-Dienst beenden
sudo systemctl stop rabbitmq-server
Das folgende Beispiel erstellt ein Archiv:
tar cvf rabbitmq-backup.tgz /var/lib/rabbitmq/mnesia/[email protected]
So stellen Sie RabbitMQ-Daten wieder her
Extrahieren Sie zur Wiederherstellung aus der Sicherung die Dateien aus der Sicherung in das Datenverzeichnis.
Die interne Knotendatenbank speichert den Namen des Knotens in bestimmten Datensätzen. Sollte sich der Knotenname ändern, muss die Datenbank zuerst aktualisiert werden, um die Änderung widerzuspiegeln, indem der folgende Rabbitmqctl-Befehl verwendet wird:
rabbitmqctl rename_cluster_node <oldnode> <newnode>
Wenn ein neuer Knoten mit einem gesicherten Verzeichnis und einem übereinstimmenden Knotennamen startet, sollte er die erforderlichen Upgrade-Schritte ausführen und mit dem Booten fortfahren.
Schlussfolgerung
In dieser Anleitung haben wir untersucht, wie man Rabbitmq-Daten sichert und wiederherstellt.