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

SQM-v6.3.1-SQL质量管控平台部署安装

原创 阎书利 2024-08-27
633

SQM是云和恩墨自主设计研发的一款SQL质量管控平台,它能自动抓取应用程序执行SQL中的SQL语句,并依据既定的审核规则,分析SQL中的潜在性能风险,使得DBA和应用开发人员能够较早的介入,将性能隐患扼杀于萌芽阶段,确保线上应用的稳定、高效运行。

本文涵盖SQM(SQL质量管控平台)部署的相关流程,供参考。

一、安装redis

cd /usr/local/
mkdir redis

上传安装文件redis-5.0.3.tar.gz 到 文件夹 redis

tar -xvf redis-5.0.3.tar.gz
cd redis-5.0.3 && make

使用后台进程运行需要修改配置文件redis.conf中的daemonize配置项,将其改为yes

进入/usr/local/redis/7001/,修改redis.conf配置文件的相关配置项

# 修改为后台进程运行
daemonize yes

# 修改redis监听端口
port 7001

# 注释掉bind,这样外部机器可以访问
# bind 127.0.0.1

# 开启持久化
appendonly yes

# 修改持久化地址文件保存目录
dir /usr/local/redis/7001/

# 修改redis客户端登录密码,必须配置密码
requirepass 123456

image.png
开放端口 7001, 17001

17001是redis集群总线端口。
redis集群总线端口为:客户端端口+10000

关闭redis命令

pkill -9 redis

启动redis

/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis/7001/redis.conf

image.png
测试连接redis

/usr/local/redis/redis-5.0.3/src/redis-cli -h 192.168.1.12 -p 7001 -a 123456

image.png

二、安装zookeeper

安装目录以 /opt/share/zk 为例

新建目录 /opt/share/zk,命令如下:

mkdir -p /opt/share/zk

进入 /opt/share/zk 目录,上传 jdk-8u341-linux-x64.tar.gz 文件

解压 jdk-8u341-linux-x64.tar.gz 文件,命令如下:

tar -zxvf jdk-8u341-linux-x64.tar.gz

修改 java 执行权限 ,命令如下:

chmod u+x jdk1.8.0_341/bin/java*

上传 apache-zookeeper-3.6.3-bin.tar.gz 文件

解压 apache-zookeeper-3.6.3-bin.tar.gz 文件,命令如下:

tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz

apache-zookeeper-3.6.3-bin/data/ 目录下新建 子目录 snapshot 与 log,命令如下:

mkdir -p /opt/share/zk/apache-zookeeper-3.6.3-bin/data/snapshot
mkdir -p /opt/share/zk/apache-zookeeper-3.6.3-bin/data/log

进入 apache-zookeeper-3.6.3-bin/conf 目录,新建 java.env 文件,命令如下:

touch java.env
vi java.env

java.env 文件内容如下:

#!/bin/sh
#配置JDK目录
export JAVA_HOME=/opt/share/zk/jdk1.8.0_341
#配置JVM参数
export JVMFLAGS="-Xmx2048m $JVMFLAGS"

修改 java.env 文件执行权限

chmod u+x java.env

拷贝配置文件 zoo_sample.cfg 为 zoo.cfg,命令如下:

cd apache-zookeeper-3.6.3-bin/conf
cp zoo_sample.cfg zoo.cfg

修改 zoo.cfg 配置文件,命令如下:

vi zoo.cfg

以下为修改配置

#与客户端(agent)通信端口
clientPort=2181
#快照存储目录。修改位置:第12行
dataDir=/opt/share/zk/apache-zookeeper-3.6.3-bin/data/snapshot
# 开启(把注释去掉),保留快照的个数,修改位置:第25行
autopurge.snapRetainCount=10
# 开启(把注释去掉),自动清理事务日志和快照文件的功能,单位是小时,默认是0,表示不开启自动清理功能。修改位置:第28行
autopurge.purgeInterval=24

以下为新增配置,在文件末尾新增以下配置

