GNU/Linux >> Linux の 問題 >  >> Linux

RabbitMQデータと構成をバックアップおよび復元する方法

RabbitMQバックアップは、ブローカーのメタデータのJSON表現です。これには、ユーザー、vhost、キュー、交換、およびバインディングが含まれます。 exportを使用して、実行中のクラスタに対してバックアップが作成されます RabbitMQ管理プラグインによって提供されるコマンド。メッセージはバックアップに含まれていません。

関連コンテンツ

  • ArchLinuxにErlangをインストールする方法
  • FreeBSD13にErlangをインストールする方法
  • FreeBSD13にRabbitMQをインストールする方法
  • Ubuntu20.04にErlangをインストールする方法
  • OpenSUSELeap15.3にErlangをインストールする方法
  • OpenSUSELeap15.3にRabbitMQをインストールする方法
  • Fedora35にErlangをインストールする方法
  • Fedora35にRabbitMQをインストールする方法
  • Rocky Linux / Alma Linux /CentOS8にErlangをインストールする方法
  • Rocky Linux /Centos8にEPELリポジトリをインストールして有効にする方法

RabbitMQクラスターステータス

クラスタステータスを取得するには

sudo rabbitmqctl cluster_status

サーバーに出力

$ 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

rabbitmqadminのダウンロード

backupとrestoreにはrabbitmqadminコマンドラインツールが使用されます。

管理プラグインには、コマンドラインツールrabbitmqadminが付属しています。 管理プラグインを有効にする必要があります:

sudo rabbitmq-plugins enable rabbitmq_management

私の出力

~> 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.

このプラグインは、WebベースのUIと同じアクションのいくつかを実行するために使用され、自動化タスクに便利な場合があります。

管理プラグインを有効にしたら、rabbitmqadminをダウンロードします HTTPAPIと対話するPythonコマンドラインツール。

で管理プラグインが有効になっているRabbitMQノードからダウンロードできます。
http://{node-hostname}:15672/cli/

ダウンロードしたら、ファイルを実行可能にして、/usr/local/binに移動します ディレクトリ:

chmod +x rabbitmqadmin
sudo mv rabbitmqadmin /usr/local/bin

RabbitMQ構成をバックアップする方法

RabbitMQバックアップには、メッセージが別のメッセージストアに保存されているため、メッセージは含まれていません。 RabbitMQユーザー、vhost、キュー、交換、およびバインディングのみをバックアップします。バックアップファイルは、RabbitMQメタデータのJSON表現です。

RabbitMQ構成をバックアップするには、次のコマンドを使用します。

rabbitmqadmin export <backup-file-name>

例:

$ rabbitmqadmin export rabbitmq-backup-config.json
Exported definitions for localhost to "rabbitmq-backup-config.json"

エクスポートはファイルrabbitmq-backup-config.jsonに書き込まれます 。

RabbitMQ構成のバックアップを復元する方法

バックアップからRabbitMQ構成を復元するには、次のコマンドを使用します。

rabbitmqadmin import <JSON backup file >

$ rabbitmqadmin import rabbitmq-backup-config.json
Imported definitions for localhost from "rabbitmq-backup.json"

RabbitMQデータをバックアップする方法

RabbitMQの定義とメッセージは、ノードのデータディレクトリにある内部データベースに保存されます。ディレクトリパスを取得するには、実行中のRabbitMQノードに対して次のコマンドを実行します。

sudo rabbitmqctl eval 'rabbit_mnesia:dir().'

サンプル出力:

$ sudo rabbitmqctl eval 'rabbit_mnesia:dir().'
"/var/lib/rabbitmq/mnesia/[email protected]"

このディレクトリには多くのファイルが含まれています:

# 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

3.7.0以降のRabbitMQバージョンでは、すべてのメッセージデータがmsg_stores / vhostsディレクトリに結合され、vhostごとにサブディレクトリに保存されます。各vhostディレクトリにはハッシュで名前が付けられ、vhost名の.vhostファイルが含まれているため、特定のvhostのメッセージセットを個別にバックアップできます。

RabbitMQ定義とメッセージデータのバックアップを行うには、このディレクトリとその内容をコピーまたはアーカイブします。ただし、最初に、RabbitMQサービスを停止する必要があります

sudo systemctl stop rabbitmq-server

以下の例では、アーカイブを作成します:

tar cvf rabbitmq-backup.tgz /var/lib/rabbitmq/mnesia/[email protected]

RabbitMQデータを復元する方法

バックアップから復元するには、バックアップからデータディレクトリにファイルを抽出します。

内部ノードデータベースは、ノードの名前を特定のレコードに保存します。ノード名が変更された場合は、最初に次のrabbitmqctlコマンドを使用して変更を反映するようにデータベースを更新する必要があります。

rabbitmqctl rename_cluster_node <oldnode> <newnode>

バックアップされたディレクトリと一致するノード名で新しいノードが起動すると、必要に応じてアップグレード手順を実行し、起動に進む必要があります。

結論

このガイドでは、rabbitmqデータをバックアップおよび復元する方法について説明しました。


Linux
  1. MySQL:mysqldumpを使用してデータベースをバックアップ(ダンプ)および復元する方法

  2. LinuxでSVNリポジトリをバックアップおよび復元する方法

  3. Postgresデータベースをバックアップおよび復元する方法

  1. cPanelでバックアップを作成して復元する方法

  2. Pleskでバックアップを作成および復元する方法

  3. Docker コンテナーをバックアップおよび復元する方法

  1. Pleskでサイトをバックアップおよび復元する方法

  2. LinuxでDejaDupを使用してファイルをバックアップおよび復元する方法

  3. PostgreSQLでデータベースをバックアップおよび復元する方法