
大家好,我是JiekeXu,江湖人称“强哥”,青学会MOP技术社区联合创始人,荣获Oracle ACE Pro称号,金仓最具价值倡导者KVA,墨天轮MVP,墨天轮连续多年年度“墨力之星”,拥有Oracle OCP/OCM 认证,MySQL 5.7/8.0 OCP认证以及金仓KCA、KCP、KCM、KCSM,PCA、PCTA、OBCA等众多国产数据库认证证书。欢迎点击下方“JiekeXu DBA之路”公众号名片可关注我的微信公众号,然后点击右上方三个点“设为星标”置顶,更多干货文章才能第一时间推送给你!后台回复【加群】,添加我个人微信拉你进群一起交流学习。

国产数据库 License 到期了会停库吗?
前 言
开源数据库是不存在 License 这个说法的,只有商业数据库才有 License 这个说法,而且 License 授权和价格没有统一的标准,每个行业每一个公司都不太一样,毕竟前段时间还有 130 块钱一套的国产数据库,你能用 130 块买一套国产数据库吗?今天我们先来看看金仓数据库 KingbaseES License 到期会怎么样?毕竟每个国产数据库对于这块的设计都不一样,只有使用过了才有发言权,不要道听途说,也欢迎使用过的朋友一起来评论区聊聊,避免后来者踩坑,谢谢!

License 分类
数据库 License 是 KingbaseES 提供的授权文件,其中会对数据库有效日期、发布类型、最大并发连接数、mac 地址、ip 等信息进行设置。如果在 License 文件中信息与安装环境中相关信息不匹配,数据库将无法启动。
License 根据用途可以分为两种类型,商用类型和非商用类型。
• 商用类型
用户购买的 License 都应属于商用类型。根据合同约定 License 的期限为永久有效或者为固定期限限制。
• 非商用类型
用于测试、试用等特殊用途的临时 License,提供临时授权,有着严格的期限限制。
金仓 License 有如下四种分类,差异如下图:

License 过期了会咋样
那么 License 要是过期了怎么办?有江湖传言,说国产数据库的 License 到期立马就会关闭数据库,不给你用了,真的是那样的吗?欢迎生产环境使用过的朋友一起来评论区聊聊。目前我只接触到头部的两家集中式数据库,当 License 过期后并没有直接关库,而是可以正常使用,一家仅在日志中提示,重启也可以正常启动,另一家仅在登录的时候提示,但要是重启那么就无法正常启动了。
某日中午使用到了金仓 KES 单机测试数据库,出于好奇,是一台使用 90 天测试授权的 License 过期的个人测试数据库,想着重启一下看看会怎么样?于是就停止了数据库,打算重启一下,然后就启不来了,也是第一次遇到这种情况,特此记录一下。
如果不重启数据库或不重启主机,那么 License 过期了是没有影响的,任何功能都不限制,只是在登录 ksql 的时候有快到期提醒或者过期的提示。
WARNING:License file expired. Please replace the license file in time
如果停止数据库或者重启主机,那么由于 License 的限制,数据库实例就无法启动了。国产数据库因 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号创建的,第二次将时间修改为今年四月份(20250429),然后才正常启动。

查看 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
test=# select version();version----------------------------------------------------------------------------------------------------------------------KingbaseES V009R001C001B0025 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit(1 行记录)test=# select get_license_validdays();get_license_validdays-----------------------61(1 行记录)
test=# select sys_reload_license('');错误: 函数 sys_reload_license(unknown) 不存在第1行select sys_reload_license('');^提示: 没有匹配指定名称和参数类型的函数. 您也许需要增加明确的类型转换.test=#test=# select sys_reload_license(NULL);错误: 函数 sys_reload_license(unknown) 不存在第1行select sys_reload_license(NULL);^提示: 没有匹配指定名称和参数类型的函数. 您也许需要增加明确的类型转换.
官方文档中还提到 reload_license 但是我这里没有这个命令,不知道是不是特定版本才有,我这里是 V009R001C001B0030,查看了 V009R001C001B0025 版本也没有,但官方文档里是 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
IFCLUB:https://ifclub.com.cn/user?type=1
腾讯云:https://cloud.tencent.com/developer/user/5645107 ——————————————————————————

第三批国测公布:国产数据库新势力的破局与价值
2024 年公众号 JiekeXu DBA之路历史文章合集
2023 年公众号 JiekeXu DBA之路历史文章合集
2022 年公众号 JiekeXu DBA之路历史文章合集
2021 年公众号历史文章合集





