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コマンドラインツール。
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データをバックアップおよび復元する方法について説明しました。