大家好,这里是公众号 DBA学习之路,分享一些学习国产数据库路上的知识和经验。
前言
本章目标:掌握本章核心知识点
前置要求:完成前序章节学习
预计时长:60 分钟
电科金仓最近发布了产品体验官招募活动,寻求长期合作伙伴,感兴趣的朋友可以参加体验:号外!金仓数据库产品体验官火热招募。
本文主要记录人大金仓 KES V9 的安装步骤以及经验总结,让大家更容易安装 KingbaseES,安装过程很丝滑。
介绍
金仓数据库管理系统[简称: KingbaseES ]是中电科金仓公司自主研发的、具有自主知识产权的商用关系型数据库管理系统(DBMS)。该产品面向事务处理类应用,兼顾各类数据分析类应用,可用做信息管理系统、业务及生产系统、决策支持系统、全文检索、地理信息系统等的承载数据库。
KingbaseES(KES) 支持多种操作系统和硬件平台:支持 Linux、Windows、国产 Kylin 等数十个操作系统产品版本,支持通用x86_64 及国产龙芯、飞腾、申威等 CPU 硬件体系架构。
针对不同类型的客户需求,KingbaseES 提供标准版、企业版、专业版、开发版等多种版本。这些版本构建于同一数据库引擎上,不同平台版本完全兼容。
KingbaseES 软件能够提供一主一备以及一主多备的高可用集群架构,实现数据及实例级 (异地) 故障容灾,也能够提供多节点并行服务,内存融合及存储共享,实现高并发性能利用最大化,结合读写分离或备份使用同步实现数据保护最大化。
环境准备
本文演示环境为:
| 主机名 | 版本 | CPU | 内存 | 硬盘 |
|---|
| kes | 银河麒麟V10 | x86 | 8G | 100G |
KingbaseES 对内存和硬盘的要求不高,资源不足的同学可以参考以下配置:
| 版本 | 要求 |
|---|
| 标准版/企业版/专业版/开发版 | CPU:X86、龙芯、飞腾、鲲鹏 内存:512MB 以上 硬盘:11GB 以上空闲空间 |
系统安装建议不要使用最小化,可能确实必要命令(ifconfig,unzip 等),对新手不是很友好。
安装包下载
金仓官网提供安装软件介质,直接访问:下载中心

