佳实践|SequoiaDB巨杉数据库在线扩容(下)
在本文中,我们将引导大家,一步一步来完成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 创建数据组
- 打开【部署】>【分布式存储】>【存储集群操作】>【扩容】。
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中,如何实现?
相关文章