一.背景
在参加墨天轮的一个活动看到了YashanDB,活动详情如下,大家有兴趣的话点访问下面的网址: https://www.modb.pro/db/1721713295223758848
二.个人版单机部署
2.1.首先登录官网
https://www.yashandb.com/yashandb
系统架构有单机、主备、共享集群、分布式。
看到这个图我有个疑问,一个标记为active,一个标记为standy,是不是只能有一个节点可用,最大支持多少节点,这个后期学习之后再来回答。
不但有集群、复制,还有分布式架构。可以说功能是很全面的。我们来安装个人版试一下吧。
2.2.下载软件
https://download.yashandb.com/download
目前只有YashanDB个人版提供下载。
个人版有什么功能呢 ?
点击release note,我们看到如下信息:
2.3.准备操作系统
[root@centos8 yashan]# cat /etc/redhat-release
CentOS Linux release 8.3.2011
[root@centos8 yashan]#
2.3.1.创建用户
$ useradd -d /home/yashan -m yashan
$ passwd yashan
\--配置sudo免密
\# cd /etc
\# ll sudoers
\# chmod +w sudoers
\# vim /etc/sudoers
\--添加
\# yashan ALL=(ALL)NOPASSWD:ALL
\--恢复原来只读属性
\# chmod -w sudoers
\--配置组
\# groupadd YASDBA
\# usermod -a -G YASDBA yashan
2.3.2.操作系统参数调整
vim /etc/security/limits.conf yashan soft nofile 65536 yashan hard nofile 65536 yashan soft nproc 65536 yashan hard nproc 65536 yashan soft stack 8192 yashan hard stack 8192 yashan hard rss unlimited yashan soft rss unlimited $ ulimit -a
2.3.3.关闭交换分区
----使用sysctl -a | grep swappiness查看当前状态。
# sysctl -w vm.swappiness=0
# echo "vm.swappiness = 0">> /etc/sysctl.conf
-----
[root@centos8 ~]# sysctl -w vm.swappiness=0
vm.swappiness = 0
[root@centos8 ~]# echo "vm.swappiness = 0">> /etc/sysctl.conf
[root@centos8 ~]# sysctl -a | grep swappiness
vm.swappiness = 0
[root@centos8 ~]#
2.3.4. 调整自动分配本地端口范围
--下限值建议大于30000。
# sysctl -w net.ipv4.ip\_local\_port\_range='32768 60999'
# echo "net.ipv4.ip\_local\_port\_range = 32768 60999" >> /etc/sysctl.conf
2.3.5. 调整进程的VMA上限
---使用sysctl -a|grep vm.max\_map\_count查看当前上限值,建议大于2000000。
# sysctl -w vm.max\_map\_count=2000000
# echo "vm.max\_map\_count=2000000" >> /etc/sysctl.conf
2.3.6.关闭透明大页
---查看透明大页是否开启
---在一些系统的内核中默认开启了透明大页选项。您可以通过以下指令确认:
## 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\],则说明透明大页关闭。
--关闭透明大页
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="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet transparent\_hugepage=never"
GRUB\_DISABLE\_RECOVERY="true"
\# grub2-mkconfig -o /boot/grub2/grub.cfg
重启操作系统生效。
2.3.7.防火墙
方法一.关闭防火墙
##关闭防火墙
systemctl stop firewalld
##关闭开机自启
systemctl disable firewalld
2.3.8.开启ssh服务
ystemctl status sshd.service
systemctl start sshd.service
2.3.9.创建目录
# cd /
# mkdir data
# cd data
# mkdir yashan
# chmod -R 777 /data/yashan
$u - yashan
$ cd
$ mkdir install
$ cd install
$ pwd
/home/yashan/install
/上传安装包/
$ tar -zxf yashandb-23.1.0.100-linux-x86_64.tar.gz
$ ll
2.4.可视化安装
我们看到文档说支持可视化安装,那我们就试试可视化安装。
先上传安装包。
[yashan@centos8 install]$ ll
total 248120
-rw-r–r--. 1 yashan yashan 254073880 Nov 9 21:09 yashandb-personal-23.1.1.100-linux-x86_64.tar.gz
[yashan@centos8 install]$
tar zxf yashandb-personal-23.1.1.100-linux-x86_64.tar.gz
2.4.1.启动web服务
$ cd /home/yashan/install
./bin/yasom --web --listen 192.168.59.8:9001
我这里192.168.59.8是虚拟机地址,但是在宿主机上运行也能出来图形化界面。
2.4.2.填写数据库基本信息和主机信息
这里就部署一台机器,所以这里只有一台服务器。
看文档的话如果想部署到多台的话这里添加就行。
2.4.3.suodo相关配置
- 创建cgroup:创建用于YashanDB CPU资源管理的cgoup目录。
- 开机自启monit:开机自动拉起OM和数据库进程。
- 用户添加到YASDBA用户组:将安装用户加入YASDBA组,可免密登录数据库。
我这里是都选上,给要求目录的地方创建了目录。
2.4.4.数据库节点配置
这里好像需要手填,我给了2g
2.4.5.数据库建库参数
切换到建库SQL。
可以看到,不管是redo log还是归档模式,命令上跟Oracle是类似的。
但是在这一步的参数,给我一种mysqll的熟悉感。
2.4.6.开始部署
这里有个问题,data_path设置到了
/home/yashan/yasdb_home/yashandb/data/yashandb
我本意是想设置到/data/yashan
不知道这个是不是存放数据的位置,我在前面几个步骤没找到设置的地方。可能是我选择了推荐配置的原因。
这里部署失败了,
失败原因:
package install error, stdout: checking install package… install version: yashandb 23.1.1.100 host0001 failed, 1, create Cgroup failed, unsupport cgroup version , please check your linux system\n, Process exited with status 1 package install failed , stderr:
报错是在cgroup有问题,那我们重来一遍,不选择这个选项。如下:
取消cgroup选项之后重新部署成功了。
2.4.7.验证安装
--修改sys用户口令
cd /home/yashan/install
[yashan@centos8 install\]$ ./bin/yasboot cluster password set -n Oracle1! -c yashandb
type | uuid | name | hostid | index | status | return\_code | progress | cost
----------------------------------------------------------------------------------------------------------
type | uuid | name | hostid | index | status | return\_code | progress | cost
----------------------------------------------------------------------------------------------------------
type | uuid | name | hostid | index | status | return\_code | progress | cost
----------------------------------------------------------------------------------------------------------
task | ce6e4c3f063f62cc | YasdbPasswordSet | - | yashandb | SUCCESS | 0 | 100 | 2
------+------------------+------------------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS
[yashan@centos8 install\]$
--生效环境变量
[yashan@centos8 install\]$ cd /home/yashan/yasdb\_home/yashandb/23.1.1.100/conf/
[yashan@centos8 conf\]$ ll
total 724
-rw-rw-r--. 1 yashan YASDBA 100845 Nov 1 05:04 database\_options.json
drwxrwxr-x. 2 yashan yashan 73 Nov 9 22:24 monit
-rw-rw-r--. 1 yashan YASDBA 297 Nov 1 05:04 profile.toml
-rw-rw-r--. 1 yashan YASDBA 6837 Nov 1 05:04 sqlcollect.toml
-rw-rw-r--. 1 yashan YASDBA 23577 Nov 1 05:04 sqlhtml.template
-rwx------. 1 yashan yashan 304 Nov 9 22:24 yashandb.bashrc
-rw-rw-r--. 1 yashan YASDBA 590524 Nov 1 05:04 yasreport.template
-rw-rw-r--. 1 yashan YASDBA 3071 Nov 1 05:04 yfs\_options.json
[yashan@centos8 conf\]$ cat yashandb.bashrc
export YASDB\_HOME=/home/yashan/yasdb\_home/yashandb/23.1.1.100
export PATH=${YASDB\_HOME}/bin:$PATH
export LD\_LIBRARY\_PATH=${YASDB\_HOME}/lib:$LD\_LIBRARY\_PATH
if command -v rlwrap >/dev/null 2>&1; then
alias yasql="rlwrap yasql"
fi
export YASDB\_DATA=/home/yashan/yasdb\_home/yashandb/data/yashandb/db-1-1
[yashan@centos8 conf\]$ cat yashandb.bashrc >> ~/.bashrc
[yashan@centos8 conf\]$ source ~/.bashrc
[yashan@centos8 conf\]$
[yashan@centos8 conf\]$ yasql
YashanDB SQL Personal Edition Release 23.1.1.100 x86\_64
YASQL-00007 logon text expected
SQL> conn sys/Oracle1!
Connected to:
YashanDB Server Personal Edition Release 23.1.1.100 x86\_64 - X86 64bit Linux
SQL>
SQL> show user
YASQL-00010 unknown SHOW option
SQL> SELECT STATUS FROM V$INSTANCE;
STATUS
-------------
OPEN
1 row fetched.
SQL> SELECT database\_name FROM v$database;
DATABASE\_NAME
----------------------------------------------------------------
yashandb
1 row fetched.
SQL>
2.5.配置yashanDB连接工具
跟利用PLSQL Developer连接oracle一样,我们需要一个更加方便的工具去连接yashandb,在下载界面我们可以看到有类似的工具,安装来连接一下。
我们就下载个windows平台上的来试一下。
以下是我的安装过程:
2.5.1.下载JDK
DBeaver的运行依赖于Java环境,本文档中介绍的DBeaver版本为V23.1,依赖于JDK17及以上版本的Java环境。
https://learn.microsoft.com/zh-cn/java/openjdk/download
2.5.2.配置jdk
我下载的是zip格式的,直接解压缩,然后配置环境变量即可
2.5.3.配置dbwaver
Windows是zip格式,直接解压缩。
编辑_dbeaver.ini_文件,在文件内容头部加入如下内容:
-vm
D:\ruanjian\microsoft-jdk-21.0.1-windows-x64\jdk-21.0.1+12\bin #定位到bin目录
修改上述配置之后打开
然后进来之后有个示例用户,我点击了安装,接着就到了如下界面。
2.5.4.连接数据库
发现有个小问题,比如下面的创建用户的语句,如果选中两个点击执行sql的话就会报错,只能一行一行的去执行。
三.总结
1.跟Oracle很像,常用操作的语法一样,对于之前用Oracle的小伙伴来说很友好。当然,也有一些命令没有,比如我习惯性的敲了 show user就没有。
2.有自己的开源开发平台YashanDB DBeaver,也有自己的监控平台。
3.在官网我看得到也有迁移平台,不过不能下载。
总体来说我是非常看好YashanDB的,有以下几个原因:
1.产品架构多样,意味着可以用于多种场景。
2.高度兼容Oracle,目前很多核心业务还是运行在Oracle上,如何保证迁移的兼容性,以及迁移之后的维护成本,最重要的是保证迁移之后的性能。 在这几点上,至少运维人员的学习成本降低了一些。
3.通过查看官网文档,发现文档比较完善的。