暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

国产数据库 License 到期了会宕机吗?

作者 | JiekeXu
来源 |公众号 JiekeXu DBA之路(ID: JiekeXu_IT)
如需转载请联系授权 | (个人微信 ID:JiekeXu_DBA)
大家好,我是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 年公众号历史文章合集


      文章转载自青年数据库学习互助会,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论