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

MatrixDB初体验—单节点MatrixDB部署

漠南的工作笔记 2021-11-06
1376

最近时序数据库MatrixDB比较受人关注,我也蹭个热点,感受一把。

如下是我安装单节点MatrixDB的记录,依赖官方文档https://ymatrix.cn/doc/4.3/get-started, 文章仅作为我的初学记录,希望对其他正在准备开始学习的朋友们一些帮助

学习MatrixDB,如果你有感兴趣的话题,欢迎留言讨论,或者你想了解MatrixDB哪些内容,我会把他列入学习计划,我愿意为你解答!^_^

环境说明

CPU:2

Mem: 2GB 

Disk: 60GB

安装流程

依赖包和数据库软件安装

yum -y install centos-release-scl
yum -y install rh-python36
scl enable rh-python36 bash

yum install -y epel-release || yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1).noarch.rpm
yum install -y https://apache.jfrog.io/artifactory/arrow/centos/$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1)/apache-arrow-release-latest.rpm
yum install -y arrow-libs-3.0.0 parquet-libs-3.0.0

systemctl stop firewalld.service
systemctl disable firewalld.service

sed s/^SELINUX=.*$/SELINUX=disabled/ -i /etc/selinux/config
setenforce 0

hostnamectl set-hostname mdw

echo "`hostname -I|awk '{print $1}'` mdw " >> /etc/hosts

mkdir -p /data/soft && cd /data/soft
yum install -y matrixdb-4.3.0.community-1.el7.x86_64.rpm

source /usr/local/matrixdb/greenplum_path.sh
yum install -y gcc python3-devel
pip3 install --upgrade setuptools
pip3 install argparse psutil pygresql pyyaml

图形化部署

cat /etc/matrixdb/auth.conf

http://192.168.245.138:8240/
> 通过图形化界面可以实现:
- 准备初始化节点
- 收集系统信息
- 配置数据库
- 设置密码
- 执行部署任务
- 数据库初始化完成

配置ACL和环境变量

cat <<EOF >> /home/mxadmin/.bashrc
# add by matrixDB DBA
source /usr/local/matrixdb/greenplum_path.sh
export PGDATABASE=postgres
EOF

source /home/mxadmin/.bashrc

cat <<EOF >> /mxdata/master/mxseg-1/pg_hba.conf
# add by matrixDB DBA
host all all 0.0.0.0/0 md5
EOF

gpstop -u

安装监控

默认情况下数据库matrixmgr
已经创建,并且已经安装部署了数据库插件matrixts
matrixmgr
,此时我们只需要激活指标收集

SELECT mxmgr_init_local();

下载和安装Grafana

wget https://dl.grafana.com/oss/release/grafana-7.3.6-1.x86_64.rpm
sudo yum install -y grafana-7.3.6-1.x86_64.rpm

sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl status grafana-server
sudo systemctl enable grafana-server

访问URL

http://mdw:3000
> 通过grafana,可以操作:
- 配置数据源
- 导入模板

监控管理—终止采集

SELECT mxmgr_remove_all('local');

监控管理—再次激活数据采集

SELECT mxmgr_deploy('local');

常见安装问题搜集

1.缺少依赖包 libparquet.so.300 和 libarrow.so.300 需要parquet和arrow,可以按照文档安装(https://ymatrix.cn/doc/4.3/get-started)

yum install -y epel-release || yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1).noarch.rpm
yum install -y https://apache.jfrog.io/artifactory/arrow/centos/$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1)/apache-arrow-release-latest.rpm
yum install -y arrow-libs-3.0.0 parquet-libs-3.0.0


数据库体验

启动数据库

gpstart -a

停止数据库

gpstop -a -M fast

重启数据库

gpstop -ar -M fast

重载配置文件

gpstop -u

仅针对可以重载生效的参数,如statement_mem
pg_hba.conf

查看集群状态

gpstate

查看集群配置

gpconfig -s

修改集群配置

gpconfig -c {配置名} -v {值}

可以通过重载或者重启数据库生效

数据库的进程架构

MatrixDB的进程结构主要分为两个部分, 一个部分是数据库进程

[root@mydb1 ~]# pstree -p 25789 -a -s
systemd,1 --switched-root --system --deserialize 22
└─postgres,25789 -D /mxdata/master/mxseg-1 -p 5432 -c gp_role=dispatch
├─postgres,25790
├─postgres,25792
├─postgres,25793
├─postgres,25794
├─postgres,25795
├─postgres,25796
│ └─{postgres},25798
├─postgres,25797
│ └─{postgres},25799
├─postgres,25801
│ └─{postgres},25807
├─postgres,25802
├─postgres,25803
├─postgres,25804
├─postgres,25805
├─postgres,25806
│ └─{postgres},25808
├─postgres,25841
├─postgres,26485
│ └─{postgres},26486
└─postgres,26538
└─{postgres},26539


