所有 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
分析:
- 查询端口1675 是否启用或是否被占用
[yashan@yashan01 ~]$ ss -tunlp
经查询发现,端口1675并没有被占用。
- 查询yashandb数据库端口规划
经查询数据库端口规划,可以确定端口号1675为om进程使用,
部署形态 | 数据库监听 | om | yasagent | 主机间通信 |
单机部署 | 1688 | 1675 | 1676 | 1689 |
[yashan@yashan01 ~]$ ps -ef | grep yas
经查询发现,yasom 进程没有被启用。
- 启动 yasom 和 yasagent
$ yasboot process yasom start -c yashandb
$ yasboot process yasagent start -c yashandb
验证端口是否被启用
验证进程是否被启用
- 删除除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能在这个赛道越走越远。