#事务日志存储目录
dataLogDir=/opt/share/zk/apache-zookeeper-3.6.3-bin/data/log
#HTTP方式查看服务信息
admin.serverPort=8081
#开启审核日志
audit.enable=true

2181对agent开放

开放端口命令如下:

#开放2181端口
firewall-cmd --zone=public --add-port=2181/tcp --permanent
#重新加载防火墙规则
firewall-cmd --reload

进入 /opt/share/zk/apache-zookeeper-3.6.3-bin/bin 目录,启动ZooKeeper

cd ../bin
./zkServer.sh start

如果打印以下信息,则表示启动成功

ZooKeeper JMX enabled by default
Using config: /opt/share/zk/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

image.png

根据端口查看进程,命令如下:

netstat -anp | grep 2181

打印以下信息

tcp6       0      0 :::2181                 :::*                    LISTEN      3538/java     

image.png

如果需要关闭,可以用以下命令:

./zkServer.sh stop

正常打印信息如下:

ZooKeeper JMX enabled by default
Using config: /opt/share/zk/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED

三、安装MogDB资料库

以5.0.7为例,部署单机数据库

创建相关目录,用户,组。创建目录。

groupadd dbgrp -g 20001
useradd omm -g 20001 -u 20001
echo "Enmo@123" | passwd --stdin omm
mkdir -p  /opt/mogdb
chown -R omm:dbgrp /opt/mogdb

su - omm
mkdir /opt/mogdb/data
mkdir /opt/mogdb/soft

安装包上传到/opt/mogdb/soft下,解压