[root@mydb1 ~]# ps -ef | grep postgres
mxadmin 25789 1 0 12:34 ? 00:00:00 /usr/local/matrixdb-4.2.0.community/bin/postgres -D /mxdata/master/mxseg-1 -p 5432 -c gp_role=dispatch
mxadmin 25790 25789 0 12:34 ? 00:00:00 postgres: 5432, master logger process
mxadmin 25792 25789 0 12:34 ? 00:00:00 postgres: 5432, checkpointer
mxadmin 25793 25789 0 12:34 ? 00:00:00 postgres: 5432, background writer
mxadmin 25794 25789 0 12:34 ? 00:00:00 postgres: 5432, walwriter
mxadmin 25795 25789 0 12:34 ? 00:00:00 postgres: 5432, stats collector
mxadmin 25796 25789 0 12:34 ? 00:00:00 postgres: 5432, dtx recovery process con1
mxadmin 25797 25789 0 12:34 ? 00:00:00 postgres: 5432, ftsprobe process
mxadmin 25801 25789 0 12:34 ? 00:00:00 postgres: 5432, monitor
mxadmin 25802 25789 0 12:34 ? 00:00:00 postgres: 5432, matrixgate warden
mxadmin 25803 25789 0 12:34 ? 00:00:00 postgres: 5432, logical replication launcher
mxadmin 25804 25789 0 12:34 ? 00:00:00 postgres: 5432, ic proxy process
mxadmin 25805 25789 0 12:34 ? 00:00:00 postgres: 5432, sweeper process
mxadmin 25806 25789 0 12:34 ? 00:00:00 postgres: 5432, global deadlock detector process
mxadmin 25841 25789 0 12:34 ? 00:00:00 postgres: 5432, walsender mxadmin 192.168.245.140(59840) streaming 0/C30D158
mxadmin 26485 25789 0 12:42 ? 00:00:00 postgres: 5432, mxadmin matrixmgr 127.0.0.1(42050) con48 cmd3 idle
mxadmin 26538 25789 0 12:43 ? 00:00:00 postgres: 5432, mxadmin matrixmgr 127.0.0.1(42068) con50 cmd959 INSERT

另一个部分是数据库后台管理进程

# pstree -p 24936 -a -l -s
systemd,1 --switched-root --system --deserialize 22
└─supervisord,24936 -c /etc/matrixdb/supervisor.conf
├─cylinder,24945
│ ├─{cylinder},24951
│ ├─{cylinder},24952
│ ├─{cylinder},24953
│ ├─{cylinder},24954
│ ├─{cylinder},24956
│ ├─{cylinder},24957
│ └─{cylinder},26964
├─mxctl,26470 gate exec --path /usr/local/matrixdb --dbhost 127.0.0.1 --dbport 5432 --username mxadmin --password --db2gatehost mydb1 --db2gateport 4374 --postport4329
│ ├─mxgated,26476 --config /tmp/mxgate.conf --hidden
│ │ ├─{mxgated},26477
│ │ ├─{mxgated},26478
│ │ ├─{mxgated},26479
│ │ ├─{mxgated},26480
│ │ ├─{mxgated},26487
│ │ ├─{mxgated},26488
│ │ └─{mxgated},26540
│ ├─{mxctl},26471
│ ├─{mxctl},26472
│ ├─{mxctl},26473
│ ├─{mxctl},26474
│ └─{mxctl},26475
├─mxctl,26498 telegraf exec --path /usr/local/matrixdb --gatehost mydb1 --gateport 4329 --gpname mydb1
│ ├─telegraf,26504 --config /tmp/telegraf.conf
│ │ ├─{telegraf},26505
│ │ ├─{telegraf},26506
│ │ ├─{telegraf},26507
│ │ ├─{telegraf},26508
│ │ ├─{telegraf},26510
│ │ ├─{telegraf},26515
│ │ └─{telegraf},26516
│ ├─{mxctl},26499
│ ├─{mxctl},26500
│ ├─{mxctl},26501
│ ├─{mxctl},26502
│ └─{mxctl},26503
├─mxui,24944
│ ├─{mxui},24946
│ ├─{mxui},24947
│ ├─{mxui},24948
│ ├─{mxui},24949
│ └─{mxui},25298
├─{supervisord},24937
├─{supervisord},24938
├─{supervisord},24939
├─{supervisord},24940
├─{supervisord},24941
├─{supervisord},24942
├─{supervisord},24943
├─{supervisord},24950
├─{supervisord},25373
└─{supervisord},26511

经过资料查找,发现这些管理进程的主要功能:

•Supervisor(http://supervisord.org)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制 作为一个监听进程,他有如下的特点:

    •随MatrixDB安装启动,作为常驻系统服务    •拥有root权限    •核心功能是启动并托管其他MatrixDB服务进程,包括cylinder、mxctl、mxgated、telegraf、mxui等    •有状态,且supervisor自己负责状态的持久化和高可用    •暴露RPC接口,MatrixDB其他组件通过RPC接口来注册服务进程或获取状态信息    •通过跨主机的RPC调用,实现从任何一台主机掌握其他任何主机的状态,或者在其他主机上执行命令、服务

    •cylinder进程:        •承担一些中长周期的定期处理,比如自动分区管理的worker

    •mxctl        •实现一切在本机进行的管理操作        •mxctl gate实现在本地主机上启动一个新的mxgate进程,用于数据导入        •mxctl telegraf实现本地主机上启动一个新的telegraf进程,用于监控数据        •用户通过调用UDF来部署matrixgate和telegraf,收集并存储所有主机上的监控信息(监控采集)        •mxctl实现在本机进行的管理操作        •mxctl集成了Supervisor的RPC客户端,如果操作的主机--host为非本机,再回自动RPC目标机的Supervisor,通知远程的Supervisor调用其本地的mxctl完成操作        •mxctl和Supervisor配合使用可以将任何远程操作都透明地转化为本地操作,无需为单机和分布式分别开发两套代码,或者受制于SSH    •mxui

        •暴露http服务的8240端口        •MXUI通过Supervisor获取集群连接信息和用户登陆认证;可以直接连接数据库查询信息,也可以调用MXCTL进行管理操作

安装过程中的整体感受

    •页面化安装数据库比较简单。    •集群监控部分配置数据源比较费劲,一旦name书写错误监控就会报错,最好文档可以粘贴这些values    •监控比较简陋,需要再进行丰富


文章转载自漠南的工作笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论