选择对应版本以及系统类型下载即可,下载完成后建议进行版本校验认证:
1$ md5sum KingbaseES_V009R001C001B0030_Lin64_install.iso
23adf56122ea7d407bc43138ab8b11f84 KingbaseES_V009R001C001B0030_Lin64_install.iso
3
4## 官方 MD5 校验码
53ADF56122EA7D407BC43138AB8B11F84
如不是从官方渠道下载,则必须要与官方提供的校验码需保持一致,校验无误后,则可以放心使用。
安装前配置
检查操作系统版本
检查操作系统版本信息:
1[root@kes ~]# cat /etc/os-release
2NAME="Kylin Linux Advanced Server"
3VERSION="V10 (Halberd)"
4ID="kylin"
5VERSION_ID="V10"
6PRETTY_NAME="Kylin Linux Advanced Server V10 (Halberd)"
7ANSI_COLOR="0;31"
关闭防火墙
数据库安装均建议关闭防火墙:
1[root@kes ~]# systemctl stop firewalld
2[root@kes ~]# systemctl disable firewalld
3Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
4Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
创建用户
建议在所有服务器上创建 KES 产品的安装用户 kingbase,而非使用 root 身份执行安装部署:
1[root@kes ~]# useradd -d /home/kingbase -m kingbase
2[root@kes ~]# echo "kingbase:kingbase" | chpasswd
3[root@kes ~]# id kingbase
4用户id=1001(kingbase) 组id=1001(kingbase) 组=1001(kingbase)
如果有密码复杂性要求,不想设置密码太复杂的话,可以取消密码复杂度:
1[root@kes ~]# sed -i 's/^password\+[[:space:]]\+requisite[[:space:]]\+pam_pwquality.so/#&/g' /etc/pam.d/system-auth
2[root@kes ~]# sed -i 's/use_authtok$//' /etc/pam.d/system-auth
创建目录
为了利于数据库的日常运维、持续使用、存储扩容等,我们在安装前必须做好选项、存储目录规划:
| 选项 | 设置 |
|---|
| 目录 | 安装软件存储目录: /install 备份目录: /backup 归档目录: /archive 数据存储目录: /data KES 安装目录: /KingbaseES/V9 |
| 端口 | 54321 |
| SYSTEM 密码 | kingbase |
| 数据库编码格式 | UTF8 |
创建安装所需目录并且授权:
1[root@kes ~]# mkdir -p /KingbaseES/V9 /data /backup /archive /install
2[root@kes ~]# chown -R kingbase:kingbase {/KingbaseES,/data,/backup,/archive,/install}
3[root@kes ~]# chmod -R 775 {/KingbaseES,/backup,/archive,/install}
4## 注意:DATA 目录这里必须要授权 700,否则后续数据库无法启动
5[root@kes ~]# chmod -R 700 /data
系统参数配置
为了避免在 KingbaseES 安装和使用过程中出现问题,官方建议调整系统内核参数:
| 参数 | 参考值 | 所在文件 |
|---|
| semmsl | 250 | /proc/sys/kernel/sem |
| semmns | 32000 | /proc/sys/kernel/sem |
| semopm | 100 | /proc/sys/kernel/sem |
| semmni | 128 | /proc/sys/kernel/sem |
| shmall | 2097152 | /proc/sys/kernel/shmall |
| shmmax | 最小: 536870912 最大: 物理内存值减去1字节 建议: 大于物理内存的一半 | /proc/sys/kernel/shmmax |
| shmmin | 4096 | /proc/sys/kernel/shmmni |
| file-max | 6815744 | /proc/sys/fs/file-max |
| aio-max-nr | 1048576 注意: 本参数限制并发发出的请求数量。应该设置以避免IO子系统的失败。 | /proc/sys/fs/aio-max-nr |
| ip_local_port_range | 最小:9000 最大:65500 | /proc/sys/net/ipv4/ip_local_port_range |
| rmem_default | 262144 | /proc/sys/net/core/rmem_default |
| rmem_max | 4194304 | /proc/sys/net/core/rmem_max |
| wmem_default | 262144 | /proc/sys/net/core/wmem_default |
| wmem_max | 1048576 | /proc/sys/net/core/wmem_max |
注意:这里关于 shmmax 和 shmall 参数值的计算,我们可以参考 oracle 来设置:
1# 物理内存(KB)
2os_memory_total=$(awk '/MemTotal/{print $2}' /proc/meminfo)
3# 获取系统页面大小,用于计算内存总量
4pagesize=$(getconf PAGE_SIZE)
5((shmall = (os_memory_total - 1) * 1024 / pagesize))
6((shmmax = os_memory_total * 1024 - 10))
7# 如果 shmall 小于 2097152,则将其设为 2097152
8((shmall < 2097152)) && shmall=2097152
9# 如果 shmmax 小于 4294967295,则将其设为 4294967295
10((shmmax < 4294967295)) && shmmax=4294967295
复制以上命令,直接执行即可计算得出这两个参数值:
1[root@kes ~]# echo $shmall
22097152
3[root@kes ~]# echo $shmmax
47008067574
根据官方建议值,配置系统参数文件:
1[root@kes ~]# cat<<-EOF>>/etc/sysctl.conf
2fs.aio-max-nr= 1048576
3fs.file-max= 6815744
4kernel.shmall= 2097152
5kernel.shmmax= 7008067574
6kernel.shmmni= 4096
7kernel.sem= 250 32000 100 128
8net.ipv4.ip_local_port_range= 9000 65500
9net.core.rmem_default= 262144
10net.core.rmem_max= 4194304
11net.core.wmem_default= 262144
12net.core.wmem_max= 1048576
13EOF
14
15## 生效配置
16[root@kes ~]# sysctl -p
资源配置
限制用户可使用的资源数量对系统的稳定性非常重要,可以通过调整资源限制数量改进系统性能:
1[root@kes ~]# cat<<-EOF>>/etc/security/limits.conf
2kingbase soft nofile 65536
3kingbase hard nofile 65536
4kingbase soft nproc 65536
5kingbase hard nproc 65536
6kingbase soft core unlimited
7kingbase hard core unlimited
8EOF
配置 RemoveIPC
systemd-logind 服务中引入的一个特性 RemoveIPC,会造成程序信号丢失等问题,只有Redhat7 及以上和一些特殊的国产Linux的版本需要修改,改之前可先查看此项是否为默认yes),需要设置 RemoveIPC=no:
1[root@kes ~]# sed -i 's/#RemoveIPC=no/RemoveIPC=no/' /etc/systemd/logind.conf
2[root@kes ~]# grep RemoveIPC /etc/systemd/logind.conf
3RemoveIPC=no
4# 重新加载 systemd 守护进程并重启 systemd-logind 服务生效
5[root@kes ~]# systemctl daemon-reload
6[root@kes ~]# systemctl restart systemd-logind.service
检查 /tmp 目录
KES 安装对于 /tmp 目录有一定要求,至少需要 10G 空间,否则安装时会报警并使用 kingbase 用户家目录作为替代:
1Now launch installer...
2正在准备进行安装
3警告:/tmp 磁盘空间不足!正在尝试将 /home/kingbase 用于安装基础和 tmp dir。
手动挂载 /tmp 目录空间:
1[root@kes ~]# cat<<-EOF>>/etc/fstab
2tmpfs /tmp tmpfs size=10G 0 0
3EOF
4[root@kes ~]# mount -o remount /tmp
5[root@kes ~]# df -h | grep /tmp
6tmpfs 10G 20K 10G 1% /tmp
配置环境变量
这一步官方文档没有提到,是以我安装其他数据库的经验添加:
1[root@kes ~]# cat<<-\EOF>>/home/kingbase/.bash_profile
2export KES_HOME=/KingbaseES/V9/Server
3export LD_LIBRARY_PATH=$KES_HOME/lib:/lib:/usr/lib:/usr/lib64
4export PATH=$KES_HOME/bin:/usr/sbin:$PATH
5export PS1="[`whoami`@`hostname`:"'$PWD]$ '
6EOF
环境配置方面到这就结束了,没有看到关于 selinux,swap 以及透明大页这些配置的要求,所有也就没有多此一举了。
KES 安装
KES 安装支持以下 3 种方式:
本文基于三种模式都会演示一遍。
安装 ISO 挂载
KES 的安装包和达梦的类似,都是 iso 格式的,iso 格式的安装包需要先挂载才能使用。
挂载 iso 文件需要使用 root 用户,安装包上传在 /install 目录,挂载到 /mnt 目录下:
1[root@kes ~]# cd /install/
2[root@kes install]# ls
3KingbaseES_V009R001C001B0030_Lin64_install.iso
4[root@kes install]# mount -o loop KingbaseES_V009R001C001B0030_Lin64_install.iso /mnt/
5mount: /mnt: WARNING: source write-protected, mounted read-only.
6## 挂载目录下可以看到 setup 目录和 setup.sh 脚本
7[root@kes install]# ll /mnt/
8dr-xr-xr-x 2 root root 2048 5月 21 21:44 setup
9-r-xr-xr-x 1 root root 3932 5月 21 21:44 setup.sh
10## 将挂载出来的安装文件拷贝到 /install 目录下
11[root@kes install]# cp -r /mnt/* /install
12[root@kes install]# ll
13-rw-r--r-- 1 root root 2502940672 9月 24 21:23 KingbaseES_V009R001C001B0030_Lin64_install.iso
14dr-xr-xr-x 2 root root 91 9月 24 21:24 setup
15-r-xr-xr-x 1 root root 3932 9月 24 21:25 setup.sh
16## 复制完成后取消安装 iso 的挂载
17[root@kes install]# umount /mnt
此时 /mnt 已经和 iso 文件解除挂载关系,在 /mnt 目录下不会再看到安装相关文件。
配置语言环境
图形化安装支持中文和英文的安装界面,根据操作系统的语言设置会显示对应语言的安装界面,可以执行如下命令查看操作系统的语言设置:
1[root@kes install]# echo $LANG
2zh_CN.UTF-8
3## 显示值包含“zh_CN”,则为中文语言,否则为英文;我安装系统时选的中文,所以是中文环境
4## 如何不是也可以手动切换为中文
5export LANG=zh_CN.UTF-8
设置好语言环境后,切换为安装用户 kingbase,进入安装程序 setup.sh 所在目录:
1## 由于之前 root 复制的安装文件权限为 root,所以需要重新授权 kingbase 用户
2[root@kes install]# chown -R kingbase:kingbase /install
3[root@kes install]# su - kingbase
4c[kingbase@kes ~]$ cd /install/
5[kingbase@kes install]$ ls
6KingbaseES_V009R001C001B0030_Lin64_install.iso setup setup.sh
查看一下 setup.sh 的帮助命令:
1[kingbase@kes install]$ ./setup.sh -i silent -h
2Usage: install [-f <path_to_installer_properties_file> | -options]
3 (to execute the installer)
4
5Where options include:
6 -? Show this help text
7 -h Show this help text
8 -help Show this help text
9 --help Show this help text
10 -i [gui | console | silent]
11 Specify the user interface mode for the installer
12 -D<name>=<value>
13 Specify installer properties
14 -r <path_to_generate_response_file>
15 Generates response file.
16JVM heap size options are only applicable to Installers
17 -jvmxms <size>
18 Specify JVM initial heap size.
19 -jvmxmx <size>
20 Specify JVM maximum heap size.
21The options field may also include the following in case of uninstaller
22if it is enabled for Maintenance Mode
23 -add <feature_name_1> [<feature_name_2 ...]
24 Add Specified Features
25 -remove <feature_name_1> [<feature_name_2 ...]
26 Remove Specified Features
27 -repair
28 Repair Installation
29 -uninstall
30 Uninstall
接下来就可以开始进行 KingbaseES 的安装了。
图形化安装
注意:最小化安装的操作系统可以跳过图形化安装这段,直接去命令行和静默安装了。
启动安装程序
启动图形化安装程序,指定参数 -i gui 为图形化安装:
1## 这里不指定 -i 参数,直接执行 sh setup.sh 也是可以的
2[kingbase@kes install]$ sh setup.sh -i gui
这里遇到一个问题,如果当前环境不支持图形化调用或者没配置好图形化界面(包括最小化安装),则会报错如下:
1正在启动安装程序...
2
3
4Graphical installers are not supported by the VM. The console mode should be used instead...
5
6===============================================================================
7KingbaseES V9 (使用 InstallAnywhere 创建)
8-------------------------------------------------------------------------------
9
10正在准备控制台模式安装...
提示使用命令行模式进行安装,这里可以输入 quit 取消,重新配置好图形化界面后再重新执行即可。
安装 KES 软件
这里建议使用 VNC 连接主机,可以直接调用出来图形化界面:

