跳转至

初始化新节点

初始化新节点

使用scexpand工具创建并初始化新节点实例,并创建扩容schema。

第一次用一个合法文件运行scexpand工具,它会创建并初始化节点实例并创建扩容schema。这些过程完成后,运行scexpand检测扩容schema是否被创建,如果成功则做表重分布。

集群扩容配置文件创建

要开始扩容,scexpand要求一个包含有关新节点和主机信息的输入文件。如果用户运行scexpand但不指定输入文件,该工具会显示一个交互式的问讯来收集所需的信息并且自动创建一个输入文件。

如果用户使用交互式问讯创建输入文件,用户可以在问讯提示符中指定一个含有扩容主机列表的文件。如果用户的平台或者命令shell限制主机列表的长度,使用-f指定主机就是唯一的办法。

在交互模式中创建配置文件的步骤如下:

在用户运行scexpand在交互模式中创建一个输入文件之前,确保用户了解:

  • 新主机的数量(或者一个主机文件)

  • 新主机名(或者一个主机文件)

  • 每个主机要增加的Executor数量(如果有)

该工具会基于这些信息、dbidcontentID以及sc_node_configuration中存储的数据目录值自动生成一个输入文件,并将该文件保存在当前目录中。

  1. 使用将要运行SeaboxMPP数据库的用户登录coordinator主机;例如,seabox

  2. 运行scexpand。该工具显示关于如何准备一次扩容操作的消息,并且它会提示用户退出或者继续。

    可以选择用-f指定一个主机文件。例如:

    $ scexpand -f /home/seabox/new_hosts_file
    
    new_hosts_file文件中可指定多个主机,每个主机占据一行

  3. 在交互中,输入Y以继续。

  4. 除非用户用-f指定了一个主机文件,用户会被提示输入主机名。

可以输入新扩容主机的主机名组成的由逗号分隔的列表。 不要包括接口主机名。例如:

> scw4, scw5, scw6, scw7

如果只对现有主机增加节点,在这个提示符处留一个空行。 不要指定localhost或者任何现有的主机名。

  1. 输入要增加的主节点的数量(如果有)。

默认情况下,新主机会被用与现有主机相同数量的主节点初始化。

输入一个大于零的数字可以为每个主机增加节点数量。 用户输入的数字将是在所有主机上初始化的额外节点的数量。

例如,如果现有每个主机当前有两个节点,输入一个值2会在现有主机上多初始化两个节点,而在新主机上会初始化四个节点。

  1. 如果用户在增加新的节点,为这些新的节点输入新的数据目录的根目录。

不要指定完整的数据目录名称,目录会由scexpand基于content自动创建。

例如,如果用户的现有数据目录像下面这样:

/scdata/sc/0
/scdata/sc/1
那么增加了content为2的executor后,且用户输入目录为/scdata/sc工具会自动生成如下目录:

/scdata/sc/2
扩容配置文件格式

除非用户的扩容场景有非典型的需求,请使用交互式问讯过程来创建用户自己的输入文件。

扩容输入文件格式:

hostname|address|port|datadir|dbid|content|role

例如:

scw5-1|scw5-1|50011|/scdata/sc9|11|9|p
scw5-2|scw5-2|50011|/scdata/sc9|12|9|a
scw5-2|scw5-2|50012|/scdata/sc10|13|10|p
scw5-1|scw5-1|50012|/scdata/sc10|14|10|a

对于每一个新的节点,这种格式的扩容输入文件要求下列内容:

参数 合法值 描述
hostname 主机名 节点主机的主机名。
port 一个可用的端口号 节点的数据库监听器端口,在现有节点的端口基数上增加。
datadir 目录名 根据sd_executor_configuration系统catalog的节点数据目录位置。
dbid 整数。不能与现有的dbid值冲突。 用于该Executor的数据库ID。 用户输入的值应该是从系统目录sd_executor_configuration中显示的现有dbid值开始顺序增加的值。 例如,要在一个现有10个Executor的阵列(dbid值从1-10)中增加四个节点,应列出新的dbid值11、12、13和14。
content 整数。不能和现有的content值冲突。 Executor的内容ID, 从现有的值开始顺序增加。 更多信息请见sd_executor_configuration的参考信息中的content
role 'p',或者‘a','b','c'… mirror节点的角色,’p'代表primary,'a','b','c'…等等依次代表第一个mirror,第二个mirror,第三个mirror…。

表 1. 用于扩容配置文件的数据

运行scexpand初始化新节点

在用户创建了一个输入文件之后,运行scexpand以初始化新的节点。

使用配置文件运行scexpand命令步骤如下:

  1. 使用将要运行SeaboxMPP数据库的用户登录coordinator主机;例如,seabox

  2. 运行scexpand工具,通过-i指定输入文件。例如:

$ scexpand -i input_file

工具检测扩容schema是否存在。 如果scexpand schema存在,在开始一个新扩容操作前通过scexpand -c删除它。

当新的节点被初始化并且扩容schema被创建时,该工具会打印一个成功消息并且退出。

当初始化完成,可以连到数据库查看扩容schema。 scexpand schema存在于seaboxsql数据库中。

扩容失败回滚设置

可以回滚一个扩容操作(增加节点实例和主机),仅当它失败的时候。

用下列命令回滚失败的扩容:

scexpand --rollback
监控集群扩容状态

可以通过scexpand工具或查询扩容schema表来查看扩容状态。参考监控表的重分布获取更多信息。