RabbitMQ如何備份與恢復資料

技术颜良發表於2024-07-01

正文

一、場景

現在有伺服器A和伺服器B ,由於業務需要,要求把伺服器A上mq的資料遷移到伺服器B上,rabbitmq的資料包括後設資料(RabbitMQ使用者、vhost、佇列、交換和繫結)和訊息資料,而訊息資料儲存在單獨的訊息儲存庫中。

A:192.168.2.58

B:192.168.1.60

二、後設資料備份和還原

1、操作

在服務B上搭建rabbitmq服務,注意,主機名最好和A上的MQ保持一致。避免後面的資料儲存節點名不一致,導致啟動失敗

安裝過程詳見:

2、匯出資料

用管理員賬號登入到A伺服器上的管理後臺

http://192.168.2.58:15672,按如下所示把備份的資料下載到本地

3、匯入資料

登入到B伺服器上的MQ管理後臺

http://192.168.1.60:15672,進入如下圖所示的位置,匯入資料,大概10秒鐘左右。

4、驗證資料

重新整理頁面,檢視使用者、佇列、vhost 等資訊是否存在

三、訊息資料備份和還原

1、確定資料目錄

登入到A伺服器,執行如下命令,確定訊息資料儲存目:

[root@rabbitmq-ipr-service-test opt]# rabbitmqctl eval 'rabbit_mnesia:dir().'
"/var/lib/rabbitmq/mnesia/rabbit@rabbitmq-ipr-service-test"

2、為避免資料的一致性,需先停掉服務

service rabbitmq-server stop

3、備份資料目錄

tar  -zcvf rabbit@rabbitmq-ipr-service-test.tar.gz  rabbit@rabbitmq-ipr-service-test

4、還原資料

登入到B伺服器上,先備份原來的資料目錄,上傳到備份資料到對應目錄,並解壓

tar  -zxvf  rabbit@rabbitmq-ipr-service-test.tar.gz 

5、修改資料目錄許可權

chown  -R rabbitmq:rabbitmq  rabbit@rabbitmq-ipr-service-test

6、啟動B伺服器上rabbitmq服務

service rabbitmq-server satrt

7、驗證訊息資料是否還原成功

四、注意

內部節點資料庫在某些記錄中儲存節點的名稱,如果節點名稱發生更改,則必須首先使用以下rabbitmqctl命令更新資料庫以便更改:

rabbitmqctl rename_cluster_node <oldnode> <newnode>

當新節點以備份目錄和匹配的節點名稱啟動時,它會根據需要執行升級步驟並繼續引導。

作者:涼生墨客 本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。

相關文章