第一步是安装程序简介,直接下一步:

勾选许可协议,没什么好说的:

根据安装后数据库服务功能的不同,KingbaseES 可分为完全安装、客户端安装和定制安装三种安装集:
- 完全安装:包括数据库服务器、高可用组件、接口、数据库开发管理工具、数据库迁移工具、数据库部署工具。
- 客户端安装:包括接口、数据库开发管理工具、数据库迁移工具、数据库部署工具。
- 定制安装:在数据库服务器、高可用组件、接口、数据库开发管理工具、数据库迁移工具、数据库部署工具所有组件中自由选择。
大家根据自己的需求进行选择,这里我选择完全安装:

注意:数据库 license 是 KingbaseES 提供的授权文件,其中会对数据库有效日期、发布类型、最大并发连接数、mac 地址、ip 等信息进行设置。如果在 license 文件中信息与安装环境中相关信息不匹配,数据库将无法启动。
如果在安装时未选择 license 文件,则会使用软件自带试用版授权:

选择安装目录,选择我们规划好的目录:/KingbaseES/V9

安装摘要,告知我们需要安装的功能组件以及磁盘空间信息:

确认没问题后,选择安装按钮进行安装:

等待一段时间后,很快软件就会完成安装:

到这一步软件安装结束,则代表 KES 软件已经安装完成了,接下来就是初始化数据库步骤。
初始化数据库
首先选择数据库数据目录,选择规划好的存储数据目录:/data

