暂无图片
暂无图片
7
暂无图片
暂无图片
暂无图片

磐维2.0数据库分布式部署与初步试用

原创 拨开乌云见阳光 2024-06-11
9761

一、磐维数据库简介

中国移动磐维数据库(ChinaMobileDB),简称“磐维数据库”(PanWeiDB)。是中国移动信息技术中心首个基于中国本土开源数据库openGauss打造的面向ICT基础设施的自研数据库产品。具有高性能、高可靠、高安全、高兼容等特点。


磐维数据库 V1.0 于2022年12月29日发布。
磐维数据库 V2.0 于2023年11月30日发布。
磐维 2.0 目前提供两种部署方式:一种是集中式部署;另一种是分布式部署。
之前介绍了磐维 2.0 数据库集中式(一主两备)的安装,此篇文字是记录磐维 2.0 数据库分布式的部署和使用过程。

二、系统要求

1、硬件环境要求

配置项

配置要求

内存

功能调试建议 32GB 以上。

性能测试和商业部署时,单实例部署建议 128GB 以上。

复杂的查询对内存的需求量比较高,在高并发场景下,可能出现内存不足。此时建议使用大内存的机器,或使用负载管理限制系统的 并发。

CPU

功能调试最小 1×8 核 2.0GHz。

性能测试和商业部署时,单实例部署建议 2×16 核 2.0GHz。

CPU 超线程和非超线程两种模式都支持。

虚拟机环境下,指令集应包含 rdtscp

磁盘

用于安装 PanWeiDB 的硬盘需最少满足如下要求: 

• 至少 1GB 用于安装 PanWeiDB 的应用程序

• 每个主机需大约 300MB 用于元数据存储

• 预留 70%以上的磁盘剩余空间用于数据存储

建议系统盘配置为 Raid1,数据盘配置为 Raid5,且规划 4 组 Raid5 数据盘用于安装 PanWeiDB。

有关 Raid 的配置方法请参考硬件厂家的手册或互联网上的方法进行 配置,其中 Disk Cache Policy 一项需要设置为 Disabled,否则机器异常掉电后有数据丢失的风险。

PanWeiDB 支持使用 SSD 盘作为数据库的主存储设备,支持 SAS 接口和 NVME 协议的 SSD 盘,以 RAID 的方式部署使用

网络

300 兆以上以太网。

建议网卡设置为双网卡冗余 bond。

有关网卡冗余 bond 的配置方法请参考硬件厂商的手册或互联网上的方法进行配置。

推荐配置:

资源

物理机环境

虚拟机环境

CPU

2*10(cores)及以上

2*10(cores)及以上

内存

128G 及以上

单个节点 8G 及以上

注意:若一台虚拟机上部署 N 个节点,要求内存预留8N

磁盘

SSD 500GB 及以上

SSD/SAS/SATA 100GB 及以上

网络

10GB 及以上

1000MB 或 10G

2、软件环境要求

软件类型

配置描述

Linux 操作系统

ARM:

CentOS 7.4-7.9

Debian 10.3、10.10

Kylin V10

openEuler 22.09

UOS V20

Uniontech 20

X86:

BCLinux 21.10

CentOS 7.4-7.9

Debian 8.9、9.0、10.3

Kylin V10、V3.5、V3.3

Kylinsecos 3.5

nfs 4.0

openEuler 20.03 LTS

Rhel 8.6、8.7

ubuntu 18.04

UOS V20

Uniontech 20

Linux 文件系统

剩余 inode 个数 > 15 亿(推荐)

指令集

rdtscp(仅虚拟机环境需要)

3、软件依赖要求

所需软件

建议版本

bison

2.7-4

flex

2.5.31 以上

libaio

0.3.109-13

patch

2.7.1-10

bzip2

1.0.6


三、安装前准备

1、主机准备及规划

(1)创建用于部署数据库的虚拟机

由于是仅用于测试,而且本机资源相当有限,因此准备在三台vmware虚机上部署磐维分布式数据库集群。


三台vmware虚机配置如下:

主机名主机IPCPU内存SWAP
panwei-d01192.168.20.412核4GB

4GB

panwei-d02192.168.20.422核4GB

4GB

panwei-d03192.168.20.432核4GB

