1、YashanDB数据库介绍
崖山数据库管理系统(YashanDB)是深圳计算科学研究院在经典数据库理论基础上,融入新的原创理论,自主设计、研发的新型数据库管理系统。最新版本V23.2。
核心特性
- 行式存储/列式存储
支持HEAP行存表、TAC(Transaction Analytics Columnar)列存表、LSC(Large-scale Storage Columnar)列存表。
支持LIST/RANGE/HASH/INTERVAL分区类型和多种组合二级分区能力。 支持向量化计算。
- 事务管理
支持完整事务ACID、细粒度锁管理、语句读写一致性,支持读已提交和串行化事务隔离级别、UNDO自管理、多版本并发控制。 - 原生HTAP内核
具备高效的OLTP内核底座和海量的OLAP处理能力,具备事务ACID能力。 - 高性能查询
支持MPP分布式执行方式,具备数据排序、稀疏索引、预读与缓存、数据压缩等存储技术,加上SQL引擎使用了分区剪枝、并行查询、条件下推等特性,带来高性能查询。 - 全自研优化器
提供全自研基于代价和规则的优化器模型。 - 数据复制
支持同步和异步两种复制模式,提供最大保护、最大性能等多种复制策略。 - 备份恢复
提供数据物理备份和逻辑备份能力,支持全量和二级增量备份,并且支持基于时间点恢复(PITR)功能。 - 高可用
提供一主多备、级联备高可用能力,支持手工切换和自动选举。 - 数据库闪回
支持闪回查询、闪回修改以及回收站闪回能力。 - 通用SQL能力
遵循ANSI SQL标准,支持常用SQL语法,提供丰富函数库和数据类型,支持高性能的PLAN算子。 - PL/SQL
支持存储过程、自定义函数、匿名块、高级包、JOB、触发器等能力。 - 聚合内存
支持聚合内存(Cohesive Memory)核心技术,用于集群数据库各实例之间协同数据页的读写访问以及各种非数据类的并发控制。 - 自研文件系统
自研共享文件系统,提供磁盘管理和并行文件系统管理。 - GIS
支持ST_GEOMETRY数据类型,用于存储和访问符合开放地理空间信息联盟(Open Geospatial Consortium,简称OGC)制定的SFA SQL标准的几何对象。
产品架构
单机部署
分布式部署
共享集群部署
2、本次安装规划
主机名称 | 操作系统版本 | 资源配置 | 操作系统服务IP | 安装功能包 | 功能说明 |
appnode1 | Redhat7.8 | 4c/8G及以上 | 192.168.126.101 | yashan-migrate-platform-v23.2.1.0-linux-x86-64.zip yashandb-personal-23.2.1.100-linux-x86_64.tar.gz instantclient-basic-linux.x64-19.23.0.0.0dbru.zip JDK8、libaio动态库 | YMP(迁移工具服务器) |
dbnode1 | Redhat7.8 | 2c/4G及以上 | 192.168.126.102 | yashandb-personal-23.2.1.100-linux-x86_64.tar.gz | yashanDB(目标库服务器) |
ora19c | Redhat7.8 | 2c/4G及以上 | 192.168.126.129 | Oracle Version 19.17.0.0.0 | Oracle19c(源库) |
adminnode | Redhat7.8 | 2c/4G及以上 | 192.168.126.110 | yashandb-cloud-manager-23.2.1.103-linux-x86_64.tar.gz | YCM(监控管理服务器) |
3、部署方式
本次部署采用单机主备部署方式。
4、操作系统配置
4.1 防火墙配置
## 关闭防火墙
systemctl stop firewalld
## 关闭开机自启
systemctl disable firewalld
##selinux临时关闭
setenforce 0
##selinux永久关闭
vim /etc/selinux/config
[root@dbnode1 ~]# more /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
4.2 关闭交换分区
此步操作目的是为最大限度使用物理内存
# sysctl -w vm.swappiness=0
# echo " vm.swappiness = 0">> /etc/sysctl.conf
[root@dbnode1 ~]# sysctl -a | grep swappiness
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.ens33.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
sysctl: reading key "net.ipv6.conf.virbr0.stable_secret"
sysctl: reading key "net.ipv6.conf.virbr0-nic.stable_secret"
vm.swappiness = 0
使变量生效
sysctl -p
4.3 分配本地端口
使用cat /proc/sys/net/ipv4/ip_local_port_range查看连接可用的本地端口范围,下限值建议大于30000以减少端口冲突。
# sysctl -w net.ipv4.ip_local_port_range='32768 60999'
# echo "net.ipv4.ip_local_port_range = 32768 60999" >> /etc/sysctl.conf
使变量生效
sysctl -p
4.4 调整进程的VMA上限
该参数作用是限制一个进程可以拥有的VMA(虚拟内存区域)的数量,调整是为了让数据库进程充分使用主机资源
# sysctl -w vm.max_map_count=2000000
# echo " vm.max_map_count=2000000" >> /etc/sysctl.conf
使变量生效
sysctl -p
4.5 调整资源限制值
将部分资源限制值(使用ulimit -a可查看所有的资源限制值)调整为推荐值或以上。
# ulimit -n 65536 #设置可以打开的最大的文件描述符数量65536(单位:个)
# ulimit -u 65536 #设置可以打开的最大的进程数65536(单位:个)
# ulimit -m unlimited #设置没有限制的使用常驻内存的大小(单位:kbytes)
# ulimit -s 8192 #设置可以使用linux的默认栈空间大小是8192kb(单位:kbytes)
vi /etc/security/limits.conf
在文件 /etc/security/limits.conf 后面添加以下内容:
yashan soft nofile 65536
#表示yashan用户可以打开的最大的文件描述符数量65536个
yashan hard nofile 65536
yashan soft nproc 65536
#表示yashan用户可以打开的最大的进程数65536个
yashan hard nproc 65536
yashan soft rss unlimited
#表示yashan用户可以没有限制的使用常驻内存的大小
yashan hard rss unlimited
yashan soft stack 8192
#表示yashan用户可以使用linux的默认栈空间大小是8192kb
yashan hard stack 8192
5.用户及目录创建
5.1 YashanDB用户
useradd -d /home/yashan -m yashan
passwd yashan
将安装用户加入YASDBA用户组
$ groupadd YASDBA
$ usermod -a -G YASDBA yashan
5.2 创建软件安装目录
su - yashan
mkdir ~/install
cd ~/install
[yashan@dbnode1 ~]$ cd install/
[yashan@dbnode1 install]$ tar zxf /opt/yashandb-personal-23.2.1.100-linux-x86_64.tar.gz -C ./
6.单节点部署
YashanDB配套的运维管理工具介绍
yasboot是YashanDB配套的运维管理工具,用于在单节点和多节点部署(如单机主备部署、分布式集群部署等)的数据库集群环境中对YashanDB进行各种远程的运维管理操作,例如:
安装部署、离线升级、实例启停、主备切换、备份恢复、AC发现、数据重分布、sys账号密码设置、参数设置、进程守护、日志收集、yasql工具集成。
使用yasboot工具需满足如下前提条件 :
- 已配置好toml配置文件,包括主机配置文件和集群配置文件。在产品安装时将会执行yasboot package config gen生成对应的toml文件。
- 节点之间的通信端口已开放。
- 推荐以非root用户执行yasboot。
- 使用yasboot注意事项 :
终止yasboot进程,不会影响其成功下发给yasom的指令
通过yasboot安装YashanDB产品时,将会在各节点启动yasom和yasagent进程,之后yasboot的运行均依赖于这两个进程。运行关系见下图
- yasboot
用户进行YashanDB运维管理的命令行工具。
- yasom
YashanDB运维服务进程,接收yasboot命令并进行指令下发和控制,管理yasagent。
yasom为独立进程,在产品安装部署后启动,并可通过yasboot命令进行启动和停止。
- yasagent
无状态的运维服务进程,运行在yasdb所在的主机上,接收yasom的指令并通过工具/驱动/命令等方式向yasdb或文件系统执行查询和操作等任务。
yasagent为独立进程,在产品安装部署后启动,并可通过yasboot命令进行启动和停止。
- yasdb
YashanDB数据库实例进程。
如下是执行yasboot工具命令安装部署yashanDB案例。
6.1 生成部署文件
本安装中,HOME目录和DATA目录均规划在/data/yashan下
mkdir -p /data/yashan
chmod -R 770 /data/yashan
chown -R yashan:yashan /data/yashan
1.执行yasboot package命令生成配置文件
[root@dbnode1 ~]# su - yashan
Last login: Wed Apr 24 07:32:18 CST 2024 on pts/0
./bin/yasboot package se gen --cluster yashandb \
-u yashan -p yashan#123 --ip 192.168.126.102 --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:主机的配置文件。
YashanDB产品安装创建的初始数据库信息如下:
监听端口:如未在安装过程中进行调整,则默认为1688。
用户:安装过程创建了sales样例用户,密码为sales,用于YashanDB的学习和验证;
除此之外系统中无任何普通用户。
配置参数:除在安装过程中调整的值以外,其他均为系统默认值。
进程:
yasdb进程
yasdb为YashanDB的主进程,启动数据库实例后,系统中可监控到此进程。
yasom进程
yasom为YashanDB的运维服务进程,接受yasboot命令并进行指令下发和控制,管理yasagent。
yasagent进程
yasagent进程为YashanDB的无状态运维服务进程,接受yasom指令并通过工具/驱动/命令等方式向yasdb或文件系统执行查询和操作等任务。
yascs进程
yascs进程为YashanDB的集群服务管理进程,部署共享集群后将会启动此进程。
6.2 执行安装
[root@dbnode1 ~]# su - yashan
[yashan@dbnode1 ~]$ cd install
[yashan@dbnode1 install]$ ./bin/yasboot package install -t hosts.toml -i /opt/yashandb-personal-23.2.1.100-linux-x86_64.tar.gz
checking install package...
install version: yashandb 23.2.1.100
host0001 100% [====================================================================] 24s
update host to yasom...
6.3 部署数据库
[yashan@dbnode1 ~]$ cd install/
[yashan@dbnode1 install]$ ./bin/yasboot cluster deploy -t yashandb.toml
type | uuid | name | hostid | index | status | return_code | progress | cost
------------------------------------------------------------------------------------------------------------
task | dc258cb879402d5b | DeployYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | 9
------+------------------+--------------------+--------+----------+---------+-------------+------
task completed, status: SUCCESS
task completed, status: SUCCESS表示安装成功
7.配置环境变量
##执行如下命令,生效环境变量。
部署命令成功执行后将会在$YASDB_HOME目录下的conf文件夹中生成<<集群名称>>.bashrc环境变量文件
cd /data/yashan/yasdb_home/yashandb/23.2.1.100/conf
cat yashandb.bashrc >> ~/.bashrc
source ~/.bashrc
8.安装使用
8.1密码修改
YashanDB不提供系统初始口令,请以安装用户登录192.168.126.102服务器并通过yasboot工具设置集群内所有节点sys用户的密码。
[yashan@dbnode1 ~]$ yasboot cluster password set -n newpasswd -c yashandb
type | uuid | name | hostid | index | status | return_code | progress | cost
--------------------------------------------------------------------------------------------------
task | f8998d97bc0ddb8b | YasdbPasswordSet | - | yashandb | FAILED | 1 | 100 | 1
------+------------------+------------------+--------+----------+--------+-------------+--------
task completed, status: FAILED
retcode: 1
stdout: generate password file
stderr: generate yaspwd file failed, YASPW-00002 password complexity failed for SYS user : password must contain at least 1 digit
[yashan@dbnode1 ~]$ yasboot cluster password set -n yashan#123 -c yashandb
8.2查看数据库状态
[yashan@dbnode1 ~]$ yasboot cluster status -c yashandb -d
8.3使用yasboot工具连接数据库,查看实例状态
yasboot sql -d sys/Yashan#123@192.168.126.102:1688
8.4使用yasql工具连接数据库,创建数据库用户并赋权
yasql 是YashanDB的客户端连接管理工具,可以通过此工具连接数据库服务器并对其进行操作和维护,除了具备操作数据库的基本功能,yasql还提供了若干其他功能,便于用户使用。yasql工具类似于Oracle SQL*Plus。
yasql / as sysdba
[yashan@dbnode1 install]$ yasql / as sysdba
YashanDB SQL Personal Edition Release 23.2.1.100 x86_64
Connected to:
YashanDB Server Personal Edition Release 23.2.1.100 x86_64 - X86 64bit Linux
SQL> create user C##test identified by testpass;
Succeed.
SQL> GRANT DBA TO C##test;
Succeed.
8.5数据库实例管理
相关进程:
yasdb进程
--yasdb为YashanDB的主进程,启动数据库实例后,系统中可监控到此进程。
yasom进程
--yasom为YashanDB的运维服务进程,接受yasboot命令并进行指令下发和控制,管理yasagent。
yasagent进程
--yasagent进程为YashanDB的无状态运维服务进程,接受yasom指令并通过工具/驱动/命令等方式向yasdb或文件系统执行查询和操作等任务。
--yascs进程
yascs进程为YashanDB的集群服务管理进程,部署共享集群后将会启动此进程
OM方式
OM方式是于操作系统终端中通过 yasboot 工具远端调整数据库实例状态。
[yashan@dbnode1 install]$ yasboot cluster stop -c yashandb
type | uuid | name | hostid | index | status | return_code | progress | cost
-------------------------------------------------------------------------------------------------
task | 1138791afe351eb2 | StopYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | 4
------+------------------+------------------+--------+----------+---------+--------------------
task completed, status: SUCCESS
[yashan@dbnode1 ~]$ yasboot process yasagent stop -c yashandb
stop local agent successfully!
[yashan@dbnode1 ~]$ yasboot process yasom stop -c yashandb
stop yasom successfully
[yashan@appnode1 bin]$ yasboot process yasom start -c yashandb
start yasom successfully
[yashan@appnode1 bin]$ yasboot process yasagent start -c yashandb
start local agent successfully!
[yashan@appnode1 bin]$ yasboot cluster start -c yashandb
type | uuid | name | hostid | index | status | return_code | progress | cost
---------------------------------------------------------------------------------------------------
task | ec3e81867d2c373b | StartYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | 9
------+------------------+-------------------+--------+----------+---------+-------------+------
task completed, status: SUCCESS
9.服务启停
process yasom start
$ yasboot process yasom start -c yashandb
process yasagent start
$ yasboot process yasagent start -c yashandb
process yashandb start
yasboot cluster start -c yashandb
process yashandb stop
$ yasboot cluster stop -c yashandb
process yasagent stop
$ yasboot process yasagent stop -c yashandb
process yasom stop
$ yasboot process yasom stop -c yashandb




