佳实践|SequoiaDB巨杉数据库在线扩容(下)

2022-03-23 00:00:00 数据 节点 扩容 分布 切分

在本文中,我们将引导大家,一步一步来完成SequoiaDB数据库集群的在线扩容。

话不多说,直接开始吧!

02 SequoiaDB扩容佳实践

2.1 总体步骤

扩容操作步骤分为两部分:

  • 数据存储扩容:包括主机配置、集群中添加主机、数据节点扩容、数据重分布、验证等。

  • 计算扩容:主要是增加协调节点、增加计算实例。

注:SequoiaDB支持图形化界面和命令行两种方式,本文采用图形化方式。

SequoiaDB数据库扩容过程如下图所示:

2.2 环境描述

容量及服务器规划:

规划

当前集群

新增

容量

600G

600G

数据目录

/data/sequoiadb

/data/sequoiadb

服务器个数

3

3

IP地址、主机名

192.168.100.201  sdb01

192.168.100.202  sdb02

192.168.100.203  sdb03

192.168.100.204  sdb04

192.168.100.205  sdb05

192.168.100.206  sdb06

节点规划:

节点

当前集群

新增

计算实例

3个

增加3个

协调节点

3个

增加3个

编目节点

3个,1主2备

保持现状

数据节点

3个,group[1,2,3]

3个,group[4,5,6]

2.3 扩容操作步骤

2.3.1. 主机配置

将服务器加入现有集群前,需修改操作系统配置,如内核参数、用户限制、关闭防火墙等。

1. 修改/etc/hosts文件

cat /etc/hosts                        # 修改后查看,确保新、旧主机都加入

2. 在新主机关闭防火墙

systemctl stop firewalld.service      # 关闭防火墙

3. 在新主机禁用SELINUX

sed -i "s/SELINUX=.*/SELINUX=disabled/g" etc/selinux/config

关于更多主机配置,可参考官网文档的【SequoiaDB在Linux环境的安装推荐】(http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1590375382-edition_id-500)。

2.3.2 将新服务器加入当前集群

