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

「YashanDB个人版体验」问鼎华山论剑的YanshanDB

原创 问天的天问 2023-11-26
643

所有 DBA 的第一篇文章,都是安装教程。

经过近几天的体验,个人感觉 YashanDB 在国产数据库里是最像 Oracle 的,也希望兼容度能更高,以便今后的数据迁移。


OS : CentOS Linux release 7.9.2009 (Core)


一、操作系统配置

1.1 参数配置

1.1.1 关闭交换分区:

查询当前系统 swappiness 值

# sysctl -a 2>&1 | grep swappiness

vm.swappiness = 30

修改 vm.swappiness 值

sysctl -w vm.swappiness=0

echo "vm.swappiness = 0" >> /etc/sysctl.conf

注:vm.swappiness

vm.swappiness的值表示激活交换之前可用内存的百分比。值越低,使用的交换越少,并且物理内存中保留的内存页越多。建议将较小的值用于服务器系统。对于数据库工作负载,建议使用较小的swappiness值。

vm.swappiness不同取值及其代表不同意义将会直接影响Linux系统的性能:

* 0:禁用交换

* 1:不完全禁用交换的最小数量

* 10:当系统中有足够内存时为提高性能而推荐的值

* 100:主动交换

1.1.2 调整自动分配本地端口范围

本地端口范围下限值建议大于30000。

查询操作系统 net.ipv4.ip_local_port_range 值

# sysctl -a 2>&1 | grep net.ipv4.ip_local_port_range

net.ipv4.ip_local_port_range = 32768 60999

实验系统值满足要求,无需修改。若小于则进行修改,修改方法如下:

sysctl -w net.ipv4.ip_local_port_range='32768 60999'

echo "net.ipv4.ip_local_port_range = 32768 60999" >> /etc/sysctl.conf

1.1.3 调整进程的VMA上限

VMA上限建议大于2000000。

查询

使用sysctl -a | grep vm.max_map_count查看当前上限值

# sysctl -a | grep vm.max_map_count

vm.max_map_count = 65530

修改

sysctl -w vm.max_map_count=2000000

echo "vm.max_map_count=2000000" >> /etc/sysctl.conf

1.1.4 调整资源限制值

cat >> /etc/security/limits.conf << EOF

# add by yashandb

* soft nofile 65536

* hard nofile 65536

* soft nproc 65536

* hard nproc 65536

* soft rss unlimited

* hard rss unlimited

* soft stack 8192

* hard stack 8192

EOF

注:

soft nofile:文件句柄

soft nproc:最大用户线程数

soft rss:最大内存限制

soft stack:堆栈大小

1.1.5 关闭透明大页

标准大页内存会在系统启动时预分配,而透明大页会在运行时动态分配大页内存,可能产生运行时错误,造成 YashanDB 被终止。建议您在安装时,关闭操作系统透明大页(Transparent HugePages)选项。

1)查看透明大页是否开启

在一些系统的内核中默认开启了透明大页选项。您可以通过以下指令确认:

## CentOS Linux内核

# cat /sys/kernel/mm/transparent_hugepage/enabled

若显示 [always] madvise never ,则说明透明大页开启。

若显示 always madvise [never] ,则说明透明大页关闭。

2)关闭透明大页

1. 在 GRUB_CMDLINE_LINUX 中添加或修改参数 transparent_hugepage=never 。

# vi /etc/default/grub

GRUB_TIMEOUT=5

GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"

GRUB_DEFAULT=saved

GRUB_DISABLE_SUBMENU=true

GRUB_TERMINAL_OUTPUT="console"

GRUB_CMDLINE_LINUX="spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet transparent_hugepage=never"

GRUB_DISABLE_RECOVERY="true"

2. 执行 grub2-mkconfig 指令重新配置 grub.cfg 。

# grub2-mkconfig -o /boot/grub2/grub.cfg

3. 重启操作系统,使配置永久生效。

1.2 安全配置

1.2.1 开放端口

安装默认端口号:

部署形态

数据库监听

om

yasagent

主机间通信

单机部署

1688

1675

1676

1689

查询防火墙端口开放情况:

# firewall-cmd --zone=public --list-ports

添加需要放开的端口号,--permanent 表示永久生效

# firewall-cmd --zone=public --add-port=1675/tcp --permanent

# firewall-cmd --zone=public --add-port=1676/tcp --permanent

# firewall-cmd --zone=public --add-port=1688/tcp --permanent

# firewall-cmd --zone=public --add-port=1689/tcp --permanent

重新载入配置并查询防火墙端口开放情况:

# firewall-cmd --reload

# firewall-cmd --zone=public --list-ports

1.2.2 开启SSH服务

首先,请在所有服务器上检查ssh服务是否已打开:

# systemctl status sshd.service

如输出信息中无 active (running) 内容,请参照如下命令开启ssh服务:

# systemctl start sshd.service

Note:

本实验默认ssh端口号为22,如为其他端口号,后续安装过程需进行手工指定。

1.3 安装用户

groupadd -g 54321 yashan

groupadd -g 54322 YASDBA

useradd -u 54321 -g yashan -G YASDBA yashan

echo "yashan" | passwd --stdin yashan

1.4 安装目录

所有安装YashanDB的实例节点上必须规划的两个目录为:

  • HOME目录:YashanDB的产品目录,包含YashanDB所提供的命令、数据库运行所需的库及各关键组件。该目录由yashan用户执行安装部署时输入的install-path参数根据一定规则生成并创建。
  • DATA目录:YashanDB的数据目录,包含数据库的各类系统数据文件、日志文件和配置文件,用户数据也缺省存储在该目录下。但对于共享集群,所有的数据文件和redo文件均需保存在共享存储上,DATA目录将只用于存储实例运行相关的配置文件、日志文件等数据。该目录由yashan用户执行安装部署时输入的data-path参数根据一定规则生成并创建。

HOME目录和DATA目录均规划在/data下,yashan用户需要对该目录拥有全部权限,可执行如下命令授权:

# mkdir /data

# chown -R yashan:yashan /data

# chmod -R 777 /data

注:本安装中,目录为/home/yashan,与此处不同。

二、数据库安装与卸载

2.1 数据库安装

OM安装方式由YashanDB配套的yasboot工具实现(位于安装包的bin目录下),可用于YashanDB所有架构下的安装部署,仅有通过OM方式安装的产品才能纳入OM管理。

本文以yashandb-personal-23.1.1.100-linux-x86_64.tar.gz软件包为例介绍om方式安装YashanDB的过程。数据库安装过程中将实例自动切换成OPEN阶段,并创建名为yashandb的数据库。

2.1.1 解压安装介质

创建软件压缩包存放目录

[yashan@yashan01 ~]$ mkdir -p /home/yashan/install

上传 yashandb-personal-23.1.1.100-linux-x86_64.tar.gz 至 /home/yashan/install

解压安装介质

[yashan@yashan01 ~]$ cd install

[yashan@yashan01 ~]$ tar -xvf yashandb-personal-23.1.1.100-linux-x86_64.tar.gz

2.1.2 生成部署文件

执行yasboot package命令生成配置文件。

$ ./bin/yasboot package se gen \

--cluster yashandb \

-u yashan -p yashan \

--ip 192.168.2.120 --port 22 \

--install-path /home/yashan/yasdb_home \

--data-path /home/yashan/yasdb_data \

--begin-port 1688

其中,

--cluster指定为要部署的数据库集群名称,该名称也将作为集群中所有节点上初始创建数据库的名称(database name);

--port指定SSH服务端口;

--install-path指定数据库安装路径;

--data-path指定数据存放目录;

--begin-port指定数据库监听端口。

查看当前的文件夹生成的新文件,命令执行成功后会额外生成2个配置文件和1 个目录,2个配置文件分别为 hosts.toml 和 yashandb.toml,1 个目录为om目录。om为部署的yasom存储路径。hosts.toml为主机的配置文件,yashandb.toml为数据库集群的配置文件,可手动修改。

