当前位置:   article > 正文

数据库系列之SequoiaDB高可用集群部署(一)

sequoiadb

SequoiaDB作为存储引擎,支持高并发的HTAP场景。本位总结运维分析项目中使用SequoiaDB作为数据存储的高可用部署实战,并接入Kafka进行高并发的更新业务和Spark进行高并发的批量查询业务。


1、SequoiaDB高可用集群架构
1.1 SequoiaDB基本介绍

SequoiaDB巨杉数据库是一款金融级分布式关系型数据库,主要面对高并发联机交易型场景提供高性能、可靠稳定以及无限水平扩展的数据库服务。SequoiaDB作为分布式数据库,由数据库存储引擎和数据库实例两大模块组成,可以将SequoiaDB作为数据存储引擎,在其中创建多种类型的数据库实例。目前支持MySQL、MariaDB、PostgreSQL和SparkSQL四种关系型数据库实例、JSON文档类数据库实例、以及S3对象存储的非结构化数据实例。
在这里插入图片描述

1.2 SequoiaDB高可用集群架构

集群模式是启动SequoiaDB的标准模式,至少需要三个节点。在集群环境下,SequoiaDB数据库需要三种角色的节点,分别为:

  • 数据节点,保存用户数据信息
  • 编目节点,保存数据库的元数据信息
  • 协调节点,作为数据请求部分的协调者,本身并不参与数据的匹配与读写操作,而仅仅是将请求分发到所需要处理的数据节点

在这里插入图片描述

集群模式的最小配置中,每种角色的节点至少启动一个,才能构成完整的集群模式。集群模式中客户端或应用程序直接连接到协调节点,其余数据节点与编目节点对应用程序完全透明。
应用程序本身不需关心数据存放在哪个数据节点,协调节点会对接收到的请求解析,自动将其发送到需要的数据节点上进行处理。在集群模式下,复制组之间的数据无共享,复制组内的节点间进行异步数据复制,保证数据的最终一致性。

1.3 SequoiaDB-MySQL分布式数据库架构

SDB支持创建MySQL实例且完全兼容MySQL。用户可以使用SQL语句访问SequoiaDB数据库,完成对数据的增删查改以及其他MySQL语法操作。
在这里插入图片描述

2、SDB高可用集群部署实战
2.1 SDB集群环境规划
2.1.1 高可用部署架构

高可用部署方式适用于对可靠性要求高,但数据量不大、总吞吐要求不高的应用场景。在本次高可用部署实战中采用高可用部署架构,节点分布如下所示:在该部署中,在三台服务器上,都部署有数据节点和编目节点,三个数据节点组成一个副本组,三个编目节点组成副本集群。协调节点部署在业务应用的服务器上,也可以将应用/协调节点合部到数据库服务器上。这种部署方式得优势就是高可靠性,任意一台服务器故障,数据的读写都不会受到影响。但数据容量与单个服务器的容量相同,且硬件成本相对较高。

在这里插入图片描述
SDB集群会创建协调节点,编目节点和数据节点,具体配置如下:
在这里插入图片描述

2.1.2 读写分离方案

SequoiaDB数据库支持读写分离,以下为例,Kafka消费数据写入到主节点,实时联机查询和批量分析作业访问从节点。
在这里插入图片描述

2.1.3 多维分区

SequoiaDB支持多维分区操作,将一些大表划分为主分区和子分区集合,先对子集合做数据库分区,然后再通过表分区将子集合挂载到主集合上。当需要访问某一范围内的数据时,既可以将数据访问集中在若干个子集合中,又能同时发挥不同复制组并行计算的能力,从而提高处理速度和性能。

在这里插入图片描述

2.2 系统环境配置
2.2.1 配置主机名hostname
  1. 打开/etc/hostname文件,输入hostname名称
[root@tango-centos01 ~]# vi /etc/hostname
tango-centos01
  • 1
  • 2
  1. 确认hostname修改成功
[root@tango-centos01 ~]# hostname
tango-centos01
  • 1
  • 2
  1. 在其它服务器tango-centos02和tango-centos03进行同样的修改
[root@tango-centos02 ~]$ hostname
tango-centos02
[root@tango-centos03 ~]$ hostname
tango-centos03
  • 1
  • 2
  • 3
  • 4
2.2.2 配置主机名IP地址映射
  1. 修改/etc/hosts,将服务器节点的主机名与IP映射关系配置到该文件中
