大家好,这里是公众号 DBA学习之路,分享一些学习国产数据库路上的知识和经验。
目录
前言
最近参加了 YashanDB 数据库证书 YCP 的学习,学习一门数据库第一步应该就是安装部署,有了环境才能动手学习测试。
本文记录了 YashanDB 23.2 的单机安装部署过程,大部分参照官方文档,其中也有自己的部分解读,希望一起进步。
环境介绍
单机部署最小规模配置为 1 台服务器,但无法构建高可用环境。
部署形态 | 数据库监听 | yasom | yasagent | 服务器间通信 |
---|---|---|---|---|
单机部署 | 1688 | 1675 | 1676 | 1689 |
安装前准备
openssl 检查
为保障 YashanDB 的正常安装和运行,请按如下来源及最低版本要求,在所有服务器环境中配置所需依赖项:
动态库名称 | 来源 | 版本要求 | 作用 |
---|---|---|---|
libcrypto.so.1.1 | openssl | 1.1.1 | 加密 |
libssl.so | openssl | 1.1.1 | 网络通信 |
libssl.so.1.1 | openssl | 1.1.1 | - |
libgmssl.so.3.1 | gmssl | 3.1.1及以上 | 加密 |
liblz4.so | lz4 | 1.9.3及以上 | 数据压缩和解压缩 |
liblz4.so.1 | lz4 | 1.9.3及以上 | - |
liblz4.so.1.9.3 | lz4 | 1.9.3及以上 | - |
libz.so | zlib | 1.2.12及以上 | 数据压缩 |
libz.so.1 | zlib | 1.2.12及以上 | - |
libz.so.1.2.12 | zlib | 1.2.12及以上 | - |
libzstd.so | zstd | 1.5.2及以上 | 数据压缩和解压缩 |
libzstd.so.1 | zstd | 1.5.2及以上 | - |
libzstd.so.1.5.2 | zstd | 1.5.2及以上 | - |
monit | monit | 5.28.0及以上 | 守护进程 |
YashanDB 在 23.2 版本增加了一个 openssl 的限制,要求版本必须为 1.1.1,否则安装过程可能出错:
## 需要大于 1.1.1
openssl version
我这里是符合要求的,如果是使用 centos7.9 就需要升级 openssl 版本了,可参考我写的 openssl 升级步骤:YashanDB openssl 版本过低升级过程。
还需要注意的一个就是 monit 命令,这个也建议安装,否则在使用 yasboot 命令启动 yasagent/yasom 时会报错:
[yashan@yashandb bin]$ yasboot process yasom start -c yashandb warning: watch yasom error: monitor failed, stdout: , stderr: bash:行1: monit:未找到命令 start yasom successfully
在配置数据库开机自启时也会报错:
[yashan@ymp install]$ yasboot monit start --cluster yashandb
type | uuid | name | hostid | index | status | return_code | progress | cost
---------------------------------------------------------------------------------------------------------
task | e28f8408d39bae22 | MonitParentStart | - | yashandb | FAILED | 1 | 100 | 1
------+------------------+------------------+--------+----------+--------+-------------+----------+------
task completed, status: FAILED
retcode: 1
stdout: start monit
stderr: start monit failed, stdout: , stderr: bash: monit: command not found
关于如何解决 monit 命令找不到的问题,只需要安装 monit 命令即可:monit-5.34.0-linux-x64.tar.gz 安装包下载,具体可以参考如下步骤:
[root@ymp ~]# mkdir /monit /etc/monit.d
[root@ymp ~]# tar -zxvf /monit/monit-5.34.0-linux-x64.tar.gz -C /monit
[root@ymp ~]# cp /monit/monit-5.34.0/conf/monitrc /etc
[root@ymp ~]# ln -s /monit/monit-5.34.0/bin/monit /usr/bin/monit
[root@ymp ~]# monit -V
This is Monit version 5.34.0
Built with ssl, with ipv6, with compression, with pam and with large files
Copyright (C) 2001-2024 Tildeslash Ltd. All Rights Reserved.
确保安装 monit 命令成功即可。
关闭防火墙
YashanDB 安装建议关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
创建用户和组
建议在所有服务器上创建 YashanDB 产品的安装用户,而非使用 root 身份执行安装部署:
## 这里增加 YASDBA 组是为了后续配置支持:yasql / as sysdba 系统认证
groupadd YASDBA
useradd -d /home/yashan -m yashan
usermod -a -G YASDBA yashan
echo "yashan:yashan" | chpasswd
id yashan
## 配置 sudo 免密
## 对 root 用户赋权并打开 /etc/sudoers 文件
chmod +w /etc/sudoers
## 在文件的最后添加如下内容
cat<<-EOF>>/etc/sudoers
yashan ALL=(ALL)NOPASSWD:ALL
EOF
chmod -w /etc/sudoers
创建目录
所有 YashanDB 的实例节点都必须规划以下两个目录:
- HOME 目录:YashanDB 的产品目录,包含 YashanDB 所提供的命令、数据库运行所需的库及各关键组件。该目录由 yashan 用户执行安装部署时输入的 install-path 参数根据一定规则生成并创建。
- DATA 目录:YashanDB 的数据目录,包含数据库的各类系统数据文件、部分日志文件和配置文件,用户数据也缺省存储在该目录下。但对于共享集群,所有的数据文件和 redo 文件均需保存在共享存储上,DATA目录将只用于存储实例运行相关的配置文件、日志文件等数据。该目录由 yashan 用户执行安装部署时输入的 --data-path 参数根据一定规则生成并创建。
HOME 目录和 DATA 目录均规划在 /data/yashan 下,yashan 用户需要对该目录拥有全部权限,可执行如下命令授权:
mkdir -p /data/yashan chown -R yashan:yashan /data/yashan chmod -R 770 /data/yashan
系统参数配置
当 YashanDB 安装在 Linux 环境中时,为使系统达到更好的性能,建议进行下述配置调整:
## 关闭交换分区
echo "vm.swappiness = 0" >>/etc/sysctl.conf
## 调整自动分配本地端口范围
echo "net.ipv4.ip_local_port_range = 32768 60999" >>/etc/sysctl.conf
## 调整进程的VMA上限
echo "vm.max_map_count=2000000" >>/etc/sysctl.conf
## 生效配置
sysctl -p
资源配置
将部分资源限制值(使用ulimit -a可查看所有的资源限制值)调整为推荐值或以上。
cat<<-EOF>>/etc/security/limits.conf
yashan soft nofile 1048576
yashan hard nofile 1048576
yashan soft nproc 1048576
yashan hard nproc 1048576
yashan soft rss unlimited
yashan hard rss unlimited
yashan soft stack 8192
yashan hard stack 8192
EOF
关闭透明大页
YashanDB 建议关闭透明大页,部分操作系统默认开启了透明大页选项,可执行以下命令确认:
## Red Hat Enterprise Linux 内核
# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
## 其他内核
# cat /sys/kernel/mm/transparent_hugepage/enabled
显示结果:
- [always] madvise never:透明大页已开启。
- always [madvise] never:透明大页已开启。
- always madvise [never]:透明大页已关闭。
修改 /etc/default/grub 文件,在 GRUB_CMDLINE_LINUX 中添加或修改参数 transparent_hugepage=never:
sed -i 's/quiet/quiet transparent_hugepage=never/' /etc/default/grub
通过以下指令检查当前系统的引导类型:
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
两种引导的启动文件路径分别为:
- BIOS:/boot/grub2/grub.cfg
- UEFI:/boot/efi/EFI/<distro_name>/grub.cfg,distro_name 为系统发行版本名称,例如 ubuntu、fedora、debian 等。
执行 grub2–mkconfig 指令重新配置 grub.cfg:
## BIOS 引导
# grub2-mkconfig -o /boot/grub2/grub.cfg
## UEFI 引导
# grub2-mkconfig -o /boot/efi/EFI/<distro_name>/grub.cfg
重启操作系统,使配置永久生效:
# reboot
验证透明大页已关闭:
## Red Hat Enterprise Linux 内核
# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
## 其他内核
# cat /sys/kernel/mm/transparent_hugepage/enabled
结果应显示 always madvise [never]。
安装步骤(使用yashan用户)
YashanDB 安装可以使用两种方式:
- 命令行安装
- 可视化安装
由于本人喜欢使用命令行模式,所以演示也是使用命令行。
解压安装软件
安装目录规划在 /home/yashan/install 下,由 yashan 用户执行软件包下载时自行创建。执行安装部署前,请以安装用户(yashan)登录数据库服务器,并进入 /home/yashan/install 安装目录:
## 在 yashan 用户下执行
mkdir -p /home/yashan/install
## 解压安装包
tar -zxf /home/yashan/install/yashandb-personal-23.2.3.100-linux-x86_64.tar.gz
生成安装配置文件
执行 yasboot package 命令生成配置文件:
## 注意这里的 yashan 用户密码需要根据自己的环境进行配置,如果安装教程走的话,可以不用修改,密码就是 yashan
./bin/yasboot package se gen --cluster yashandb -u yashan -p yashan --ip 10.211.55.88 --port 22 --install-path /data/yashan/yasdb_home --data-path /data/yashan/yasdb_data --begin-port 1688
参数说明:
- –cluster:指定数据库集群名称,该名称也将作为初始数据库的名称(database name)
- –port:指定 SSH 服务端口
- –install-path:指定数据库安装路径
- –data-path:指定数据存放目录
- –begin-port:指定数据库监听端口
执行完毕后,当前目录下将生成 yashandb.toml 和 hosts.toml 两个配置文件,可手动修改,但不建议删除文件中任何行,否则可能导致后续安装过程报错,或所搭建的环境后续无法进行扩展配置。
- yashandb.toml:数据库集群的配置文件。
- hosts.toml:服务器的配置文件。
安装 yasom
./bin/yasboot package install -t hosts.toml -i /home/yashan/install/yashandb-personal-23.2.3.100-linux-x86_64.tar.gz
安装 yasagent
## 安装部署 yasdb,-p 指定的是 sys 用户密码
./bin/yasboot cluster deploy -t yashandb.toml -p yasdb_123
## 也可以部署完成后使用 yasboot 单独配置 sys 用户密码
yasboot cluster password set -n yasdb_123 -c yashandb
YashanDB 不提供系统初始口令,需使用 yasboot 工具设置数据库 sys 用户的密码,以安装用户登录到服务器并执行如下命令设置密码。
配置环境变量
部署命令成功执行后将会在 $YASDB_HOME 目录下的 conf 文件夹中生成 <<集群名称>>.bashrc 环境变量文件:
cd /data/yashan/yasdb_home/yashandb/23.2.3.100/conf/
# 如 ~/.bashrc 中已存在 YashanDB 相关的环境变量,将其清除
cat yashandb.bashrc >>~/.bashrc
echo "alias ys='yasql / as sysdba'" >> ~/.bashrc
source ~/.bashrc
连接数据库
## 系统认证方式登录
yasql / as sysdba
## sys 密码登录
yasql sys/password@192.168.1.2:1688
创建用户
create user lucifer identified by lucifer;
grant connect to lucifer;
配置开机自启
由于每次开机都需要启动 yasom 和 yasagent,然后再启动数据库,比较麻烦,所以建议配置开机自启:
## 确保已启动 yasom 和 yasagent 进程,若没有可使用以下命令启动
[yashan@ymp ~]$ yasboot process yasom start -c yashandb
start yasom successfully
[yashan@ymp ~]$ yasboot process yasagent start -c yashandb
start local agent successfully!
## 等待 yasom 和 yasagent 进程启动后,才能启动数据库
[yashan@ymp ~]$ yasboot cluster start -c yashandb
type | uuid | name | hostid | index | status | return_code | progress | cost
-----------------------------------------------------------------------------------------------------------
task | 37f4808dd5e7923a | StartYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | 7
------+------------------+-------------------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS
## 配置 YashanDB 启动守护进程
[yashan@ymp install]$ yasboot monit start --cluster yashandb
type | uuid | name | hostid | index | status | return_code | progress | cost
----------------------------------------------------------------------------------------------------------
task | 66b4fd2fc0bddd62 | MonitParentStart | - | yashandb | SUCCESS | 0 | 100 | 1
------+------------------+------------------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS
配置开机自启动,需在 yasagent 进程所在服务器(即每台服务器)中执行以下操作:
[root@ymp ~]# cat<<-EOF>/etc/rc.local
su - yashan -c '/usr/bin/monit -c /data/yashan/yasdb/yashandb/23.2.3.100/ext/monit/monitrc'
EOF
[root@ymp ~]# chmod +x /etc/rc.d/rc.local
重启主机测试是否会开启:
[root@ymp ~]# reboot
## 重启后连接数据库,正常开启
[root@ymp ~]# su - yashan
Last login: Thu Sep 19 22:22:05 CST 2024
[yashan@ymp ~]$ yasql / as sysdba
YashanDB SQL Personal Edition Release 23.2.3.100 x86_64
Connected to:
YashanDB Server Personal Edition Release 23.2.3.100 x86_64 - X86 64bit Linux
SQL>
SQL>
SQL> exit
YashanDB 常用命令
## 查看数据库状态
yasboot cluster status -c yashandb -d
## 开启 yasom
yasboot process yasom start -c yashandb
## 开启 yasagent
yasboot process yasagent start -c yashandb
## 关库
yasboot cluster stop -c yashandb
## 开库
yasboot cluster start -c yashandb
## 卸载
yasboot cluster clean --cluster yashandb --purge
关于 YashanDB AWR 报告一键生成可参考:《YashanDB AWR 报告一键生成》