4GB

(2)最小化安装openEuler

下载openEuler-20.03操作系统文件,并最小化安装到以上创建的虚拟机上

openEuler-20.03-LTS-SP4-x86_64 操作系统ISO文件下载地址如下:

https://www.openeuler.org/en/download/archive/

安装后的操作系统信息如下:


(3)规划主机角色及端口

三台主机在分布式数据库集群中的角色及端口规划如下:

主机名 panwei-d01 panwei-d02 panwei-d03
主机IP 192.168.20.41 192.168.20.42 192.168.20.43
ha角色端口 ha:20001
dcs角色端口 dcs:2379 dcs:2379 dcs:2379
gtm角色端口及agent端口 gtm:6666 8001 gtm:6666 8002
cn角色端口及agent端口 cn:5432 8003 cn:5432 8004 cn:5432 8005
dn1角色端口及agent端口 dn1_3(S):15432 8008 dn1_1(P):15432 8006 dn1_2(S):15432 8007
dn2角色端口及agent端口 dn2_2(S):20010 8010 dn2_3(S):20010 8011 dn2_1(P):20010 8009


2、安装系统依赖包

启动三台虚拟机,挂载好openEuler的ISO文件,并设置好本地yum源,然后执行如下:

rpm -q bison flex libaio patch bzip2 tar

对于缺失的系统依赖包,要安装上:

yum install -y bison flex patch tar


3、检查是否支持 rdtscp

cat /proc/cpuinfo | grep rdtscp


4、关闭防火墙和SeLinux

systemctl stop firewalld
systemctl disable firewalld
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0


5、创建用户组和用户

groupadd dbgrp
useradd -m -d /home/omm omm -g dbgrp
passwd omm

注:对于设置的omm的密码,要牢记。


6、添加omm用户至sudoer列表

visudo

添加如下内容:

omm ALL=(ALL) NOPASSWD:ALL


7、配置内核参数

vi /etc/sysctl.conf
添加
kernel.sem = 40960 2048000 40960 20480

执行sysctl -p 使之生效。


8、采用 NTP 服务方式来保证各节点间的时间同步

由于是本地虚机测试环境,并不是生产环境,因此保证三台虚机时间相同即可,此步略过。


9、配置互信

在所有节点创建 omm 用户免密登录。需在所有节点使用 omm 用户进行如下操作:

mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa

将公钥文件上传至同集群所有节点(包括本节点),即可实现免密登录(此操作需输入omm密码)
ssh-copy-id omm@各节点主机IP


10、创建安装目录

mkdir -p /home/omm/omm_package


11、上传数据库安装文件并解压

将数据库安装文件上传到第一个虚机的安装目录,并解压,过程如下:

cd /home/omm/omm_package
tar xvf PanWeiDB_V2.0_dist_S2.0.1_B02_x86_64.tar.gz
tar xvf PanWeiDB_V2.0_dist_S2.0.1_B02_x86_64_om.tar.gz


12、编辑分布式安装配置的yml文件

经过以上操作,在安装目录下,有一个文件panwei.yml,这是分布式安装的配置文件,可以按要求,对其进行编辑。

示例内容如下:



四、安装分布式数据库集群

以omm登录第一台虚机,执行安装,安装过程大约10分钟左右,如果成功,则显示Success,操作过程截图如下:


安装过程的详细信息(包括报错信息),可以查看安装日志文件,如下所示:


成功安装后,可以看到用于集群DCS的etcd状态如下:



五、检查分布式数据库集群各节点组件的状态



六、访问数据库

是通过CN节点,访问分布式磐维数据库的。在本次部署的分布式数据库集群中,CN节点的访问端口均为5432

1、通过系统自带的命令行客户端gsql访问数据库

关于gsql的使用,可以参看“gsql --help”的帮助信息。以下是通过CN节点的5432端口登录数据库的操作截图:


注:上图中的数据库用户crm,以及数据库crmdb,是后创建的,用于测试。


2、通过DBeaver图形客户端访问数据库

(1)客户端白名单设置

将客户端的IP或IP网段,设置为可访问数据库的白名单,操作示例如下:


(2)启动DBeaver客户端程序


(3)新建立数据库连接

