正文
一、場景
現在有伺服器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>
當新節點以備份目錄和匹配的節點名稱啟動時,它會根據需要執行升級步驟並繼續引導。
作者:涼生墨客 本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。