192.168.112.101 tango-centos01
192.168.112.102 tango-centos02
192.168.112.103 tango-centos03
  • 1
  • 2
  • 3
  1. 在其它服务器tango-centos02~tango-centos03进行同样的修改
2.2.3 关闭防火墙

确认防火墙已关闭

[root@tango-centos01 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)
  • 1
  • 2
  • 3
  • 4
  • 5
2.2.4 关闭SELinux

确认SELinux已关闭

[root@tango-centos01 ~]# sestatus
SELinux status:                 disabled
  • 1
  • 2
2.2.5 调整ulimit

在配置文件/etc/security/limits.conf中设置:

#<domain>      <type>    <item>        <value>
*              soft        core           0
*              soft        data           unlimited
*              soft       fsize           unlimited
*              soft         rss           unlimited
*              soft          as           unlimited
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
2.2.6 调整内核参数
  1. 添加下列参数至/etc/sysctl.conf文件调整内核参数
vm.swappiness = 0
vm.dirty_ratio = 100
vm.dirty_background_ratio = 40
vm.dirty_expire_centisecs = 3000
vm.vfs_cache_pressure = 200
vm.min_free_kbytes = 800
vm.overcommit_memory = 2
vm.overcommit_ratio = 85
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  1. 动态生效
[root@tango-centos01 vm]# sysctl -p
  • 1
2.2.7 关闭transparent_hugepage
  1. 编辑/etc/rc.local,在第一行“#!/bin/sh”的下一行添加如下两行内容:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
  • 1
  • 2
  1. 执行如下命令,使配置生效:
source /etc/rc.local
  • 1
  1. 检查是否成功关闭transparent_hugepage。分别执行如下两条命令,输出结果中都有 “[never]” 则表示成功关闭了transparent_hugepage,如果是 “never” 并且有 “[always]” 或者 “[madvise]” 则关闭失败:
[root@tango-centos01 transparent_hugepage]# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
[root@tango-centos01 transparent_hugepage]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
  • 1
  • 2
  • 3
  • 4
2.2.8 关闭NUMA

检查NUMA是否关闭,shell执行如下命令:

[root@tango-centos01 ~]# numastat
                           node0
numa_hit                  942223
numa_miss                      0
numa_foreign                   0
interleave_hit             14648
local_node                942223
other_node                     0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

如果输出结果中只有node0,则表示成功禁用了NUMA,如果有node1出现则失败。

2.3 安装部署
  1. 以root 用户登陆目标主机,解压 SequoiaDB 巨杉数据库产品包
tar -xzvf sequoiadb-3.4-linux_x86_64.tar.gz
  • 1
  1. 为解压得到的sequoiadb-3.4-linux_x86_64-installer.run安装包赋可执行权限
chmod u+x sequoiadb-3.4-linux_x86_64-installer.run
  • 1
  1. 使用root用户运行sequoiadb-3.4-linux_x86_64-installer.run包
./sequoiadb-3.4-linux_x86_64-installer.run  --mode text --SMS false
  • 1
  1. 使用 root 用户运行sequoiadb-3.2-linux_x86_64-installer.run包
./sequoiadb-3.4-linux_x86_64-enterprise-installer.run --mode text --SMS false
  • 1
  1. 提示选择向导语言,可根据需要输入1选择英文,或者输入2选择中文
Language Selection
Please select the installation language
[1] English - English
[2] Simplified Chinese - 简体中文
Please choose an option [1] : 2
  • 1
  • 2
  • 3
  • 4
  • 5
  1. 显示安装协议,输入1表示忽略阅读并同意协议,输入2表示读取完整协议内容
