从 RabbitMQ 服务器迁移数据
Migrating data from RabbitMQ server
我们在 AWS 上托管了 RabbitMQ 服务器,最近我们收到通知,该实例将处于维护状态,并且将在几个小时内暂时不可用。
由于它是生产服务器,我们希望避免用户停机,目前正在考虑将 RabbitMQ 迁移到另一台服务器而不会丢失数据的策略。看起来有两个选择:
- 尝试连接不同机器的其他节点并复制
数据给他们。
- 在新机器上安装rabbit并复制mnesia文件
从旧服务器到新服务器。打开新服务器,关闭旧服务器
一。例如。可以在AWS上做镜像快照,简化流程。
我无法在不清理数据的情况下找到实现 (1) 的方法,因此该选项看起来不可行。
至于 (2) 它看起来非常手动和令人毛骨悚然。
还有其他数据迁移策略吗?或者我在这里遗漏了什么?
我设法通过设置 RabbitMQ 集群为第一个选项设置流程,以在不停机的情况下复制数据。为此,我遵循 manual,但调整了两点以使其适用于我的堆栈:
- AWS 中的 RabbitMQ 集群不能使用 ip 地址作为 fqdn 短名称,因此要使集群机器相互看到,您需要编辑 /etc/hosts 文件并将 "string" 名称重新排列到您的集群机器:
vi /etc/hosts
文件应如下所示:
127.0.0.1 localhost
10.242.86.191 ip-10-242-86-191
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
- 设置集群后,您需要按照描述设置复制 here 但重要的是默认情况下不会复制队列。所以你需要像这样设置队列复制策略:
rabbitmqctl set_policy policy_name "queue_pattern" '{"ha-mode":"all", "ha-sync-mode":"automatic"}' -p your_vhost
顺便说一下 -p your_vhost 参数在文档中没有提到 - 如果你使用任何参数,请小心指定虚拟主机。
在设置跨集群复制的队列并通过 mnesia 同步后,这使我能够在不停机的情况下关闭第一台集群机器,并在维护后打开而不会丢失数据。
我们在 AWS 上托管了 RabbitMQ 服务器,最近我们收到通知,该实例将处于维护状态,并且将在几个小时内暂时不可用。 由于它是生产服务器,我们希望避免用户停机,目前正在考虑将 RabbitMQ 迁移到另一台服务器而不会丢失数据的策略。看起来有两个选择:
- 尝试连接不同机器的其他节点并复制 数据给他们。
- 在新机器上安装rabbit并复制mnesia文件 从旧服务器到新服务器。打开新服务器,关闭旧服务器 一。例如。可以在AWS上做镜像快照,简化流程。
我无法在不清理数据的情况下找到实现 (1) 的方法,因此该选项看起来不可行。 至于 (2) 它看起来非常手动和令人毛骨悚然。 还有其他数据迁移策略吗?或者我在这里遗漏了什么?
我设法通过设置 RabbitMQ 集群为第一个选项设置流程,以在不停机的情况下复制数据。为此,我遵循 manual,但调整了两点以使其适用于我的堆栈:
- AWS 中的 RabbitMQ 集群不能使用 ip 地址作为 fqdn 短名称,因此要使集群机器相互看到,您需要编辑 /etc/hosts 文件并将 "string" 名称重新排列到您的集群机器:
vi /etc/hosts
文件应如下所示:
127.0.0.1 localhost
10.242.86.191 ip-10-242-86-191
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
- 设置集群后,您需要按照描述设置复制 here 但重要的是默认情况下不会复制队列。所以你需要像这样设置队列复制策略:
rabbitmqctl set_policy policy_name "queue_pattern" '{"ha-mode":"all", "ha-sync-mode":"automatic"}' -p your_vhost
顺便说一下 -p your_vhost 参数在文档中没有提到 - 如果你使用任何参数,请小心指定虚拟主机。
在设置跨集群复制的队列并通过 mnesia 同步后,这使我能够在不停机的情况下关闭第一台集群机器,并在维护后打开而不会丢失数据。