在苹果 MacOS 上基于 Docker 容器运行人大金仓(Kingbase)V8 R3 数据库的教程
2021年08月02日 20:52:51 · 本文共 1,570 字阅读时间约 5分钟 · 17,589 次浏览尊贵的苹果开发者,在国产化适配时是否很烦恼国产数据库没有提供 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 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.renfei.net/posts/1003506
相关推荐
猜你还喜欢这些内容,不妨试试阅读一下以下内容均由网友提交发布,版权与真实性无法查证,请自行辨别。
用 -m pg 模式启动时,用 postgres 的客户端来连接,连接失败,看日志,显示 ksql: error: could not connect to server: FATAL: role "system" does not exist。 用同样的用户名和密码, oracle 模式启动是可以正常连接上的,应该怎么处理呢?
先通过 docker exec -it 容器名/id /bin/bash 进入容器,然后在容器中使用 ksql 客户端进行连接数据库:/opt/kingbase/Server/bin/ksql -U system test
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"
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"?
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 我按照文档修改了以后,不知道如何重启。
您好: 可以提供下对应版本的jdbc链接驱动包吗,谢谢 使用的人大金仓版本号:V008R003C002B0320 ps:The connection cannot be established because database version does not match driver version
我的命令如下: docker run -di --restart=always --privileged=true --name=kingbasev8r3 --user kingbase -p 54321:54321 -e SYSTEM_PWD=SYSTEM -v ${HOME}/docker/kingbase/data/:/opt/kingbase/data -v ${HOME}/docker/kingbase/license.dat:/opt/kingbase/Server/bin/license.dat kingbase:v8r3
执行run命令后查看日志,发现启动报错: The comparision of strings is case-insensitive. fixing permissions on existing directory /opt/kingbase/data ... initdb failed initdb: could not change permissions of directory "/opt/kingbase/data": Operation not permitted chown: changing ownership of '/opt/kingbase/data': Operation not permitted The files belonging to this database system will be owned by user "kingbase". This user must also own the server process. The database cluster will be initialized with locale "C". The default text search configuration will be set to "english". Data page checksums are disabled. 似乎是权限的问题,添加了 --privileged=true 也是同样报错,我的服务器是腾讯云centos7.6docker版,不知道博主有没有解决方法
我也遇到了这个问题,已经解决了,在此分享一下 1、宿主机也要创建kingbase的用户和用户组,并且要查看一下用户和用户组的ID(这个很重要) 2、把data目录的用户和用户组设置为kingbase 3、先不要把data路径挂载到宿主机上,这时就可以正常启动,启动后进入容器,查看一下容器内的kingbase的用户和用户组ID是多少,和第一步的ID是否一致,如果ID一致,那正常挂载目录就行;如果ID不一致,那就需要修改Dockerfile文件,在构建镜像时,修改容器内的用户和用户组ID,必须和宿主机的保持一致。然后重新构建镜像,就可以正常挂载宿主机目录了 4、其实直接修改宿主机的用户和用户组ID也是可以的,但是容器内的ID一般是1000,但是宿主机的这个ID很可能已经被占用了,无法修改,就只能修改容器内的ID
感谢🙏,第一个问题是空格的问题应该,我逐字敲完后可以构建了.第二个问题是我docker环境的问题,docker更新为最新版后需要重置配置文件.现已经正常使用,再次感谢您的分享和您的细心解答,期待下次相遇😄 还有一个问题可以请教下吗?就是我在容器里建文件夹没有权限,su root后密码不知道是多少,sudo mkdir xxx 提示我,没有sudo命令,请问有好的解决方法吗?谢谢解答
-v 后面可以指定文件吗 我的也是报错,还有。我执行了这个:@localhost kingbase-es-v8-r3-docker % docker run -d --name kingbase -p 54321:54321 -e SYSTEM_PWD=SYSTEM -v /opt/kingbase/data:/opt/kingbase/data -v /opt/kingbase:/opt/kingbase/Server/bin kingbase:v8r3 docker: 'run -d --name kingbase -p 54321:54321 -e SYSTEM_PWD=SYSTEM -v /opt/kingbase/data:/opt/kingbase/data -v /opt/kingbase:/opt/kingbase/Server/bin kingbase:v8r3' is not a docker command. See 'docker --help' 麻烦帮忙看下,是不是我写的命令有问题,还是版本问题,谢谢啦
请问我build的时候一直报错,是资源没了吗?failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed to do request: Head "https://reg-mirror.qiniu.com/v2/library/centos/manifests/7?ns=docker.io": Moved Permanently
按照路径上的来操作的,但是启动时一直报:zsh: no such file or directory: docker run -d --name kingbase -p 54321:54321 -e SYSTEM_PWD=SYSTEM -v /Volumes/installation/opt/kingbase/data:/opt/kingbase/data -v /Volumes/installation/opt/kingbase/bin/license.dat:/opt/kingbase/Server/bin/license.dat kingbase:v8r3 错误
- 前后端分离项目接口数据加密的秘钥交换逻辑(RSA、AES)
- OmniGraffle 激活/破解 密钥/密匙/Key/License
- CleanMyMac X 破解版 [TNT] 4.6.0
- OmniPlan 激活/破解 密钥/密匙/Key/License
- 人大金仓 KingbaseES V8 R3 安装包、驱动包和 License 下载地址
- Parallels Desktop For Mac 16.0.1.48911 破解版 [TNT]
- Redis 未授权访问漏洞分析 cleanfda 脚本复现漏洞挖矿
- Parallels Desktop For Mac 15.1.4.47270 破解版 [TNT]
- Sound Control 破解版 2.4.2
- 向谷歌搜索引擎主动推送网页的教程 Google Indexing API 接口实现
- 博客完全迁移上阿里云,我所使用的阿里云架构
- 微软确认Windows 10存在bug 部分电脑升级后被冻结
- 大佬们在说的AQS,到底啥是个AQS(AbstractQueuedSynchronizer)同步队列
- 比特币(BTC)钱包客户端区块链数据同步慢,区块链数据离线下载
- Java中说的CAS(compare and swap)是个啥
- 小心免费主题!那些WordPress主题后门,一招拥有管理员权限
- 强烈谴责[wamae.win]恶意反向代理我站并篡改我站网页
- 讨论下Java中的volatile和JMM(Java Memory Model)Java内存模型
- 新版个人网站 NEILREN4J 上线并开源程序源码
- 我站近期遭受到恶意不友好访问攻击公告