大家好,我是JiekeXu,江湖人称“强哥”,青学会MOP技术社区主席,荣获Oracle ACE Pro称号,崖山最具价值专家YVP,IvorySQL开源社区专家顾问委员会成员,墨天轮MVP,墨天轮年度“墨力之星”,拥有 Oracle OCP/OCM 认证,MySQL 5.7/8.0 OCP 认证以及金仓KCA、KCP、KCM、KCSM证书,PCA、PCTA、OBCA、OGCA等众多国产数据库认证证书,欢迎关注我的微信公众号“JiekeXu DBA之路”,然后点击右上方三个点“设为星标”置顶,更多干货文章才能第一时间推送,谢谢!

前 言
开源数据库是不存在 License 这个说法的,只有商业数据库才有 License 这个说法,而且 License 授权和价格没有统一的标准,每个行业每一个公司都不太一样,毕竟前段时间还有 130 块钱一套的国产数据库,你能用 130 块买一套国产数据库吗?今天我们先来看看金仓数据库 KingbaseES License 到期会怎么样?毕竟每个国产数据库对于这块的设计都不一样,只有使用过了才有发言权,不要道听途说。
微信公众号也同时发布了这篇文章,评论区比较有趣,感兴趣的也可直接查看微信文章。
License 分类
数据库 License 是 KingbaseES 提供的授权文件,其中会对数据库有效日期、发布类型、最大并发连接数、mac 地址、ip 等信息进行设置。
如果在 License 文件中信息与安装环境中相关信息不匹配,数据库将无法启动。
License根据用途可以分为两种类型,商用类型和非商用类型。
- 商用类型
用户购买的License都应属于商用类型。根据合同约定License的期限为永久有效或者为固定期限限制。
- 非商用类型
用于测试、试用等特殊用途的临时License,提供临时授权,有着严格的期限限制。
金仓 License 有如下四种分类,差异如下图:

License 过期了会咋样
那么 License 要是过期了怎么办?有江湖传言,说国产数据库的 License 到期立马就会关闭数据库,不给你用了,真的是那样的吗?目前接触到头部的两家集中式数据库,当 License 过期后并没有直接关库,而是可以正常使用,一家仅在日志中提示,重启也可以正常启动,另一家仅在登录的时候提示,但要是重启那么就无法正常启动了。
今天中午使用到了金仓 KES 单机数据库,出于好奇,一台 License 过期的个人测试数据库,想着重启一下看看会怎么样?于是就停止了数据库,打算重启一下就启不来了。
如果不重启数据库或不重启主机,那么 License过期了是没有影响的,只是在登录 ksql 的时候有到期或者过期的提示。
WARNING:License file expired. Please replace the license file in time

停止数据库或者重启主机,那么由于 License 的限制,数据库实例就无法启动了。
[kingbase@jiekexu ~]$ sys_ctl stop -D $KINGBASE_DATA
waiting for server to shut down.... done
server stopped
[kingbase@jiekexu ~]$
[kingbase@jiekexu ~]$ sys_ctl start -D $KINGBASE_DATA
waiting for server to start....FATAL: XX000: License file expired.
LOCATION: KesMasterMain, master.c:851
stopped waiting
sys_ctl: could not start server
Examine the log output.

那么有什么办法继续使用这套环境了,网友给了两个方案重装或者打快照,利用之前的快照还原的方式继续使用,但这两个方案好像都是放弃目前数据库中现有的数据,有点过于极端;那么还有两种方案可以选择,那就是找厂商申请正式的 License 文件,这个是正途,生产测试都得这么来。我这是个人学习测试环境,没必要申请,申请也没那么快;所以就尝试修改操作系统时间,注意生产和准生产环境不建议使用,这样会导致时间类型的字段有问题,仅供个人学习使用。
修改操作系统时间
第一次修改为去年今天的时间(20240729),然后启动实例也是不行,因为这个时候还没安装数据库呢,实例是今年2月24号创建的。

查看 LICENSE 文件内容
因为 License 是中文文本内容,我们可以设置成中文格式查看一下内容,可以看到有效期是 90天,从数据库安装时间算起。
[kingbase@jiekexu install]$ find /data/KingbaseES -name license.dat /data/KingbaseES/V9/KESRealPro/V009R001C001B0030/license.dat /data/KingbaseES/V9/license.dat [kingbase@jiekexu install]$ export LANG=zh_CN.UTF-8 [kingbase@jiekexu install]$ more license.dat -------------------END KINGASE.LICENSE.3.0 PRIVATE KEY--------------------- License序列号 --- 启用 --- 197C9F62-3209-11EF-AACD-000C29CBE49F 生产日期 --- 启用 --- 2024-06-24 产品名称 --- 启用 --- KingbaseES V8 细分版本模板名 --- 启用 --- SALES-企业版 V9R1 产品版本号 --- 启用 --- V009R001C 浮动基准日期 ------ 启用 有效期间 --- 启用 --- 90 用户名称 --- 启用 --- 官方网站试用授权 项目名称 --- 启用 --- 官方网站试用授权

[kingbase@jiekexu ~]$ ksql
Type "help" for help.
WARNING:License file will expire in 26 days.
--查看 License 剩余时间
kingbase=# select get_license_validdays();
get_license_validdays
-----------------------
26
(1 row)
License 替换办法
文件过期的现象:
有错误显示:License file expired
解决办法:
第一步:寻找原厂要对应版本的新license文件
第二步:搜索主机上的license文件
find / -name license.dat

第三步:替换上面找到路径的绝对路径下的文件,文件名和权限需要保持原样,大概可能是如下四个地方。
chown -R kingabse:kingbase license.dat
1. 安装目录下的license文件
2. 安装目录下的Server/bin下的license文件
3. 安装目录下的Cluster/bin下的license文件
4. 安装目录下的ManagerTools/tools//bin下的license文件
第四步:重启或者重载生效。
重启生效
sys_ctl restart -D $KINGBASE_DATA
生产环境建议动态生效,不用重启库
select sys_reload_conf();
select pg_reload_conf();
第五步:登录数据库查看 License 剩余时间
--查看 License 剩余时间
kingbase=# select get_license_validdays();
get_license_validdays
-----------------------
365
官方文档中还提到 reload_license 但是我这里没有这个命令,不知道是不是版本问题,我这里是 V009R001C001B0030,官方文档里是 V009R001C002B0014,后续再看吧
$ sys_ctl -D data reload_license /xxx/xxx/xxx/license.dat
Checking license file...
Check successfully. license will never expires.
Reload successfully.

参考链接
https://bbs.kingbase.com.cn/docHtml?recId=d16e9a1be637c8fe4644c2c82fe16444&url=aHR0cHM6Ly9iYnMua2luZ2Jhc2UuY29tLmNuL2tpbmdiYXNlLWRvYy92OS9oaWdobHkvYXZhaWxhYmlsaXR5L2luZGV4Lmh0bWw
全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~
欢迎关注我的公众号【JiekeXu DBA之路】,一起学习新知识!
——————————————————————————
公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
ITPUB:https://blog.itpub.net/69968215
腾讯云:https://cloud.tencent.com/developer/user/5645107
——————————————————————————





