近时序数据库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
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 12:34 ? 00:00:00 postgres: 5432, walsender mxadmin 192.168.245.140(59840) streaming /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 •监控比较简陋,需要再进行丰富
来源 https://mp.weixin.qq.com/s/yv7HJgTcGWLDpBG1LJFuNg