从 YCA 第二期结课到现在已经过去三个月,当时学习课程时,并没有提供个人版安装包,只是提供了一个有时效性的远程访问端口,可以使用的功能也很局限,更多是理论上的感知和了解。
现在第四期的 YCA 培训已经开始,并提供了 YashanDB 个人版,可以自行下载、安装、测试,便利了很多。
YashanDB 的安装
安装包
从 YashanDB 官网找到下载页面: https://download.yashandb.com/download
这里选择【YashanDB 个人版】,安装包为:Yashandb Personal 23.1 for Linux x86-64
。
下载后,解压缩:
[root@rocky9 yashan]# ls yashandb-personal-23.1.1.100-linux-x86_64.tar.gz [root@rocky9 yashan]# tar zxf yashandb-personal-23.1.1.100-linux-x86_64.tar.gz [root@rocky9 yashan]# ls admin bin conf ext gitmoduleversion.dat include java lib LICENSE plug-in scripts yashandb-personal-23.1.1.100-linux-x86_64.tar.gz [root@rocky9 yashan]# du -sh ./* -c 11M ./admin 62M ./bin 720K ./conf 26M ./ext 12K ./gitmoduleversion.dat 36K ./include 8.0K ./java 602M ./lib 16K ./LICENSE 980K ./plug-in 32K ./scripts 244M ./yashandb-personal-23.1.1.100-linux-x86_64.tar.gz 944M total [root@rocky9 yashan]#
在 scripts 路径下,提供了安装和初始化脚本,
[root@rocky9 yashan]$ ll scripts/ total 32 -rwxrwxr-x. 1 shawnyan shawnyan 3296 Oct 19 15:59 createResourceCgroup.sh -rwxrwxr-x. 1 shawnyan shawnyan 2934 Oct 19 15:59 initDB.sh -rwxrwxr-x. 1 shawnyan shawnyan 2104 Oct 19 15:59 initStandby.sh -rw-rw-r--. 1 shawnyan shawnyan 411 Oct 19 15:59 install.ini -rwxrwxr-x. 1 shawnyan shawnyan 1412 Oct 19 15:59 install.sh -rwxrwxr-x. 1 shawnyan shawnyan 1157 Oct 19 15:59 startup.sh -rwxrwxr-x. 1 shawnyan shawnyan 1157 Oct 19 15:59 stop.sh -rwxrwxr-x. 1 shawnyan shawnyan 667 Oct 19 15:59 yascheckStart.sh
安装、初始化
安装的配置文件使用默认的即可,无需修改,需要注意的是,YashanDB 默认监听端口:1688
分别执行安装脚本、初始化脚本:
[root@rocky9 yashan]# ./scripts/install.sh [root@rocky9 yashan]# ./scripts/initDB.sh process started! Database open succeed !
此时,数据库已经启动,可以看到 1688 端口已经被监听。
[root@rocky9 yashan]# ss -antpl | grep 1688 LISTEN 0 4096 0.0.0.0:1688 0.0.0.0:* users:(("yasdb",pid=70869,fd=15))
注意,
在安装完成后,会在 bashrc
文件末尾增加一行,所以需要导入环境变量。
[root@rocky9 yashan]# tail ~/.bashrc -n1 [ -f /root/yashandb/yasdb_home/conf/yasdb.bashrc ] && source /root/yashandb/yasdb_home/conf/yasdb.bashrc [root@rocky9 yashan]# source ~/.bashrc [root@rocky9 yashan]#
可以看到这里设置了几个环境变量:
[root@rocky9 yashan]# cat /root/yashandb/yasdb_home/conf/yasdb.bashrc export YASDB_HOME=/root/yashandb/yasdb_home export YASDB_DATA=/root/yashandb/yasdb_data export PATH=$YASDB_HOME/bin:$PATH export LD_LIBRARY_PATH=$YASDB_HOME/lib:$LD_LIBRARY_PATH [root@rocky9 yashan]#
设置 sys 超管用户口令
进入 YASDB_HOME
,并使用 yaspwd
命令为超管用户设定密码。
[root@rocky9 yasdb_home]# yaspwd file=yasdb.pwd Enter password for SYS:dba1234!
这里需要注意的是,默认的密码校验规则较为复杂,密码至少8位,至少包含1个特殊字符,且不能包含用户名。
[root@rocky9 yasdb_home]# yaspwd file=yasdb.pwd Enter password for SYS:sys YASPW-00002 password complexity failed for SYS user : password must contain at least 8 characters [root@rocky9 yasdb_home]# yaspwd file=yasdb.pwd Enter password for SYS:sysdba123 YASPW-00002 password complexity failed for SYS user : password must contain at least 1 special character [root@rocky9 yasdb_home]# yaspwd file=yasdb.pwd Enter password for SYS:sysdba123! YASPW-00002 password complexity failed for SYS user : password must not contain the username
登录 YashanDB
这里为便于测试,直接将 YASDBA
用户组赋予 root
用户,如此便可以免密登录。
[root@rocky9 config]# yasql / as sysdba
YashanDB SQL Personal Edition Release 23.1.1.100 x86_64
Connected to:
YashanDB Server Personal Edition Release 23.1.1.100 x86_64 - X86 64bit Linux
SQL>
基础使用
登录后,查看数据库启动状态,和启动时间:
SQL> select status, startup_time from v$instance;
STATUS STARTUP_TIME
------------- ----------------------------------------------------------------
OPEN 2023-10-31 01:12:59.760037
1 row fetched.
查看日志文件:
SQL> select * from v$logfile;
THREAD# ID NAME BLOCK_SIZE BLOCK_COUNT USED_BLOCKS SEQUENCE# STATUS
------- ------------ ---------------------------------------------------------------- ------------ ------------ ------------ ------------ ---------
1 0 /root/yashandb/yasdb_data/dbfiles/redo0 4096 25600 9 1 INACTIVE
1 1 /root/yashandb/yasdb_data/dbfiles/redo1 4096 25600 5740 2 CURRENT
1 2 /root/yashandb/yasdb_data/dbfiles/redo2 4096 25600 0 0 INACTIVE
1 3 /root/yashandb/yasdb_data/dbfiles/redo3 4096 25600 0 0 INACTIVE
4 rows fetched.
查看 DBA 表:
SQL> select distinct owner, tablespace_name from dba_tables limit 10;
OWNER TABLESPACE_NAME
---------------------------------------------------------------- ----------------------------------------------------------------
SYS SYSTEM
SYS SYSAUX
SYS TEMP
MDSYS SYSTEM
4 rows fetched.
MySQL 兼容模式
YashanDB 通过 SQL 插件的形式兼容了部分 MySQL 特性,通过下面的命令可以启用 MySQL 兼容模式:
SQL> ALTER SYSTEM SET SQL_PLUGIN = 'MYSQL';
Succeed.
下面做些简单的测试:
SQL> create table t1 (id int);
Succeed.
SQL> insert t1 select 1;
[1:8]YAS-04115 "INTO" expected but missing
SQL> insert into t1 select 1;
YAS-00004 feature "implict table" has not been implemented yet
SQL> insert into t1 values (1);
1 row affected.
SQL> select * from t1;
ID
------------
1
1 row fetched.
SQL> desc t1;
NAME NULL? DATATYPE
---------------------------------------------------------------- --------- ---------------------------------
ID INTEGER
SQL> show create table t1;
YASQL-00010 unknown SHOW option
SQL> delete from t1 ;
1 row affected.
SQL> select * from t1;
ID
------------
0 rows fetched.
可以看到,这里只是兼容了一些最基础的语法,并不完善,也或许是个人版的功能并不完全。
总结
YashanDB 是国产数据库的一颗新星,“形”极其似 O 某,希望“神”不仅似,且能超越,最后遥遥领先。
🎉【直播预告】
11月2日,YashanDB 2023年度发布会将于云端直播开启,发布会以「惟实·励新」为主题,邀请企业用户、合作伙伴、广大开发者共同见证全新产品与解决方案。
惟实求真。YashanDB始终秉持着求真务实的态度,专注基础理论与底层技术的突破,选难题挑战、向实践求真;励新求变。YashanDB相信创新是推动发展的源动力,不断在产品技术、应用场景、用户体验方面寻求突破和创新,推动产业的革新。
本次发布会直播将在墨天轮同步进行,也将送出精美周边,欢迎大家报名!