----------------------------------------------------------------------------
重要信息:请仔细阅读
下面提供了两个许可协议。
1. SequoiaDB 评估程序的最终用户许可协议
2. SequoiaDB 最终用户许可协议
如果被许可方为了生产性使用目的(而不是为了评估、测试、试用“先试后买”或演示)获得本程序,单击下面的“接受”按钮即表示被许可方接受 SequoiaDB 最终用户许可协议,且不作任何修改。
如果被许可方为了评估、测试、试用“先试后买”或演示(统称为“评估”)目的获得本程序:单击下面的“接受”按钮即表示被许可方同时接受(i)SequoiaDB 评估程序的最终用户许可协议(“评估许可”),且不作任何修改;和(ii)SequoiaDB 最终用户程序许可协议(SELA),且不作任何修改。
在被许可方的评估期间将适用“评估许可”。
如果被许可方通过签署采购协议在评估之后选择保留本程序(或者获得附加的本程序副本供评估之后使用),SequoiaDB 评估程序的最终用户许可协议将自动适用。
“评估许可”和 SequoiaDB 最终用户许可协议不能同时有效;两者之间不能互相修改,并且彼此独立。
这两个许可协议中每个协议的完整文本如下。
评估程序的最终用户许可协议
[1] 同意以上协议: 了解更多的协议内容,可以在安装后查看协议文件
[2] 查看详细的协议内容
请选择一个选项 [1] : 1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  1. 指定 SequoiaDB 安装路径,输入完毕后按回车。若没有输入直接回车,将使用默认的安装路径(/opt/sequoiadb)
----------------------------------------------------------------------------
请指定 SequoiaDB Server 将会被安装到的目录
安装目录 [/opt/sequoiadb]: /usr/local/sequoiadb
  • 1
  • 2
  • 3
  1. 询问是否强制安装,y 表示强制安装,安装时发现有相关进程存在则会尝试停止进程,N 表示非强制安装,安装时发现有相关进程存在,就会报错退出。默认为非强制安装
----------------------------------------------------------------------------
是否强制安装?强制安装时可能会强杀残留进程
是否强制安装 [y/N]: n
  • 1
  • 2
  • 3
  1. 提示配置 Linux 用户名和用户组,输入完毕后按回车。若没有输入直接回车,将会创建默认的用户名(sdbadmin)和用户组(sdbadmin_group)。该用户名用于运行 SequoiaDB 服务
数据库管理用户配置
配置用于启动SequoiaDB的用户名、用户组和密码
用户名 [sdbadmin]: 
用户组 [sdbadmin_group]: 
密码 [********] :
确认密码 [********] :
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  1. 提示配置服务端口,输入完毕后按回车。若没有输入直接回车,将使用默认的服务端口号(11790)
集群管理服务端口配置
配置SequoiaDB集群管理服务端口,集群管理用于远程启动添加和启停数据库节点
集群管理服务端口 [11790]:
  • 1
  • 2
  • 3
  1. 询问是否允许 SequoiaDB 巨杉数据库相关进程开机自启动,Y 表示允许,n 表示不允许。默认为允许
是否允许Sequoiadb相关进程开机自启动?
Sequoiadb相关进程开机自启动 [Y/n]: y
  • 1
  • 2
  1. 询问是否继续安装,Y 表示继续,n 表示不继续。默认为继续
设定现在已经准备将 SequoiaDB Server 安装到您的电脑.
您确定要继续? [Y/n]: y
  • 1
  • 2
  1. 当屏幕上显示以下信息,表示 SequoiaDB 已经安装完成
----------------------------------------------------------------------------
正在安装 SequoiaDB Server 于您的电脑中,请稍候.
 安装
 0% ______________ 50% ______________ 100%
 #########################################
----------------------------------------------------------------------------
安装程序已经完成安装 SequoiaDB Server 于你的电脑中.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  1. 切换到 sdbadmin 用户,进行安装检查。使用如下命令如能正常查到 SequoiaDB 的版本信息,说明 SequoiaDB 安装成功。
[sdbadmin@tango-centos01 ~]$ sequoiadb --version
SequoiaDB version: 3.4
Release: 32435
Git version: 485380326b0177244669df7906454a753a7fb900
2019-11-14-23.37.58
  • 1
  • 2
  • 3
  • 4
  • 5
  1. 在其它服务器tango-centos02~ tango-centos03安装SequoiaDB
2.4 高可用部署架构配置和启动
2.4.1 检查SDB配置服务状态
  1. 切换到sdbadmin用户
#su - sdbadmin
  • 1
  1. 检查SequoiaDB的配置服务状态
