I backup RabbitMQ sono una rappresentazione JSON dei metadati del tuo broker. Ciò include utenti, vhost, code, scambi e associazioni. I backup vengono eseguiti su un cluster in esecuzione utilizzando export
comando fornito dal plug-in di gestione RabbitMQ. I messaggi non sono inclusi nel backup.
Contenuti correlati
- Come installare Erlang su ArchLinux
- Come installare Erlang su FreeBSD 13
- Come installare RabbitMQ in FreeBSD 13
- Come installare Erlang su Ubuntu 20.04
- Come installare Erlang su OpenSUSE Leap 15.3
- Come installare RabbitMQ in OpenSUSE Leap 15.3
- Come installare Erlang su Fedora 35
- Come installare RabbitMQ in Fedora 35
- Come installare Erlang su Rocky Linux/Alma Linux/CentOS 8
- Come installare e abilitare il repository EPEL su Rocky Linux/Centos 8
Stato del cluster RabbitMQ
Per ottenere lo stato del cluster
sudo rabbitmqctl cluster_status
Output sul mio 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
Download di rabbitmqadmin
Lo strumento da riga di comando rabbitmqadmin verrà utilizzato per il backup e il ripristino.
Il plug-in di gestione viene fornito con uno strumento da riga di comando rabbitmqadmin. Devi abilitare il plug-in di gestione:
sudo rabbitmq-plugins enable rabbitmq_management
Il mio risultato
~> 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.
Questo plug-in viene utilizzato per eseguire alcune delle stesse azioni dell'interfaccia utente basata sul Web e potrebbe essere più conveniente per le attività di automazione.
Dopo aver abilitato il plug-in di gestione, scarica rabbitmqadmin
Strumento da riga di comando Python che interagisce con l'API HTTP. Può essere scaricato da qualsiasi nodo RabbitMQ in cui è abilitato il plug-in di gestione in
http://{node-hostname}:15672/cli/
Una volta scaricato, rendi il file eseguibile e spostalo in /usr/local/bin
directory:
chmod +x rabbitmqadmin
sudo mv rabbitmqadmin /usr/local/bin
Come eseguire il backup delle configurazioni di RabbitMQ
Il backup di RabbitMQ non include i messaggi poiché sono archiviati in un archivio messaggi separato. Eseguirà il backup solo di utenti, vhost, code, scambi e associazioni di RabbitMQ. Il file di backup è una rappresentazione JSON dei metadati RabbitMQ.
Per eseguire il backup delle configurazioni di RabbitMQ, utilizzare il comando:
rabbitmqadmin export <backup-file-name>
Esempio:
$ rabbitmqadmin export rabbitmq-backup-config.json Exported definitions for localhost to "rabbitmq-backup-config.json"
L'esportazione verrà scritta nel filerabbitmq-backup-config.json
.
Come ripristinare il backup delle configurazioni RabbitMQ
Per ripristinare le tue configurazioni RabbitMQ da un backup, usa il comando:
rabbitmqadmin import <JSON backup file >
Esempio
$ rabbitmqadmin import rabbitmq-backup-config.json Imported definitions for localhost from "rabbitmq-backup.json"
Come eseguire il backup dei dati di RabbitMQ
Le definizioni e i messaggi di RabbitMQ sono archiviati in un database interno situato nella directory dei dati del nodo. Per ottenere il percorso della directory, esegui il seguente comando su un nodo RabbitMQ in esecuzione:
sudo rabbitmqctl eval 'rabbit_mnesia:dir().'
Esempio di output:
$ sudo rabbitmqctl eval 'rabbit_mnesia:dir().' "/var/lib/rabbitmq/mnesia/[email protected]"
Questa directory contiene molti file:
# 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
Nelle versioni di RabbitMQ a partire dalla 3.7.0 tutti i dati dei messaggi vengono combinati nella directory msg_stores/vhosts e archiviati in una sottodirectory per vhost. Ciascuna directory vhost è denominata con un hash e contiene un file .vhost con il nome vhost, quindi è possibile eseguire il backup di un set di messaggi specifico di vhost separatamente.
Per eseguire il backup dei dati delle definizioni e dei messaggi di RabbitMQ, copia o archivia questa directory e il suo contenuto. Ma prima devi interrompere il servizio RabbitMQ
sudo systemctl stop rabbitmq-server
L'esempio seguente creerà un archivio:
tar cvf rabbitmq-backup.tgz /var/lib/rabbitmq/mnesia/[email protected]
Come ripristinare i dati RabbitMQ
Per ripristinare dal backup, estrai i file dal backup nella directory dei dati.
Il database del nodo interno memorizza il nome del nodo in determinati record. Se il nome del nodo dovesse cambiare, il database deve essere prima aggiornato per riflettere la modifica usando il seguente comando rabbitmqctl:
rabbitmqctl rename_cluster_node <oldnode> <newnode>
Quando un nuovo nodo inizia con una directory di cui è stato eseguito il backup e un nome nodo corrispondente, dovrebbe eseguire i passaggi di aggiornamento secondo necessità e procedere all'avvio.
Conclusione
In questa guida abbiamo esplorato come eseguire il backup e il ripristino dei dati di rabbitmq.