登录SAC(SequoiaDB Administrator Center)网页控制台(http://192.168.100.201:8000)

1. 点击【部署】>【主机】>【添加主机】。

2. 在【扫描主机】部分,输入要添加的主机名、口令,点击【扫描】测试连通性,成功后右侧会出现主机列表,点【下一步】。

3. 显示已选主机的配置信息,如CPU/内存/文件系统/网卡等,勾选所有主机,并选中安装目录所在的文件系统,点【下一步】。

4. 等待绿色进度条完成后,添加主机结束。

2.3.3 创建数据组

  1. 打开【部署】>【分布式存储】>【存储集群操作】>【扩容】。

2. 点击【选择安装节点的主机】,勾选新安装的3台主机sdb0[4,5,6],扩容模式选择【添加分区组】,分区组选3,副本数和原来的数据一致,选3,点击【下一步】。

3. 新增加的3个数据组,共9个数据节点,在【类型】列已标识。点【下一步】。

4. 待绿色进度条完成后,数据组创建完毕。

2.3.4 数据重分布

场景分类:

在《SequoiaDB在线扩容佳实践》(上篇)中,我们列举了5张表的数据分布场景。

集合名称(表)

分区类型

所属集合

空间

数据域

数据分布

orders_hash

水平Hash

bills

d_bills

group[1,2,3]

orders_range

水平Range

bills

-

group[1,2,3]

orders_

vertical

垂直分区

bills_hist

-

group[1,2]

orders

多维分区

bills

d_bills

group[1,2,3]

orders_hist

水平Hash

bills_hist

-

group[1,2,3]

orders表,是多维分区,操作相对更复杂,因此本篇以这个场景,来演示数据的重分布过程。

多维分区原理图

环境描述:目前orders表是一个主子表,采用了多维分区,表结构如下。

字段

数据类型

描述

order_id

int

订单编号

p_date

date

订单生成日期

location

varchar(100)

交易发生地点

  • orders表,首先按照p_date字段,拆分成orders_2017, orders_2018, orders_2019, orders_2020四个子表;其次,每个子表,又是Hash分区表,按照order_id字段,分散在不同的数据组中。

  • 数据域d_bills,包含group[1,2,3]这3个数据组。由于集合空间bills指向了域d_bills,所以bills下创建的分区表,将会默认分布在group[1,2,3]数据组上。

因此,扩容后,还需要做三个操作:

1. 向域d_bills中添加新建的数据组,使其包含group[1,2,3,4,5,6],以便后续新建的分区表,数据默认分布在全部6个数据组;

2. 新建子表orders_2021,并挂载到主表;

3. 将现存数据,进行重分布,使其分布到数据组group[1,2,3,4,5,6]中。

具体操作步骤如下:

1. 向域中添加数据组。首先打开【监控】>【资源】,选中域d_bills,点击【编辑域】。

然后将【待选列表】中新建的3个数据组,增加到右侧的列表,并将【自动切分】设为True,点【确定】。

后查看域状态,确认数据组添加成功,自动切分已打开。

**Note:**AutoSplit:是域的一个参数,用来控制在该域中新建的集合,是否开启自动切分功能,默认为false。

2. 新建子表并挂载到主表。首先打开【数据】>【集合】>【新建集合】,新建子表orders_2021,集合类型选择【水平散列分区】,分区键为order_id,打开自动切分。

然后在【集合】标签页中,点击【挂载集合】,将orders_2021子表,挂载到orders表。【分区范围】中输入主表的分区键p_date,范围选择2021-01-01~2022-01-01。

3. 数据切分。在【集合】标签页中,点击【切分数据】,将每个子表中的数据,按比例切分到新建的数据组。以orders_2017子表为例,将group1中的50%切分到group4,group2中的50%切分到group5,group3中的50%切分到group6。其他子表操作类似。

2.3.5 数据重分布验证

1. 查看重分布后的数据分布。对子表orders_2017进行了切分后,现在查看数据是否均匀分布在6个数据组中。

su – sdbadmin                         # 切换到SequoiaDB用户

orders_2017共2500条数据,从结果看到,切分后数据均匀分布在6个数据组中。

2. 模拟新业务数据生成后的数据分布。向本次扩容后新建的子表orders_2021中插入测试数据,查看数据是否均匀分布在6个数据组中。

//向orders表插入10000条测试数据,让其坐落在orders_2021子表内

从结果看到,该子表数据均匀分布在6个数据组中。

2.3.6 协调节点扩容

1. 打开【部署】>【分布式存储】>【存储集群操作】>【扩容】页面,点击【选择安装节点的主机】,勾选新增的主机,【扩容模式】选择添加副本数,协调节点数填3,代表增加3个协调节点。点【下一步】开始扩容。

2. 在【类型】列,新增的3个协调节点,已经标识出来。

3. 绿色进度条完成后,协调节点扩容完成。

2.3.7  计算实例扩容

进入【部署】>【数据库实例】页,点击【添加实例】按钮,实例类型选择MySQL,再选择主机名,输入root口令、数据目录,点【下一步】即可完成添加。

2.3.8 扩容结果验证

通过【监控】>【节点】>【分区组列表】,可以看到,数据节点、协调节点均添加成功。在将各表均完成重分布后,每个数据节点的记录数大致均衡。

03 总结

通过上、下两篇,我们为大家介绍了巨杉数据库SequoiaDB的在线扩容佳实践,其间也对数据库的分区类型、域、数据切分等概念做了讲解。通过本文,希望能为大家提供一些SequoiaDB扩容操作的指导。

在不同的生产环境中,数据库的容量需求、数据分布方式、容量管理策略,均有所差异,我们应该结合具体的业务场景,进行规划和实施。

后,和往常一样,再抛出几个问题,供大家思考:

  • 不同属性的业务数据,对于访问性能的要求不同(比如冷/温/热数据)。能否实现HDD/SSD的混合部署,从而对冷热数据进行分离存储?

  • 随着时间的推移,数据的时间属性发生变化,很多时候,运维人员需要结合业务需求,进行数据生命周期管理。在SequoiaDB中,如何实现?

相关文章