#service sdbcm status
[sdbadmin@tango-centos01 ~]$ service sdbcm status
Redirecting to /bin/systemctl status sdbcm.service
● sdbcm.service - SequoiaDB Daemon
   Loaded: loaded (/usr/lib/systemd/system/sdbcm.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2021-12-25 15:30:25 CST; 14min ago
  Process: 3746 ExecStart=/usr/local/sequoiadb/bin/sdbcmart (code=exited, status=0/SUCCESS)
 Main PID: 3749 (sdbcm)
   Memory: 28.6M
   CGroup: /system.slice/sdbcm.service
           ├─3747 sdbcmd
           └─3749 sdbcm(11790)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

确认系统提示“sdbcm is running”表示服务正在运行,否则请执行命令“service sdbcm start”重新配置服务程序:

2.4.2 启动临时协调节点
  1. 在任意一台数据库服务器上(以下步骤都只需要在这台服务器上操作),启动SequoiaDB Shell控制台
[sdbadmin@tango-centos01 ~]$ cd /usr/local/sequoiadb/ 
[sdbadmin@tango-centos01 sequoiadb]$ ./bin/sdb
  • 1
  • 2
  1. 连接到本地的集群管理服务进程sdbcm
> var oma = new Oma("localhost", 11790)
  • 1
  1. 创建临时协调节点
> oma.createCoord(18800, "/usr/local/sequoiadb/database/coord/18800")
  • 1
  1. 启动临时协调节点
> oma.startNode(18800)
  • 1
2.4.3 通过命令配置和启动编目节点
  1. 连接到临时协调节点,在 shell 命令中输入:
> var db = new Sdb("localhost",18800)
  • 1

其中18800为协调节点端口号

  1. 创建一个编目节点组
> db.createCataRG("tango-centos01", 11800, "/usr/local/sequoiadb/database/cata/11800")
  • 1
  • tango-centos01:第一台服务器主机名
  • 11800:为编目节点服务端口
  • /usr/local/sequoiadb/database/cata/11800:为编目节点的数据文件存放路径
  1. 添加另外两个编目节点
> var cataRG = db.getRG("SYSCatalogGroup");
> var node1 = cataRG.createNode("tango-centos02", 11800,"/usr/local/sequoiadb/database/cata/11800")
> var node2 = cataRG.createNode("tango-centos03", 11800,"/usr/local/sequoiadb/database/cata/11800")
  • 1
  • 2
  • 3
  1. 启动编目节点组
> node1.start()
> node2.start()
  • 1
  • 2
2.4.4 通过命令配置和启动数据节点
  1. 创建数据节点组
> var dataRG = db.createRG("datagroup1")
  • 1
  1. 添加数据节点
> dataRG.createNode("tango-centos01", 11820, "/usr/local/sequoiadb/database/data/11820")
> dataRG.createNode("tango-centos02", 11820, "/usr/local/sequoiadb/database/data/11820")
> dataRG.createNode("tango-centos03", 11820, "/usr/local/sequoiadb/database/data/11820")
  • 1
  • 2
  • 3
  1. 启动数据节点组
> dataRG.start()
  • 1
2.4.5 部署启动协调节点
  1. 创建协调节点组
> var rg = db.createCoordRG()
  • 1
  1. 创建协调节点
> rg.createNode("tango-centos02", 11810, "/usr/local/sequoiadb/database/coord/11810")
  • 1
  1. 启动协调节点
> rg.start()
  • 1
2.4.6 删除临时协调节点
  1. 连接到本地的集群管理服务进程 sdbcm
> var oma = new Oma("localhost", 11790)
  • 1
  1. 删除临时协调节点
> oma.removeCoord(18800)
  • 1

数据库配置启动完成

2.4.7 检查节点信息
[sdbadmin@tango-centos01 ~]$ sdblist
sequoiadb(11800) (4953) C
sequoiadb(11820) (5889) D
Total: 2
#sdblist -t all –l –m local
[sdbadmin@tango-centos02 ~]$ sdblist
sequoiadb(11800) (2065) C
sequoiadb(11820) (2122) D
sequoiadb(11810) (2167) S
Total: 3
[sdbadmin@tango-centos03 ~]$ sdblist
sequoiadb(11800) (1955) C
sequoiadb(11820) (2013) D
Total: 2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
2.4.8 创建集合空间和集合
[sdbadmin@tango-centos02 ~]$ sdb
Welcome to SequoiaDB shell!
help() for help, Ctrl+c or quit to exit
> var db=new Sdb("localhost",11810);
Takes 0.022171s.
> db.createCS("cs01");
localhost:11810.cs01
Takes 0.844069s.
> db.cs01.createCL("cl01");
localhost:11810.cs01.cl01
Takes 0.668449s.
> db.listCollections();
{
  "Name": "cs01.cl01"
}
Return 1 row(s).
Takes 0.133876s.
>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

参考资料:

  1. https://doc.sequoiadb.com/cn
  2. 大数据系列之日志数据实时分析

转载请注明原文地址:https://blog.csdn.net/solihawk/article/details/122382029
文章会同步在公众号“牧羊人的方向”更新,感兴趣的可以关注公众号,谢谢!
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/160287
推荐阅读
相关标签
  

闽ICP备14008679号