下一步就是初始化数据库参数:
- 默认端口为:54321(可自定义);
- 默认账户为:system(可自定义);
- 密码(自定义);
- 默认字符集编码为:UTF8(可选 default、GBK、GB2312、GB18030);
- 区域,可选值将随字符集编码选项发生变动;
- 当字符集编码为 default 时,默认区域值为:default(可选 C);
- 当字符集编码为 UTF8 时,默认区域值为:zh_CN.UTF-8(可选 en_US.UTF-8、C)
- 当字符集编码为 GBK 时,默认区域值为:zh_CN.GBK(可选 C);
- 当字符集编码为 GB2312 时,默认区域值为:zh_CN.GB2312(可选 C);
- 当字符集编码为 GB18030 时,默认区域值为:zh_CN.GB18030(可选 C);
- 默认数据库兼容模式为:ORACLE(可选 PG、MySQL);
- 默认大小写敏感为:是(可选否);
- 默认数据块大小为:8k(可选16k、32k);
- 默认身份认证方法为 scram-sha-256(可选 scram-sm3,sm4,sm3);
- 自定义参数(自定义),可自由输入任何值,作为初始化数据库的参数;
注意:输入的参数值不能包含 -W,--pwprompt,% 和 $。
根据我们前面规划好的参数进行填写即可(基本都是默认值):




点击下一步,开始初始化数据库:

