Las copias de seguridad de RabbitMQ son una representación JSON de los metadatos de su corredor. Esto incluye usuarios, hosts virtuales, colas, intercambios y enlaces. Las copias de seguridad se realizan en un clúster en ejecución mediante export
Comando proporcionado por el complemento de administración RabbitMQ. Los mensajes no se incluyen en la copia de seguridad.
Contenido relacionado
- Cómo instalar Erlang en ArchLinux
- Cómo instalar Erlang en FreeBSD 13
- Cómo instalar RabbitMQ en FreeBSD 13
- Cómo instalar Erlang en Ubuntu 20.04
- Cómo instalar Erlang en OpenSUSE Leap 15.3
- Cómo instalar RabbitMQ en OpenSUSE Leap 15.3
- Cómo instalar Erlang en Fedora 35
- Cómo instalar RabbitMQ en Fedora 35
- Cómo instalar Erlang en Rocky Linux/Alma Linux/CentOS 8
- Cómo instalar y habilitar el repositorio EPEL en Rocky Linux/Centos 8
Estado del clúster de RabbitMQ
Para obtener el estado del clúster
sudo rabbitmqctl cluster_status
Salida en mi servidor
$ 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
Descargando rabbitmqadmin
La herramienta de línea de comandos rabbitmqadmin se utilizará para realizar copias de seguridad y restaurar.
El complemento de administración se envía con una herramienta de línea de comandos rabbitmqadmin. Debe habilitar el complemento de administración:
sudo rabbitmq-plugins enable rabbitmq_management
Mi salida
~> 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.
Este complemento se usa para realizar algunas de las mismas acciones que la interfaz de usuario basada en web y que pueden ser más convenientes para las tareas de automatización.
Una vez que habilite el complemento de administración, descargue rabbitmqadmin
Herramienta de línea de comandos de Python que interactúa con la API HTTP. Se puede descargar desde cualquier nodo RabbitMQ que tenga habilitado el complemento de administración en
http://{node-hostname}:15672/cli/
Una vez descargado, haga que el archivo sea ejecutable y muévalo a /usr/local/bin
directorio:
chmod +x rabbitmqadmin
sudo mv rabbitmqadmin /usr/local/bin
Cómo hacer una copia de seguridad de las configuraciones de RabbitMQ
La copia de seguridad de RabbitMQ no incluye mensajes, ya que se almacenan en un almacén de mensajes separado. Solo realizará copias de seguridad de usuarios, vhosts, colas, intercambios y enlaces de RabbitMQ. El archivo de copia de seguridad es una representación JSON de los metadatos de RabbitMQ.
Para hacer una copia de seguridad de las configuraciones de RabbitMQ, use el comando:
rabbitmqadmin export <backup-file-name>
Ejemplo:
$ rabbitmqadmin export rabbitmq-backup-config.json Exported definitions for localhost to "rabbitmq-backup-config.json"
La exportación se escribirá en el archivo rabbitmq-backup-config.json
.
Cómo restaurar la copia de seguridad de las configuraciones de RabbitMQ
Para restaurar sus configuraciones de RabbitMQ desde una copia de seguridad, use el comando:
rabbitmqadmin import <JSON backup file >
Ejemplo
$ rabbitmqadmin import rabbitmq-backup-config.json Imported definitions for localhost from "rabbitmq-backup.json"
Cómo hacer una copia de seguridad de los datos de RabbitMQ
Las definiciones y los mensajes de RabbitMQ se almacenan en una base de datos interna ubicada en el directorio de datos del nodo. Para obtener la ruta del directorio, ejecute el siguiente comando en un nodo RabbitMQ en ejecución:
sudo rabbitmqctl eval 'rabbit_mnesia:dir().'
Salida de muestra:
$ sudo rabbitmqctl eval 'rabbit_mnesia:dir().' "/var/lib/rabbitmq/mnesia/[email protected]"
Este directorio contiene muchos archivos:
# 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
En las versiones de RabbitMQ que comienzan con 3.7.0, todos los datos de los mensajes se combinan en el directorio msg_stores/vhosts y se almacenan en un subdirectorio por vhost. Cada directorio de vhost se nombra con un hash y contiene un archivo .vhost con el nombre de vhost, por lo que se puede hacer una copia de seguridad del conjunto de mensajes de un vhost específico por separado.
Para hacer una copia de seguridad de los datos de mensajes y definiciones de RabbitMQ, copie o archive este directorio y su contenido. Pero primero, debe detener el servicio RabbitMQ
sudo systemctl stop rabbitmq-server
El siguiente ejemplo creará un archivo:
tar cvf rabbitmq-backup.tgz /var/lib/rabbitmq/mnesia/[email protected]
Cómo restaurar datos de RabbitMQ
Para restaurar desde la copia de seguridad, extraiga los archivos de la copia de seguridad al directorio de datos.
La base de datos interna del nodo almacena el nombre del nodo en ciertos registros. Si el nombre del nodo cambia, primero se debe actualizar la base de datos para reflejar el cambio mediante el siguiente comando rabbitmqctl:
rabbitmqctl rename_cluster_node <oldnode> <newnode>
Cuando un nuevo nodo comienza con un directorio respaldado y un nombre de nodo coincidente, debe realizar los pasos de actualización según sea necesario y continuar con el arranque.
Conclusión
En esta guía exploramos cómo hacer una copia de seguridad y restaurar datos de rabbitmq.