更新时间:2023-05-05 GMT+08:00
迁移元数据
操作场景
分布式消息服务RocketMQ版支持通过控制台迁移其他厂商或自建RocketMQ实例的元数据到云上RocketMQ实例。
前提条件
已购买RocketMQ实例。
步骤一:获取其他厂商或自建RocketMQ实例的元数据
- 下载RocketMQ软件包。
wget https://archive.apache.org/dist/rocketmq/4.9.4/rocketmq-all-4.9.4-bin-release.zip
- 解压软件包。
unzip rocketmq-all-4.9.4-bin-release.zip
- (可选)如果RocketMQ实例开启了ACL访问控制,执行mqadmin命令时,需要鉴权。
在RocketMQ实例安装目录下的“conf/tools.yml”文件中,增加如下内容。
accessKey:******* secretKey:*******
accessKey和secretKey表示在控制台“用户管理”页面,创建的用户名和密钥。
- 进入RocketMQ实例的安装目录,执行以下命令,查询集群名称。
sh ./bin/mqadmin clusterList -n {nameserver地址及端口号}
例如:“nameserver地址及端口号”为“192.168.0.65:8100”。
sh ./bin/mqadmin clusterList -n 192.168.0.65:8100
- 执行以下命令,导出元数据。
- 未开启SSL的实例,执行以下命令。
sh ./bin/mqadmin exportMetadata -n {nameserver地址及端口号} -c {RocketMQ集群名称} -f {导出的元数据文件的存放路径}
例如:“nameserver地址及端口号”为“192.168.0.65:8100”,“RocketMQ集群名称”为“DmsCluster”,“导出的元数据文件的存放路径”为“/tmp/rocketmq/export”。
sh ./bin/mqadmin exportMetadata -n 192.168.0.65:8100 -c DmsCluster -f /tmp/rocketmq/export
- 已开启SSL的实例,执行以下命令。
JAVA_OPT=-Dtls.enable=true sh ./bin/mqadmin exportMetadata -n {nameserver地址及端口号} -c {RocketMQ集群名称} -f {导出的元数据文件的存放路径}
例如:“nameserver地址及端口号”为“192.168.0.65:8100”,“RocketMQ集群名称”为“DmsCluster”,“导出的元数据文件的存放路径”为“/tmp/rocketmq/export”。
JAVA_OPT=-Dtls.enable=true sh ./bin/mqadmin exportMetadata -n 192.168.0.65:8100 -c DmsCluster -f /tmp/rocketmq/export
- 未开启SSL的实例,执行以下命令。
步骤二:在控制台迁移元数据
- 登录管理控制台。
- 在管理控制台左上角单击,选择区域。
请选择RocketMQ实例所在的区域。
- 在管理控制台左上角单击,选择“应用服务 > 分布式消息服务 RocketMQ”,进入分布式消息服务RocketMQ专享版页面。
- 单击RocketMQ实例的名称,进入实例详情页面。
- 在左侧导航栏,选择“元数据迁移”,进入迁移任务列表页面。
- 单击“创建迁移任务”,弹出“创建迁移任务”对话框。
- 参考表1,设置迁移任务的参数。
- 单击“确定”。
迁移完成后,在迁移任务列表页面查看“任务状态”。
- 当“任务状态”为“迁移完成”,表示所有元数据都已成功迁移。
- 当“任务状态”为“迁移失败”,表示元数据中部分或全部元数据迁移失败。单击迁移任务名称,进入迁移任务详情页,在“迁移结果”中查看迁移失败的Topic/消费组名称,以及失败原因。
图1 迁移结果