等待几分钟即可完成数据库初始化,提示 KES 安装成功,点击完成即可退出安装程序:
1[kingbase@kes install]$ ./setup.sh -i gui
2Now launch installer...
3正在准备进行安装
4正在从安装程序档案中提取 JRE...
5正在解包 JRE...
6正在从安装程序档案中提取安装资源...
7配置该系统环境的安装程序...
8 Verifying JVM........
9正在启动安装程序...
10
11Complete.
别忘记还有最后一步,root 用户下执行 root.sh 脚本:
1## 这一步是为了注册数据库服务为系统服务
2[root@kes ~]# /KingbaseES/V9/install/script/root.sh
3Starting KingbaseES V9:
4等待服务器进程启动 .... 完成
5服务器进程已经启动
6KingbaseES V9 started successfully
注册服务成功后,如果想启动或停止数据库服务,进入 /KingbaseES/V9/Server/bin 目录,使用 kingbase 用户执行如下命令:
1# 停止服务
2[kingbase@kes:/home/kingbase]$ sys_ctl stop -m fast -w -D /data
3等待服务器进程关闭 .... 完成
4服务器进程已经关闭
5# 启动服务
6[kingbase@kes:/home/kingbase]$ sys_ctl -w start -D /data -l "/data/sys_log/startup.log"
7等待服务器进程启动 .... 完成
8服务器进程已经启动
到此,图形化安装部署演示结束,过程十分流畅,堪称丝滑。
命令行安装
命令行安装与图形化安装其实差不多,大概演示一下安装过程。
启动安装程序
启动安装程序:
1[kingbase@kes:/install]$ sh setup.sh -i console
2Now launch installer...
3正在准备进行安装
4正在从安装程序档案中提取 JRE...
5正在解包 JRE...
6正在从安装程序档案中提取安装资源...
7配置该系统环境的安装程序...
8 Verifying JVM........
9正在启动安装程序...
10
11===============================================================================
12KingbaseES V9 (使用 InstallAnywhere 创建)
13-------------------------------------------------------------------------------
14
15正在准备控制台模式安装...
16
17===============================================================================
18
19请稍候
20---
21
22===============================================================================
23简介
24--
25
26本安装程序将指导您完成 KingbaseES V9 的安装。
27
28建议您在继续本次安装前,退出所有程序。
29如果要回到前一屏幕进行更改,可输入“back”。
30
31如果要取消本次安装,可随时输入“quit”。
32
33KingbaseES Version: V9
34Kingbase Type:BMJ-NO
35Installer Version: V009R001C001B0030
36Install DATE:202409251209
37
38Kingbase Inc.
39 http://www.kingbase.com.cn
40
41请按 <ENTER> 键继续:
如果不想安装也可以输入 quit 取消。
安装 KES 软件
回车继续安装,下面这一部分全都是许可协议,一路回车即可:
1===============================================================================
2
3请稍候
4---
5
6===============================================================================
7许可协议
8----
9
10## 这一部分全都是许可协议内容,这里就不展示了,比较占篇幅,中间一直回车就完事了
11
12是否接受此许可协议条款? (Y/N): Y
输入 Y 接受许可,选择完全安装:
1===============================================================================
2选择安装集
3-----
4
5请选择将由本安装程序安装的“安装集”。
6
7 ->1- 完全安装
8 2- 客户端安装
9
10 3- 定制安装
11
12输入“安装集”的号码,或按 <ENTER> 键以接受缺省值
13 :
14
15===============================================================================
16
17
18请稍候
19---
选择授权文件,没有就直接回车:
1===============================================================================
2选择授权文件
3------
4
5不选择授权文件,则使用软件自带试用版授权
6提示:请在有效期内及时更换正式授权文件。
7
8文件路径 :
选择安装目录,输入 /KingbaseES/V9/,确认,回车继续:
1===============================================================================
2选择安装目录
3------
4
5请选择一个安装目录。
6
7您想在哪一位置安装?
8
9 缺省安装文件夹: /opt/Kingbase/ES/V9
10
11输入一个绝对路径,或按 <ENTER> 键以接受缺省路径
12 : /KingbaseES/V9/
13
14安装文件夹为: /KingbaseES/V9
15 是否正确? (Y/N): Y
预安装摘要,没问题直接回车下一步:
1===============================================================================
2预安装摘要
3-----
4
5在继续执行前请检查以下信息:
6
7产品名:
8 KingbaseES V9
9
10安装文件夹:
11 /KingbaseES/V9
12
13产品功能部件:
14 数据库服务器,
15 接口,
16 数据库部署工具,
17 高可用组件,
18 数据库开发管理工具,
19 数据迁移工具
20
21安装空间磁盘信息
22 所需磁盘空间: 5378 MB 空闲磁盘空间: 77447 MB
23
24
25
26请按 <ENTER> 键继续:
开始安装:
1===============================================================================
2准备就绪,可以安装
3---------
4
5本安装程序已准备完毕,可在下列位置安装 KingbaseES V9:
6
7/KingbaseES/V9
8
9按 <ENTER> 键进行安装:
10
11===============================================================================
12正在安装...
13-------
14
15 [==================|==================|==================|==================]
16 [------------------|------------------|------------------|------------------]
17
18
19
20===============================================================================
21
22
23请稍候
24---
等待进度条完成代表软件已经安装完成。
初始化数据库
接着上面流程继续,选择数据存储的目录:
1===============================================================================
2选择存储数据的文件夹
3----------
4
5请选择一个文件夹,该文件夹必须为空。
6
7Data folder (默认﹕ /KingbaseES/V9/data): /data
配置数据库初始参数:
1===============================================================================
2数据库端口
3-----
4
5请输入数据库服务监听端口,默认54321。
6
7端口 (默认﹕ 54321):
8
9
10
11
12===============================================================================
13数据库管理员
14------
15
16请输入数据库管理员用户名。
17
18User (默认﹕ system):
19
20
21
22
23===============================================================================
24输入密码
25----
26
27本次安装需输入密码才能继续。
28
29请输入密码: 请输入密码:*********
30
31
32
33===============================================================================
34再次输入密码
35------
36
37本次安装需再次输入密码才能继续。
38
39请再次输入密码: 请再次输入密码:*********
40
41
42
43===============================================================================
44数据库服务字符集
45--------
46
47请输入服务端字符集编码。
48
49 1- default
50 ->2- UTF8
51 3- GBK
52 4- GB2312
53 5- GB18030
54
55输入您选择的号码,或按 <ENTER> 键以接受缺省值:
56
57
58
59
60===============================================================================
61区域
62--
63
64请输入数据库区域。
65
66 1- C
67 ->2- zh_CN.UTF-8
68 3- en_US.UTF-8
69
70输入您选择的号码,或按 <ENTER> 键以接受缺省值:
71
72
73
74
75===============================================================================
76数据库兼容模式
77-------
78
79请输入数据库兼容模式。
80
81 1- PG
82 ->2- ORACLE
83 3- MySQL
84
85输入您选择的号码,或按 <ENTER> 键以接受缺省值:
86
87
88
89
90===============================================================================
91字符大小写敏感特性
92---------
93
94请输入字符大小写敏感特性。
95
96 ->1- YES
97 2- NO
98
99输入您选择的号码,或按 <ENTER> 键以接受缺省值:
100
101
102
103
104===============================================================================
105存储块大小
106-----
107
108请输入存储块大小。
109
110 ->1- 8k
111 2- 16k
112 3- 32k
113
114输入您选择的号码,或按 <ENTER> 键以接受缺省值:
115
116
117
118
119===============================================================================
120身份认证方法
121------
122
123请选择身份认证方法。
124
125 ->1- scram-sha-256
126 2- scram-sm3
127 3- sm4
128 4- sm3
129
130输入您选择的号码,或按 <ENTER> 键以接受缺省值:
131
132
133
134
135===============================================================================
136自定义参数
137-----
138
139请输入自定义初始化数据库参数。
140
141Custom (默认﹕ ):
开始初始化数据库:
1===============================================================================
2提示
3--
4
5数据库即将被安装,需要花费一些时间,请耐心等待。
6
7请按 <ENTER> 键继续:
等待安装完成后,退出安装程序:
1===============================================================================
2安装完成
3----
4
5恭喜!KingbaseES V9 已成功地安装到:
6
7/KingbaseES/V9
8
9如果您需要将 KingbaseES V9 注册为系统服务,请运行
10
11 /KingbaseES/V9/install/script/root.sh
12
13按 <ENTER> 键以退出安装程序:
14Complete.
执行 root.sh 脚本:
1[root@kes ~]# /KingbaseES/V9/install/script/root.sh
2Starting KingbaseES V9:
3等待服务器进程启动 .... 完成
4服务器进程已经启动
5KingbaseES V9 started successfully
命令行模式到这就安装结束了,说实话安装过程十分麻烦(吐槽:光是许可协议输出就一堆),不建议使用这种方式。
静默安装(非常建议)
静默安装我感觉是最方便的,只需要配置参数文件之后,一条命令即可完成安装。
静默安装模式下,安装程序通过读取配置文件来安装数据库。安装包 iso 文件挂载后,setup 目录下已存在 silent.cfg 模板文件,需要根据实际安装机器的情况修改参数值。
配置文件的参数可参考:
| 序号 | 参数名 | 默认值 | 说明 |
|---|
| 1 | CHOSEN_INSTALL_SET | Full | 选择安装集,可选值包括: 1)Full:完全安装 2)Client:客户端安装 3)Custom:定制安装 |
| 2 | CHOSEN_FEATURE_LIST | SERVER,MANAGER, KDTS,DEPLOY, INTERFACE, KINGBASEHA | 选择安装特性,CHOSEN_INSTALL_SET=Custom 起作用。可选值: 1)SERVER:服务器 2)KSTUDIO:数据库开发管理工具 3)KDTS:数据库迁移工具 4)DEPLOY:数据库部署工具 5)INTERFACE:接口 6)KINGBASEHA:高可用组件 多值用逗号分隔。大小写不敏感。如果是错误的组件名称则忽略。 |
| 3 | KB_LICENSE_PATH | | 授权文件的绝对路径,如果指定该参数,就会选择用户指定的 license 文件;如果未指定,则会使用软件自带试用版授权, 请在有效期内及时更换正式授权文件。 |
| 4 | USER_INSTALL_DIR | /opt/Kingbase/ES/V8 | 安装目录绝对路径,必须指定,否则报错退出安装过程。 路径分隔符使用'/'。 |
| 5 | USER_SELECTED_DATA_FOLDER | | 数据目录绝对路径,必须为空目录,否则报错退出安装过程。 如果不指定数据目录,默认为安装路径下 data 目录。 |
| 6 | DB_PORT | 54321 | 数据库服务端口,必填,端口取值范围为 1-65535。 否则报错退出安装过程。 |
| 7 | DB_USER | system | 数据库默认用户名,必填,长度不超过 63 字符。 否则报错退出安装过程。 |
| 8 | DB_PASS | | 数据库初始密码,必填,否则报错退出安装过程。无长度限制。 |
| 9 | DB_PASS2 | | 确认数据库初始密码,需要和 DB_PASS 一致,否则报错退出安装过程。 |
| 10 | ENCODING_PARAM | UTF8 | 数据库字符集,必填,大小写敏感,否则报错退出安装过程。 可选值: 1)default 2)UTF8 3)GBK 4)GB2312 5)GB18030 |
| 11 | DATABASE_MODE_PARAM | ORACLE | 数据库兼容模式,必填,大小写敏感,否则报错退出安装过程。 可选值: 1)ORACLE 2)PG 3)MySQL |
| 12 | LOCALE_PARAM | | 当字符集编码为 default 时,默认区域值为:default(可选 C) 当字符集编码为 UTF8 时,默认区域值为:zh_CN.UTF-8 (可选 en_US.UTF-8、C) 当字符集编码为GBK 时,默认区域值为:zh_CN.GBK(可选 C) 当字符集编码为GB2312时,默认区域值为:zh_CN.GB2312(可选 C) 当字符集编码为GB18030时,默认区域值为:zh_CN.GB18030(可选 C) |
| 13 | CASE_SENSITIVE_PARAM | YES | 数据库是否区分大小写,必填,大小写敏感,否则报错退出安装过程。可选值1)YES 2)NO |
| 14 | BLOCK_SIZE_PARAM | 8k | 存储块大小,必填,大小写敏感,否则报错退出安装过程。可选值 1)8k 2)16k 3)32k |
| 15 | AUTHENTICATION_METHOD_PARAM | scram-sha-256 | 默认身份认证方法为scram-sha-256(可选 scram-sm3,sm4,sm3) |
| 16 | INITCUSTOM | | 自定义参数,作为初始化数据库的参数,选填 注意:输入的参数值不能包含-W,--pwprompt,%和$。 如果输入的参数值包含-c,则启动数据库将使用默认端口值54321。 |
查看默认的配置参数文件内容:
1[kingbase@kes:/install/setup]$ grep -v "^\s*\(#\|$\)" /install/setup/silent.cfg
2KB_LICENSE_PATH=
3CHOSEN_INSTALL_SET=Full
4CHOSEN_FEATURE_LIST=SERVER,KSTUDIO,KDTS,INTERFACE,DEPLOY,KINGBASEHA
5USER_INSTALL_DIR=/opt/Kingbase/ES/V9
6USER_SELECTED_DATA_FOLDER=
7DB_PORT=54321
8DB_USER=system
9DB_PASS=
10DB_PASS2=
11ENCODING_PARAM=UTF8
12LOCALE_PARAM=zh_CN.UTF-8
13INITCUSTOM=
14DATABASE_MODE_PARAM=ORACLE
15CASE_SENSITIVE_PARAM=YES
16BLOCK_SIZE_PARAM=8k
17AUTHENTICATION_METHOD_PARAM=scram-sha-256
根据需求修改对应的参数值:
1[kingbase@kes:/install/setup]$ vi /install/setup/silent.cfg
2
3## 修改以下内容
4USER_INSTALL_DIR=/KingbaseES/V9
5USER_SELECTED_DATA_FOLDER=/data
6DB_PASS=kingbase
7DB_PASS2=kingbase
修改后的配置文件内容:
1[kingbase@kes:/install/setup]$ grep -v "^\s*\(#\|$\)" /install/setup/silent.cfg
2KB_LICENSE_PATH=
3CHOSEN_INSTALL_SET=Full
4CHOSEN_FEATURE_LIST=SERVER,KSTUDIO,KDTS,INTERFACE,DEPLOY,KINGBASEHA
5USER_INSTALL_DIR=/KingbaseES/V9
6USER_SELECTED_DATA_FOLDER=/data
7DB_PORT=54321
8DB_USER=system
9DB_PASS=kingbase
10DB_PASS2=kingbase
11ENCODING_PARAM=UTF8
12LOCALE_PARAM=zh_CN.UTF-8
13INITCUSTOM=
14DATABASE_MODE_PARAM=ORACLE
15CASE_SENSITIVE_PARAM=YES
16BLOCK_SIZE_PARAM=8k
17AUTHENTICATION_METHOD_PARAM=scram-sha-256
修改完配置文件后,进入安装程序所在目录,以 kingbase 用户执行如下命令:
1## -f 参数指定修改后配置文件的相对或绝对路径,相对路径是指相对 setup/silent.cfg 的相对路径。
2[kingbase@kes:/install]$ ./setup.sh -i silent -f /install/setup/silent.cfg
3Now launch installer...
4 Verifying JVM...Complete.
静默安装时不输出如何屏显,但是可以在安装完成后,查看安装日志 /KingbaseES/V9/install/Logs/KingbaseES_V9_安装_*.log:
1[kingbase@kes:/home/kingbase]$ tail -2000f /KingbaseES/V9/install/Logs/KingbaseES_V9_*.log
等待安装完成后,如果没有报错,则代表安装成功,如果有类似如下错误:

则代表 silent.cfg 文件中参数取值有错误,未完成安装过程,需要修改后重新执行。
连接测试
连接 KES 数据库,查看版本信息:
1## 查看 KES 版本
2[kingbase@kes:/home/kingbase]$ kingbase -V
3KINGBASE (KingbaseES) V009R001C001B0030
4-- 使用 system 用户连接到 kingbase 数据库
5[kingbase@kes:/home/kingbase]$ ksql -p 54321 -U system kingbase
6用户 system 的口令:
7输入 "help" 来获取帮助信息.
8
9-- 查看数据库版本
10kingbase=# select version();
11 version
12----------------------------------------------------------------------------------------------------------------------
13 KingbaseES V009R001C001B0030 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
14(1 行记录)
15
16-- 创建数据库 lucifer
17kingbase=# create database lucifer;
18CREATE DATABASE
19
20-- 查看数据库信息
21kingbase=# \l
22 数据库列表
23 名称 | 拥有者 | 字元编码 | 校对规则 | Ctype | 存取权限
24-----------+--------+----------+-------------+-------------+-------------------
25 kingbase | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
26 lucifer | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
27 security | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
28 template0 | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/system +
29 | | | | | system=CTc/system
30 template1 | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/system +
31 | | | | | system=CTc/system
32 test | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
33(6 行记录)
34
35-- 切换数据库
36kingbase-# \c lucifer
37您现在以用户名"system"连接到数据库"lucifer"。
38
39-- 查看连接信息
40lucifer=# \conninfo
41以用户 "system" 的身份,通过套接字"/tmp"在端口"54321"连接到数据库 "lucifer"
42
43-- 创建用户并授权
44lucifer=# create user lucifer with password 'lucifer';
45CREATE ROLE
46lucifer=# alter user lucifer createdb;
47ALTER ROLE
48
49-- 查看用户信息
50lucifer=# \dg lucifer
51 角色列表
52 角色名称 | 属性 | 成员属于
53----------+---------+----------
54 lucifer | 建立 DB | {}
55
56-- 使用新用户 lucifer 连接数据库 lucifer
57lucifer=# \c lucifer lucifer
58用户 lucifer 的口令:
59您现在以用户名"lucifer"连接到数据库"lucifer"。
60
61-- 创建表 t1
62lucifer=# create table t1(id number, name varchar2(20));
63CREATE TABLE
64-- 创建索引 idx_t1_id
65lucifer=# create index idx_t1_id on t1(id);
66CREATE INDEX
67-- 插入数据
68lucifer=# insert into t1 values(1,'lucifer');
69INSERT 0 1
70-- 查看表结构
71lucifer=# \d t1
72 数据表 "public.t1"
73 栏位 | 类型 | 校对规则 | 可空的 | 预设
74------+----------------------------+----------+--------+------
75 id | numeric | | |
76 name | character varying(20 char) | | |
77索引:
78 "idx_t1_id" btree (id)
79
80-- 查看表数据
81lucifer=# select * from t1;
82 id | name
83----+---------
84 1 | lucifer
85(1 行记录)
KES 卸载
安装学会了,自然也要知道如何卸载 KES,卸载一般都很简单。
删除数据库服务
如果在安装后执行 root.sh 脚本在系统中注册了数据库服务,需要在卸载前执行 rootuninstall.sh 脚本删除已注册的数据库服务:
1## 执行没有任何输出
2[root@kes ~]# /KingbaseES/V9/install/script/rootuninstall.sh
KES 卸载也分 3 种方式:
看来 KES 在软件这块支持的功能还是很丰富的,这里为了省事,就直接使用静默方式进行卸载(kingbase 用户执行):
1## 进入安装目录下的 Uninstall 目录下执行
2[kingbase@kes:/home/kingbase]$ cd /KingbaseES/V9/Uninstall
3## 如果是通过静默安装方式安装的,可以不加 -i 参数,否则必须附加 -i 参数
4[kingbase@kes:/KingbaseES/V9/Uninstall]$ sh Uninstaller -i silent
卸载过程没有提示信息,等待卸载过程完成即可。
📢 注意:对于初始化生成的文件或程序运行中生成的文件,卸载过程当中无法自动删除(这个我认为是非常合理的,卸载软件不删除数据,是为了保护数据),需要再退出卸载程序后手动删除。
手动删除初始化生成的文件(前提是确实不需要这些数据了才能删除,这里用于便于测试,所以删除):
1[root@kes ~]# rm -rf /KingbaseES/V9/*
2[root@kes ~]# rm -rf /data
至此,KES 完全卸载完成。
KES 常用命令
分享一些 KES 常用运维命令:
1# 停止数据库服务
2[kingbase@kes:/home/kingbase]$ sys_ctl stop -m fast -w -D /data
3等待服务器进程关闭 .... 完成
4服务器进程已经关闭
5# 启动数据库服务
6[kingbase@kes:/home/kingbase]$ sys_ctl -w start -D /data -l "/data/sys_log/startup.log"
7等待服务器进程启动 .... 完成
8服务器进程已经启动
9# 查看数据库进程
10[kingbase@kes:/home/kingbase]$ ps -ef | grep kingbase: | grep -v grep
11kingbase 10881 10880 0 13:33 ? 00:00:00 kingbase: logger
12kingbase 10883 10880 0 13:33 ? 00:00:00 kingbase: checkpointer
13kingbase 10884 10880 0 13:33 ? 00:00:00 kingbase: background writer
14kingbase 10885 10880 0 13:33 ? 00:00:00 kingbase: walwriter
15kingbase 10886 10880 0 13:33 ? 00:00:00 kingbase: autovacuum launcher
16kingbase 10887 10880 0 13:33 ? 00:00:00 kingbase: stats collector
17kingbase 10888 10880 0 13:33 ? 00:00:00 kingbase: kwr collector
18kingbase 10889 10880 0 13:33 ? 00:00:00 kingbase: ksh writer
19kingbase 10890 10880 0 13:33 ? 00:00:00 kingbase: ksh collector
20kingbase 10891 10880 0 13:33 ? 00:00:00 kingbase: logical replication launcher
今天的分享到这结束,如果有好的建议或者错误请留言,我会及时纠正,谢谢。