跳转至

seabox relocate

seabox relocate

分布式数据库的组件分布在不同的物理服务器上,在运行过程中,难免会发生硬件损坏等情况,虽然高可用机制可以确保在这种情况下业务能够正常运行,同时数据也不会丢失,但是触发了高可用机制后,这种情况下,executor会单副本运行,如果再有物理服务器发生故障,可能就会造成数据不完整。

因此在物理服务器修复之前,可以通过 seabox relocate 组件迁移功能,将coordinator/executor/monitor等组件从故障的物理服务器,迁移到运行正常的服务器上,以达到数据多个副本的目的,最大程度上确保数据的安全性。

功能说明
  • 不能对 scdcs 进行迁移,scdcs 可以使用 seabox set –remove-host-scdcs-member/–add-scdcs-member 进行删除和添加,同样实现了 scdcs 的迁移
  • 不能对 gtm 进行迁移,gtm 是单副本运行,数据都存放在 scdcs 中,一旦其 status 被设置为 removed,即会自动进行迁移,迁移方法: seabox set -d 0 -s removed
  • coordinator/executor/monitor 进行迁移时,需要手动选择目标服务器,也可以对端口、数据目录、address 等进行设置,但是不能与目标服务器上已存在组件的端口、数据目录冲突
  • 集群中的多个 coordinator 默认不能部署在同一台物理服务器上,但是可以设置 –allow-on-same-host 来允许此情况。monitor 也是同样的情况。
  • 集群中相同 content 的主备 executor 默认不能部署在同一台物理服务器上,因为一旦此服务器故障或者掉线,就会丢失数据。也可以设置 –allow-on-same-host 来允许此情况。
  • 如果已经创建了逻辑集群,executor 只能在逻辑集群内进行迁移,不能迁移到逻辑集群之外的物理服务器
  • 不能将组件在同一台物理服务器上进行迁移
  • 组件迁移的目标服务器其 status 必须是 normal
  • 如果待迁移的组件所在的物理服务器 ssh 无法连接,需要首先将此服务器使用 seabox set 将其设置为 offline,否则组件迁移可能会被 ssh 操作阻塞
命令格式
seabox relocate module to other host.

Usage: 
  seabox relocate [OPTIONS]

Options:
  -d, --dbid TEXT       the module dbid which will be relocated
  -n, --dest-host TEXT  the module will relocate to this host
  -D, --datadir TEXT    the module datadir on new host, if not set, it will
                        use the old datadir
  -p, --port TEXT       the module port on new host, if not set, it will use
                        the old port
  --address TEXT        the address module will use, if not set, it will use
                        the hostname
  --allow-on-same-host  allow modules on same host, e.g. 1. primary and mirror
                        on a host; 2. all coordinators on a host; 3. all
                        monitors on a host
  --skip-confirm        skip the confirm message
  -v, --verbose         debug output
  -h, --help            show this help, then exit
参数说明
Options

命令支持的选项

-d, --dbid
待迁移组件的dbid,必须是组件的真实dbid,否则会报错
-n, --dest-host
迁移组件的目标服务器的hostname,必须是集群内的服务器,如果不是集群内的服务器,可以使用 seabox install host 将其添加到集群内
-D, --datadir
组件迁移到目标服务器的数据目录,如果不设置,则使用原数据目录路径
-p, --port
组件迁移到目标服务器使用的端口,如果不设置,则使用原端口
--address
组件迁移到目标服务器使用的 address,如果不设置,则使用 hostname 作为 address
--allow-on-same-host
允许相同类型的组件部署在同一台服务器上,默认值为 False
例如:
允许集群中的多个 coordinator 部署在同一台服务器上
允许集群中的多个 monitor 部署在同一台服务器上
允许集群中相同 content 的主备 executor 部署在同一台服务器上
--skip-confirm
跳过确认信息。默认值为 False
在进行组件迁移前,会提示用户是否进行迁移,此参数设置后,将直接进行迁移
如果目标服务器中的数据目录非空,会提示用户是否清空数据目录,此参数设置后,将直接清空数据目录
-v, --verbose
运行时输出详细信息
-h, --help
使用该选项时返回帮助信息
  • 注意: seabox relocate 命令要求数据库已经正确地安装,运行一切正常,且需通过以下命令设置正确的环境变量:
source $SDHOME/seaboxmpp_path.sh

其中,$SDHOME为安装数据库服务的主目录。

使用方法
  1. 将 dbid 为 3 的 executor 从 node1 迁移到 node3

seabox relocate -d 3 -n node3
2. 将 dbid 为 1 的 coordinator 从 node1 迁移到 node5,端口设置为 3050,数据目录为 /home/seabox/data/coordinator

seabox relocate -d 1 -n node5 -p 3050 -D /home/seabox/data/coordinator
3. node1 上已经有1个coordinator,将 dbid 为 2 的 coordinator 从 node2 迁移到 node1 上,端口设置为 3010,数据目录为 /home/seabox/data/coordinator
seabox relocate -d 2 -n node1 -p 3020 -D /home/seabox/data/coordinator --allow-on-same-host

相关命令