Zálohy RabbitMQ jsou reprezentace JSON metadat vašeho brokera. To zahrnuje uživatele, vhosty, fronty, výměny a vazby. Zálohy se provádějí proti běžícímu clusteru pomocí export
příkaz poskytovaný modulem pro správu RabbitMQ. Zprávy nejsou součástí zálohy.
Související obsah
- Jak nainstalovat Erlang na ArchLinux
- Jak nainstalovat Erlang na FreeBSD 13
- Jak nainstalovat RabbitMQ ve FreeBSD 13
- Jak nainstalovat Erlang na Ubuntu 20.04
- Jak nainstalovat Erlang na OpenSUSE Leap 15.3
- Jak nainstalovat RabbitMQ v OpenSUSE Leap 15.3
- Jak nainstalovat Erlang na Fedoru 35
- Jak nainstalovat RabbitMQ do Fedory 35
- Jak nainstalovat Erlang na Rocky Linux/Alma Linux/CentOS 8
- Jak nainstalovat a povolit úložiště EPEL na Rocky Linux/Centos 8
Stav klastru RabbitMQ
Chcete-li získat stav clusteru
sudo rabbitmqctl cluster_status
Výstup na mém serveru
$ 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
Stahování rabbitmqadmin
K zálohování a obnově bude použit nástroj příkazového řádku králíkmqadmin.
Zásuvný modul pro správu se dodává s nástrojem příkazového řádku rabbitmqadmin. Musíte povolit modul pro správu:
sudo rabbitmq-plugins enable rabbitmq_management
Můj výstup
~> 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.
Tento plugin se používá k provádění některých stejných akcí jako webové uživatelské rozhraní a může být pohodlnější pro automatizační úlohy.
Jakmile povolíte plugin pro správu, stáhněte si rabbitmqadmin
Nástroj příkazového řádku Pythonu, který spolupracuje s HTTP API. Lze jej stáhnout z libovolného uzlu RabbitMQ, který má povolen plugin pro správu na adrese
http://{node-hostname}:15672/cli/
Po stažení udělejte soubor spustitelný a přesuňte jej do /usr/local/bin
adresář:
chmod +x rabbitmqadmin
sudo mv rabbitmqadmin /usr/local/bin
Jak zálohovat konfigurace RabbitMQ
Záloha RabbitMQ nezahrnuje zprávy, protože jsou uloženy v samostatném úložišti zpráv. Bude zálohovat pouze uživatele RabbitMQ, vhosty, fronty, výměny a vazby. Záložní soubor představuje JSON metadata RabbitMQ.
Chcete-li zálohovat konfigurace RabbitMQ, použijte příkaz:
rabbitmqadmin export <backup-file-name>
Příklad:
$ rabbitmqadmin export rabbitmq-backup-config.json Exported definitions for localhost to "rabbitmq-backup-config.json"
Export bude zapsán do souborurabbitmq-backup-config.json
.
Jak obnovit zálohu konfigurací RabbitMQ
Chcete-li obnovit své konfigurace RabbitMQ ze zálohy, použijte příkaz:
rabbitmqadmin import <JSON backup file >
Příklad
$ rabbitmqadmin import rabbitmq-backup-config.json Imported definitions for localhost from "rabbitmq-backup.json"
Jak zálohovat data RabbitMQ
Definice a zprávy RabbitMQ jsou uloženy v interní databázi umístěné v datovém adresáři uzlu. Chcete-li získat cestu k adresáři, spusťte následující příkaz proti běžícímu uzlu RabbitMQ:
sudo rabbitmqctl eval 'rabbit_mnesia:dir().'
Ukázkový výstup:
$ sudo rabbitmqctl eval 'rabbit_mnesia:dir().' "/var/lib/rabbitmq/mnesia/[email protected]"
Tento adresář obsahuje mnoho souborů:
# 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
Ve verzích RabbitMQ počínaje 3.7.0 jsou všechna data zpráv kombinována v adresáři msg_stores/vhosts a uložena v podadresáři na vhost. Každý adresář vhost je pojmenován pomocí hashe a obsahuje soubor .vhost s názvem vhost, takže konkrétní sadu zpráv vhost lze zálohovat samostatně.
Chcete-li provést zálohu dat definic a zpráv RabbitMQ, zkopírujte nebo archivujte tento adresář a jeho obsah. Nejprve však musíte zastavit službu RabbitMQ
sudo systemctl stop rabbitmq-server
Níže uvedený příklad vytvoří archiv:
tar cvf rabbitmq-backup.tgz /var/lib/rabbitmq/mnesia/[email protected]
Jak obnovit data RabbitMQ
Chcete-li obnovit ze zálohy, extrahujte soubory ze zálohy do datového adresáře.
Interní databáze uzlů ukládá název uzlu do určitých záznamů. Pokud by se změnil název uzlu, musí být databáze nejprve aktualizována, aby odrážela změnu pomocí následujícího příkazu rabbitmqctl:
rabbitmqctl rename_cluster_node <oldnode> <newnode>
Když nový uzel začíná se zálohovaným adresářem a odpovídajícím názvem uzlu, měl by podle potřeby provést kroky upgradu a pokračovat v bootování.
Závěr
V této příručce jsme prozkoumali, jak zálohovat a obnovovat data rabbitmq.