cd  /opt/mogdb/soft
tar -xf MogDB-5.0.7-CentOS-64bit.tar.gz
cd MogDB-5.0.7-CentOS-64bit
cp -r ./* ../

image.png
增加环境变量

echo "export GAUSSHOME=/opt/mogdb/soft"  >> /home/omm/.bashrc && \
echo "export PATH=\$GAUSSHOME/bin:\$PATH " >> /home/omm/.bashrc && \
echo "export LD_LIBRARY_PATH=\$GAUSSHOME/lib:\$LD_LIBRARY_PATH" >> /home/omm/.bashrc
source /home/omm/.bashrc

以omm用户初始化数据库

gs_initdb --pgdata=/opt/mogdb/data --nodename=primary --pwpasswd=Enmo@123 --encoding=UTF-8 --locale=en_US.UTF-8

修改数据库参数

echo "port=26000" >> /opt/mogdb/data/postgresql.conf
echo "listen_addresses = '0.0.0.0'" >> /opt/mogdb/data/postgresql.conf
echo "password_encryption_type = 0" >> /opt/mogdb/data/postgresql.conf
echo "log_directory = 'pg_log'" >> /opt/mogdb/data/postgresql.conf
echo "remote_read_mode=non_authentication" >> /opt/mogdb/data/postgresql.conf
echo "host all all 0.0.0.0/0 md5" >> /opt/mogdb/data/pg_hba.conf

启动数据库

gs_ctl start -D  /opt/mogdb/data

1.初始化资料库

1)切换到omm用户,并使用超级用户登录mogdb资料库

su - omm
gsql -d postgres -p 26000 -r

2)创建DATABASE:sqmdb

CREATE DATABASE sqmdb WITH ENCODING 'UTF-8'  dbcompatibility 'PG';

3)切换database

\c sqmdb

4)创建用户sqm并赋权,此时会同时在数据库sqmdb中创建模式sqm

CREATE USER sqm PASSWORD 'sqm@1234'; 
grant all privileges to sqm;

5)修改数据库属主

ALTER DATABASE sqmdb OWNER TO sqm;

6)退出资料库

\q

四、安装SQM程序

1.解压安装包

在服务器上解压sqm.zip,假设解压到/opt/share/sqm
image.png

2.修改配置文件

打开配置文件/opt/share/sqm/sqm/config/app.conf,修改下面红色部分:

1)修改MogDB资料库配置,REPOS_DB_USER为资料库用户名 , REPOS_DB_PASSWORD为资料库用户密码 , EPOS_DB_URL为资料库jdbc连接串,以实际MogDB配置为准

#修改MogDB资料库用户名、密码、连接串
REPOS_DB_USER=sqm
REPOS_DB_PASSWORD=sqm@1234
REPOS_DB_URL=jdbc:opengauss://192.168.64.142:26000/sqmdb?currentSchema=sqm

#若配置了Jenkins,需修改以下参数,这里的mysql指的是目标库	
#Jenkins扫描MySQL建表资料库,必须使用root用户
REPOS_DB_USER_SCRIPT=root
REPOS_DB_PASSWORD_SCRIPT=123456
#注意REPOS_DB_URL_SCRIPT:只需要配置IP:PORT.禁止添加schema(数据库名),若填写schema,则此schema会在Jenkins建表脚本构建任务第一次执行完后被删除
REPOS_DB_URL_SCRIPT=jdbc:mysql://192.168.64.131:3307?serverTimezone=Asia/Shanghai\&useUnicode=true\&characterEncoding=utf-8\&connectTimeout=5000\&useCursorFetch=true

2)修改redis配置,REDIS_NODES为redis 的”IP:端口”, REDIS_PASSWORD为redis密码,以实际Redis配置为准
#若Redis配置为单机模式

#若Redis配置为单机模式
REDIS_NODES=192.168.64.142:7001
REDIS_PASSWORD=123456

#若Redis配置为集群模式(请确保配置的IP、端口与redis机器一致)
REDIS_NODES=192.168.64.142:7001,192.168.64.142:7002,192.168.64.142:7003,192.168.64.141:7004,192.168.64.141:7005,192.168.64.141:7006
REDIS_PASSWORD=123456

3)修改ZooKeeper配置,以实际ZooKeeper配置为准,ZooKeeper密码第一次设置后,请牢记,后期不建议修改

#若ZooKeeper配置为单机模式:IP:clientPort
ZOOKEEPER_CONNECT_STRING=192.168.64.142:2181
#单台机器同时执行任务数阈值
ZOOKEEPER_ASSIGN_THRESHOLD=5

#若ZooKeeper配置为集群模式:IP1:clientPort,IP2:clientPort,IP3:clientPort(请确保配置的IP、端口与ZooKeeper机器一致)
ZOOKEEPER_CONNECT_STRING=192.168.64.142:2181,192.168.64.143:2181,192.168.64.144:2181
#单台机器同时执行任务数阈值
ZOOKEEPER_ASSIGN_THRESHOLD=5

#修改ZooKeeper用户密码
ZOOKEEPER_USER=sqm
ZOOKEEPER_PASSWORD=sqm@1234

注:若需要修改ZooKeeper密码,操作步骤如下(ZooKeeper和sqm路径以实际为准):
1.登录ZooKeeper
cd /opt/share/zk/apache-zookeeper-3.6.3-bin/bin
./zkCli.sh
2.使用原先的账号与密码认证
addauth digest 旧账号:旧密码
3.取消权限
setAcl -R /topsql world:anyone:cdrwa
4.修改/opt/share/sqm/sqm/config/app.conf中的参数ZOOKEEPER_PASSWORD=的内容

4)若需要修改默认端口,可修改以下参数;

TOMCAT_HTTP_PORT=8899
TOMCAT_HTTPS_REDIECT_PORT=8843
TOMCAT_SHUTDOWN_PORT=8045
TOMCAT_AJP_PORT=8049
OPTIMIZE_URL=127.0.0.1:19006
AGENT_ OPTIMIZE_PORT=19006

5)若需使用自有的Java,则需要替换JRE,SQM自带的JRE在/opt/share/sqm/sqm/java/jdk1.8.0_341
替换方法:修改配置文件中JDK_HOME的值,指向自己安装的JDK

JDK_HOME=/opt/share/sqm/sqm/java/jdk1.8.0_341

6)若需要修改SQM会话超时时间,修改如下参数

#SQM会话超时时间,单位毫秒,不可为空,默认30分钟(1800000毫秒)
SESSION_TIME_OUT=1800000

7)若需要对明文密码进行加密,按以下操作(不需要加密,可忽略)
…/sqm/sqm/config/app.conf配置文件中参数REPOS_DB_PASSWORD=和REDIS_PASSWORD=,必须先设置为明文密码。
进入…/sqm/bin下(必须在该目录下),执行下述命令将app.conf中的密码进行加密,加密后的内容会自动覆盖app.conf的REPOS_DB_PASSWORD=和REDIS_PASSWORD=字段中的明文密码。

java -jar RSA.c3p0-1.0.jar

3.修改文件权限

chmod u+x /opt/share/sqm/sqm/bin/*.sh
chmod u+x /opt/share/sqm/sqm/java/jdk1.8.0_341/bin/java*
chmod u+x /opt/share/sqm/sqm/server/bin/*.sh

4.启动SQM程序

第一步:启动Server,集群部署时,只有第一个SQM正常启动运行后再启动其他的SQM!!

cd /opt/share/sqm/sqm/bin
./start_server.sh

image.png
等待server启动完成,当/opt/share/sqm/sqm/server/logs/catalina.out中输出如下信息,即表示Server启动完成
image.png
打开SQM页面,如果能正常显示,说明启动成功。
image.png
第二步:启动agent(Server启动成功后执行),集群部署时,只有一个SQM应用程序可以开启所有的agent。

首先进入/opt/share/sqm/sqm/bin目录,然后根据需要开启功能:
image.png
Agent日志:/opt/share/sqm/logs/agent*.out

五、访问SQM

http://部署服务器IP:8899/sqm
我的ip为 http://192.168.1.12:8899/sqm
登录用户:sys,密码:123456

image.png

六、启动SQM

# 1)启动Redis

/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis/7001/redis.conf

2)启动zookeeper

/opt/share/zk/apache-zookeeper-3.6.3-bin/bin/zkServer.sh start

3)启动MogDB资料库

gs_ctl start

4)启动SQM程序

cd /opt/share/sqm/sqm/bin
./start_server.sh

等待server启动完成,当/opt/share/sqm/sqm/server/logs/catalina.out中输出如下信息,即表示Server启动完成
image.png
打开SQM页面,如果能正常显示,说明启动成功。
启动agent(Server启动成功后执行),集群部署时,只有一个SQM应用程序可以开启所有的agent。
进入/opt/share/sqm/bin目录,然后根据需要开启功能

启动命令 功能说明 集群
./start_oracle_agent.sh 开启审核任务-Oracle审核 支持,可以启动多个
./start_topsql.sh 开启审核任务-MySQL审核、TeleDB审核、DB2审核、SQL Server审核、OB审核(Oracle)、TelePG审核、PostgreSQL审核 支持,可以启动多个
./start_java_agent.sh 开启审核任务-java应用 支持,可以启动多个
./start_mysql_log_agent.sh 开启审核任务-MySQL日志、TeleDB日志 支持,可以启动多个
./start_metadata.sh 开启工具箱-元数据管理 不支持,只能启动1个
./start_xlog.sh 开启审核任务-达梦日志、TDSQL日志 支持,可以启动多个
./start_optimize.sh 开启智能优化功能 支持,可以启动多个
./start_apollo.sh 开启APOLLO监控,用于监控Oracle审核采集程序,启动前需要参考《部署APOLLO监控程序操作步骤》进行部署 不支持,只能启动1个

Agent日志:/opt/share/sqm/logs/agent*.out

七、停止SQM

注:Redis、zookeeper、SQM安装路径请根据实际情况填写

1)停止SQM程序

/opt/share/sqm/sqm/bin/stop_all.sh
/opt/share/sqm/sqm/bin/stop_server.sh

2)停止MogDB资料库

su - omm
gs_ctl stop

3)停止zookeeper

/opt/share/zk/apache-zookeeper-3.6.3-bin/bin/zkServer.sh stop

4)停止Redis

/usr/local/redis/redis-5.0.3/src/redis-cli -h 192.168.1.12 -p 7001 -a 123456 shutdown

#检查SQM相关程序是否停止(若遇到java相关进程没关掉,可直接kill)

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

评论