[yashan@yashan01 install]$ ll *.toml

-rw-------. 1 yashan yashan 492 Nov 25 22:29 hosts.toml

-rw-------. 1 yashan yashan 725 Nov 25 22:29 yashandb.toml

2.1.3 安装数据库

#于安装包目录下执行如下命令,不同目录时需指定安装包路径和名称。

$ ./bin/yasboot package install -t hosts.toml \

-i yashandb-personal-23.1.1.100-linux-x86_64.tar.gz

在路径/home/yashan下生成软件安装目录yasdb_home

2.1.4 部署数据库

#于安装包目录下执行如下命令,不同目录时需指定安装包路径和名称。

$ ./bin/yasboot cluster deploy -t yashandb.toml

在路径/home/yashan下生成数据库数据目录yasdb_data

查询端口

2.2 数据库卸载

DATA目录清理

$ yasboot cluster clean --cluster yashandb --purge

HOME目录清理

$ yasboot package uninstall --cluster yashandb

删除软件安装和数据目录

$ rm -rf yas*

$ rm -rf .yasboot

三、Operations Management

OM架构

作为YashanDB配套的运维管理工具,OM(Operations Management)所实现的能力如下图所示:

yasboot

用户进行YashanDB运维管理的命令行工具。

yasom

运维服务进程,接收yasboot命令并进行指令下发和控制,管理yasagent。

yasom为独立进程,在产品安装部署后启动,并可通过yasboot命令进行启动和停止。

yasagent

无状态的运维服务进程,运行在yasdb所在的主机上,接收yasom的指令并通过工具/驱动/命令等方式向yasdb或文件系统执行查询和操作等任务。

yasagent为独立进程,在产品安装部署后启动,并可通过yasboot命令进行启动和停止。

yasdb

YashanDB数据库实例进程。

注:执行 yasboot 前,必须先执行 yasom 和 yasagent 。

四、故障诊断

4.1 <IP>:1675: connect: connection refused

现象:删除集群时,执行结果报端口1675 拒绝连接的错误。

[yashan@yashan01 ~]$ yasboot cluster clean --cluster yashandb --purge

Are you sure you want to CLEAN cluster: [yashandb], AND ALL DATA WILL BE DELETED (-p/--purge is given)?

[yes/no]: yes

dial tcp 192.168.2.120:1675: connect: connection refused

分析:

  1. 查询端口1675 是否启用或是否被占用

[yashan@yashan01 ~]$ ss -tunlp

经查询发现,端口1675并没有被占用。

  1. 查询yashandb数据库端口规划

经查询数据库端口规划,可以确定端口号1675为om进程使用,

部署形态

数据库监听

om

yasagent

主机间通信

单机部署

1688

1675

1676

1689

[yashan@yashan01 ~]$ ps -ef | grep yas

经查询发现,yasom 进程没有被启用。

  1. 启动 yasom 和 yasagent

$ yasboot process yasom start -c yashandb

$ yasboot process yasagent start -c yashandb

验证端口是否被启用

验证进程是否被启用

  1. 删除除cluster

[yashan@yashan01 ~]$ yasboot cluster clean --cluster yashandb --purge

五、使用感受和期望

1. 安装简单,对熟悉Oracle的DBA来说,更易上手;
2. 目前在国内数据库,从使用角度来说是最像Oracle的,如Oracle使用sqlplus / as sysdba,而Yashan使用 yasql / as sysdba等,不再赘述;
3. 现在国产数据库厂商也是百家争鸣,但大家的市场份额却还有很长的路要走。不同的市场策略,不同的受众群体,典型的如Oracle和DB2,相信大家都知道两家市场占用率的区别,希望Yashan能在市场方面能独树一帜,与其他国内公司有所区别;
4. 借助信创东风,现在很多单位有信创需求,希望Yashan能在这个赛道越走越远。

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

评论