一、場景
現在有服務器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>
當新節點以備份目錄和匹配的節點名稱啟動時,它會根據需要執行升級步驟並繼續引導。