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为安装数据库服务的主目录。
使用方法¶
- 将 dbid 为 3 的 executor 从 node1 迁移到 node3
seabox relocate -d 3 -n node3
seabox relocate -d 1 -n node5 -p 3050 -D /home/seabox/data/coordinator
seabox relocate -d 2 -n node1 -p 3020 -D /home/seabox/data/coordinator --allow-on-same-host
- 相关命令
- 无