在设置好数据库连接的相关信息后,点击左下侧的“测试连接”,如成功连接,则显示如下:


成功登录数据库后,显示如下:



七、在磐维分布式数据库中对表数据分布的测试

1、默认创建的表

(1)以默认的方式创建一个测试表

CREATE TABLE student (
id int,
name varchar(20)
);

对于以默认方式创建的表,默认是哈希分片的方式,将表数据分布到各DN数据组中,如下:


(2)向表中插入数据

向表中批量插入100条测试数据

(3)查看表数据的分布情况


可以看到以上表中的数据,默认是以第一个列做为哈希散列,将数据比较均衡的分布到各个DN节点上。

而对于实际的业务数据表,为了提高整体的访问性能,一般应选用经常JOIN的列或GROUP的列,做为哈希分布的列。

(4)哈希分布表的查询计划

对于全表的查询,是需要遍历所有DN节点。如下所示:


而对于在某个DN节点的上数据,则仅需查询这个DN节点,如下所示:



2、复制表

对于数据量比较小,数据变更不大,而且会被频繁访问的表,比如一些业务系统的参数表,则可创建为复制表。
这是在每个DN上都有一份全量的表数据。这样可避免join的重分布操作,减少网络开销,提升性能。

(1)创建复制表

CREATE TABLE tab_rep (
id int,
name varchar(20)
) distribute by replication;


(2)向复制表中插入数据

向复制表中插入10条测试数据。

(3)查看复制表数据的分布情况


可以看到,复制表,在每个DN上,都有一份完整的数据。

(4)复制表的查询计划

由于复制表是在每个DN节点上都有一份完整的数制,因此对于复制表的查询,仅查询CN当前连接的DN节点上的表数据,如下:


对于表数据的分布,除了上述的哈希表、复制表,还有range 和 list 等方式,后续再进行测试。


八、高可用测试

通过手工停掉磐维数据库集群各节点上的数据库服务进程(gtm、cn、dn),来测试整个集群的高可用性。
在手工停掉以上服务进程后,系统会很快监测到这个情况,并自动重启和恢复了相应服务进程。
这个监护保障机制,是通过ha_agent机制来实现的。
感兴趣的小伙伴,可以尝试,你会发现磐维数据库的抗干扰和自愈能力确实很强!


九、启停数据库集群

1、停止集群


2、启动集群


注:由于我本机的资源有限,三台虚拟都是建在外挂U盘上的,因此数据库集群启动时间稍长,大约7~8分钟。

最后修改时间:2024-06-11 10:09:13
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

目录
  • 一、磐维数据库简介
  • 二、系统要求
    • 1、硬件环境要求
    • 2、软件环境要求
    • 3、软件依赖要求
  • 三、安装前准备
    • 1、主机准备及规划
      • (1)创建用于部署数据库的虚拟机
      • (2)最小化安装openEuler
      • (3)规划主机角色及端口
    • 2、安装系统依赖包
    • 3、检查是否支持 rdtscp
    • 4、关闭防火墙和SeLinux
    • 5、创建用户组和用户
    • 6、添加omm用户至sudoer列表
    • 7、配置内核参数
    • 8、采用 NTP 服务方式来保证各节点间的时间同步
    • 9、配置互信
    • 10、创建安装目录
    • 11、上传数据库安装文件并解压
    • 12、编辑分布式安装配置的yml文件
  • 四、安装分布式数据库集群
  • 五、检查分布式数据库集群各节点组件的状态
  • 六、访问数据库
    • 1、通过系统自带的命令行客户端gsql访问数据库
    • 2、通过DBeaver图形客户端访问数据库
      • (1)客户端白名单设置
      • (2)启动DBeaver客户端程序
      • (3)新建立数据库连接
  • 七、在磐维分布式数据库中对表数据分布的测试
    • 1、默认创建的表
      • (1)以默认的方式创建一个测试表
      • (2)向表中插入数据
      • (3)查看表数据的分布情况
      • (4)哈希分布表的查询计划
    • 2、复制表
      • (1)创建复制表
      • (2)向复制表中插入数据
      • (3)查看复制表数据的分布情况
      • (4)复制表的查询计划
  • 八、高可用测试
  • 九、启停数据库集群
    • 1、停止集群
    • 2、启动集群