在苹果 MacOS 上基于 Docker 容器运行人大金仓(Kingbase)V8 R3 数据库的教程
尊贵的苹果开发者,在国产化适配时是否很烦恼国产数据库没有提供 MacOS 运行环境下的安装文件?本文将带你在 MacOS 上基于 Docker 容器来运行国产化数据库:人大金仓数据库(Kingbase),其他国产数据库也是可以这样封装的,只不过我暂时没有需要就没有封装。
环境准备
首先,你的 MacOS 上需要安装 Docker,作为开发者的你应该装好了吧,Docker 的安装不是本文的重点,所以就不在此赘述了,默认已经安装好Docker。
然后,在你的 MacOS 上新建一个文件夹,作为数据库的数据目录挂载,要不然 Docker 容器中无法保存我们的数据,我这里新建到了 /opt/kingbase/data,然后要给 Docker 访问这个目录的权限,我直接把 /opt 权限都给 Docker 了,设置的路径是:Preferences -> Resources -> File Sharing:
然后是准备一个 license.dat 文件,这个在官网就可以下载开发版的授权文件,我的 Git 仓库里也有,开发版的授权文件可以解锁所有功能,但是限制连接数10个,开发够用了,注意设置自己的数据库连接池最大连接数就行。
代码仓库
Github:https://github.com/renfei/kingbase-es-v8-r3-docker.git
码云:https://gitee.com/rnf/kingbase-es-v8-r3-docker.git
Gitlab:https://gitlab.com/renfei/kingbase-es-v8-r3-docker.git
构建Docker镜像
打开命令行,cd 到你准备下载的目录下,然后克隆、cd 进目录、开始构建Docker镜像:
git clone https://github.com/renfei/kingbase-es-v8-r3-docker.git
cd kingbase-es-v8-r3-docker
docker build -t kingbase:v8r3 .
如果是国内用户,可以使用我的码云仓库地址:https://gitee.com/rnf/kingbase-es-v8-r3-docker.git,注意最后一步构建Docker镜像,最后有个“点”不要忘记。
启动运行容器
等待构建完成,使用构建的镜像启动运行容器:
docker run -d --name kingbase -p 54321:54321 -e SYSTEM_PWD=SYSTEM -v /opt/kingbase/data:/opt/kingbase/data -v /opt/kingbase/license.dat:/opt/kingbase/Server/bin/license.dat kingbase:v8r3
这里说明一下参数:
--name: 容器名称
-p: 端口映射
-e: 默认用户SYSTEM,通过环境变量SYSTEM_PWD指定初始化数据库时的默认用户密码
-v: 挂载宿主机的一个目录,这里挂载了数据目录和license文件
到这里,已经在 MacOS 上基于 Docker 运行起来了 人大金仓 Kingbase 数据库,可以使用客户端去连接了,端口是 54321。
常见问题 Q&A
FATAL: lock file kingbase.pid already exists
提示:FATAL: lock file kingbase.pid already exists。是因为 docker 容器被关闭了数据库还没来得及停机,我们去数据目录下把 kingbase.pid 文件删除掉即可,数据目录就是上面映射本机目录的,我的教程里是在 /opt/kingbase/data/。
kingbase: superuser_reserved_connections must be less than max_connections
日志提示:kingbase: superuser_reserved_connections must be less than max_connections,并且无法连接数据库。我们还是先去数据目录下找到 kingbase.conf 配置文件,里面有两个:
#superuser_reserved_connections = 10 # (change requires restart)
#super_manager_reserved_connections = 5 # (change requires restart)
我们把前面第一个井号去掉,然后把数字都改成 1 再启动。
商业用途请联系作者获得授权。
版权声明:本文为博主「任霏」原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接及本声明。
相关推荐
猜你还喜欢这些内容,不妨试试阅读一下评论与留言
以下内容均由网友提交发布,版权与真实性无法查证,请自行辨别。- 2023-06-12 17:19:07
- Zhengzhou, Henan, China
- 回复
- 2023-06-12 13:07:48
- Zhengzhou, Henan, China
- 回复
- 2023-06-12 14:13:36
- Beijing, Beijing, China
- 回复
- 2023-06-12 17:13:09
- Zhengzhou, Henan, China
- 回复
- 2023-06-12 16:56:47
- Zhengzhou, Henan, China
- 回复
- 2023-06-12 17:01:02
- Beijing, Beijing, China
- 回复
- 2023-06-12 17:21:04
- Zhengzhou, Henan, China
- 回复
- 2023-01-29 17:29:31
- Lishui, Zhejiang, China
- 回复
- 2022-03-25 11:34:53
- Guangzhou, Guangdong, China
- 回复
- 2022-03-21 11:04:19
- Quzhou, Zhejiang, China
- 回复
- 2022-03-21 13:59:52
- Beijing, Beijing, China
- 回复
- 2022-03-09 23:35:07
- Chengdu, Sichuan, China
- 回复
- 2022-03-09 23:33:40
- Chengdu, Sichuan, China
- 回复
- 2023-07-12 15:34:00
- Zhengzhou, Henan, China
- 回复
- 2022-03-10 09:44:31
- Beijing, Beijing, China
- 回复
- 2022-03-08 16:06:07
- Quzhou, Zhejiang, China
- 回复
- 2022-03-08 18:58:11
- Harbin, Heilongjiang, China
- 回复
- 2022-03-09 09:26:22
- Quzhou, Zhejiang, China
- 回复
- 2021-10-25 02:00:35
- Hangzhou, Zhejiang, China
- 回复
- 2021-10-28 22:12:41
- Beijing, Beijing, China
- 回复
- 2021-10-04 21:26:42
- Beijing, Beijing, China
- 回复
- 2021-09-27 11:49:04
- Beijing, Beijing, China
- 回复
- 2021-09-24 23:20:35
- Beijing, Beijing, China
- 回复
- 2021-09-24 11:55:00
- Beijing, Beijing, China
- 回复
- 2021-09-24 13:46:36
- Beijing, Beijing, China
- 回复
- 2021-09-24 10:14:18
- Beijing, Beijing, China
- 回复
- 2021-09-24 13:43:54
- Beijing, Beijing, China
- 回复
- 2021-08-27 14:23:13
- Dongguan, Guangdong, China
- 回复
- 2021-08-27 20:37:52
- Beijing, Beijing, China
- 回复
微信订阅号
扫码关注「任霏博客」微信订阅号- 大佬 引入jar包那里的 driver class 怎么选的?
- 我也遇到了这个问题,已经解决了,在此分享一下 1、宿主机也要创建kingbase的用户和用户组,并且要查看一下用户和用户组的ID(这个很重要) 2、把data目录的用户和用户组设置为kingbase 3、先不要把data路径挂载到宿主机上,这时就可以正常启动,启动后进入容器,查看一下容器内的kingbase的用户和用户组ID是多少,和第一步的ID是否一致,如果ID一致,那正常挂载目录就行;如果ID不一致,那就需要修改Dockerfile文件,在构建镜像时,修改容器内的用户和用户组ID,必须和宿主机的保持一致。然后重新构建镜像,就可以正常挂载宿主机目录了 4、其实直接修改宿主机的用户和用户组ID也是可以的,但是容器内的ID一般是1000,但是宿主机的这个ID很可能已经被占用了,无法修改,就只能修改容器内的ID
- 接口已经允许跨域请求,也就是说你可以在你的页面上调用,获取用户的公网 IP。 如果你还需要其他需求,可以提交 Issue 给我。
- V008R003C002B0320 这个对应的jdbc链接驱动你在哪里找到的?我也遇到了这个问题。
- WARNING: max_connections should be less than orequal than 10 (restricted by license) HINT: the value of max_connect is set 10 WARNING: max_connections should be less than orequal than 10 (restricted by license) HINT: the value of max_connect is set 10 kingbase: superuser_reserved_connections must be less than max_connections 我按照文档修改了以后,不知道如何重启。
- 然后把数字都改成 1 再启动。 如何重新启动?
- ksql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.KINGBASE.54321"
- 进入容器查看一下日志,是不是启动失败了,日志文件在:/opt/kingbase/logfile
- ksql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.KINGBASE.54321"?
- 先通过 docker exec -it 容器名/id /bin/bash 进入容器,然后在容器中使用 ksql 客户端进行连接数据库:/opt/kingbase/Server/bin/ksql -U system test
- 免费.ml域名10年委托合同到期被马里共和国收回域名经营权
- 从极狐Gitlab看各种中间件技术选型
- 时隔十年首次收到 Google AdSense 的付款
- ga域名被加蓬共和国从Freenom公司手中收回域名经营权
- Freenom 被 Meta(Facebook) 起诉导致暂停 .tk/.ga/.ml/.cf/.gq 等新域名注册
- 生花妙笔信手来 – 基于 Amazon SageMaker 使用 Grounded-SAM 加速电商广告素材生成 [1]
- github.renfei.net 不再完整代理 Github 页面改为代理指定文件
- 优雅的源代码管理(三):本地优雅的使用 Git Rebase 变基
- 优雅的源代码管理(二):Git 的工作原理
- 优雅的源代码管理(一):版本控制系统 VCS(Version Control System)与软件配置管理 SCM(Software Configuration Management)