大家好,这里是公众号 DBA学习之路,分享一些学习国产数据库路上的知识和经验。

@TOC

前言

电科金仓最近发布了产品体验官招募活动,寻求长期合作伙伴,感兴趣的朋友可以参加体验:号外!金仓数据库产品体验官火热招募

本文主要记录人大金仓 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
2
3
4
5
$ md5sum KingbaseES_V009R001C001B0030_Lin64_install.iso
3adf56122ea7d407bc43138ab8b11f84 KingbaseES_V009R001C001B0030_Lin64_install.iso

## 官方 MD5 校验码
3ADF56122EA7D407BC43138AB8B11F84

如不是从官方渠道下载,则必须要与官方提供的校验码需保持一致,校验无误后,则可以放心使用。

安装前配置

检查操作系统版本

检查操作系统版本信息:

1
2
3
4
5
6
7
[root@kes ~]# cat /etc/os-release
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Halberd)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Halberd)"
ANSI_COLOR="0;31"

关闭防火墙

数据库安装均建议关闭防火墙:

1
2
3
4
[root@kes ~]# systemctl stop firewalld
[root@kes ~]# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

创建用户

建议在所有服务器上创建 KES 产品的安装用户 kingbase,而非使用 root 身份执行安装部署:

1
2
3
4
[root@kes ~]# useradd -d /home/kingbase -m kingbase
[root@kes ~]# echo "kingbase:kingbase" | chpasswd
[root@kes ~]# id kingbase
用户id=1001(kingbase) 组id=1001(kingbase) 组=1001(kingbase)

如果有密码复杂性要求,不想设置密码太复杂的话,可以取消密码复杂度:

1
2
[root@kes ~]# sed -i 's/^password\+[[:space:]]\+requisite[[:space:]]\+pam_pwquality.so/#&/g' /etc/pam.d/system-auth
[root@kes ~]# sed -i 's/use_authtok$//' /etc/pam.d/system-auth

创建目录

为了利于数据库的日常运维、持续使用、存储扩容等,我们在安装前必须做好选项、存储目录规划:

选项 设置
目录 安装软件存储目录: /install
备份目录: /backup
归档目录: /archive
数据存储目录: /data
KES 安装目录: /KingbaseES/V9
端口 54321
SYSTEM 密码 kingbase
数据库编码格式 UTF8

创建安装所需目录并且授权:

1
2
3
4
5
[root@kes ~]# mkdir -p /KingbaseES/V9 /data /backup /archive /install
[root@kes ~]# chown -R kingbase:kingbase {/KingbaseES,/data,/backup,/archive,/install}
[root@kes ~]# chmod -R 775 {/KingbaseES,/backup,/archive,/install}
## 注意:DATA 目录这里必须要授权 700,否则后续数据库无法启动
[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
2
3
4
5
6
7
8
9
10
# 物理内存(KB)
os_memory_total=$(awk '/MemTotal/{print $2}' /proc/meminfo)
# 获取系统页面大小,用于计算内存总量
pagesize=$(getconf PAGE_SIZE)
((shmall = (os_memory_total - 1) * 1024 / pagesize))
((shmmax = os_memory_total * 1024 - 10))
# 如果 shmall 小于 2097152,则将其设为 2097152
((shmall < 2097152)) && shmall=2097152
# 如果 shmmax 小于 4294967295,则将其设为 4294967295
((shmmax < 4294967295)) && shmmax=4294967295

复制以上命令,直接执行即可计算得出这两个参数值:

1
2
3
4
[root@kes ~]# echo $shmall
2097152
[root@kes ~]# echo $shmmax
7008067574

根据官方建议值,配置系统参数文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@kes ~]# cat<<-EOF>>/etc/sysctl.conf
fs.aio-max-nr= 1048576
fs.file-max= 6815744
kernel.shmall= 2097152
kernel.shmmax= 7008067574
kernel.shmmni= 4096
kernel.sem= 250 32000 100 128
net.ipv4.ip_local_port_range= 9000 65500
net.core.rmem_default= 262144
net.core.rmem_max= 4194304
net.core.wmem_default= 262144
net.core.wmem_max= 1048576
EOF

## 生效配置
[root@kes ~]# sysctl -p

资源配置

限制用户可使用的资源数量对系统的稳定性非常重要,可以通过调整资源限制数量改进系统性能:

1
2
3
4
5
6
7
8
[root@kes ~]# cat<<-EOF>>/etc/security/limits.conf
kingbase soft nofile 65536
kingbase hard nofile 65536
kingbase soft nproc 65536
kingbase hard nproc 65536
kingbase soft core unlimited
kingbase hard core unlimited
EOF

配置 RemoveIPC

systemd-logind 服务中引入的一个特性 RemoveIPC,会造成程序信号丢失等问题,只有Redhat7 及以上和一些特殊的国产Linux的版本需要修改,改之前可先查看此项是否为默认yes),需要设置 RemoveIPC=no:

1
2
3
4
5
6
[root@kes ~]# sed -i 's/#RemoveIPC=no/RemoveIPC=no/' /etc/systemd/logind.conf
[root@kes ~]# grep RemoveIPC /etc/systemd/logind.conf
RemoveIPC=no
# 重新加载 systemd 守护进程并重启 systemd-logind 服务生效
[root@kes ~]# systemctl daemon-reload
[root@kes ~]# systemctl restart systemd-logind.service

检查 /tmp 目录

KES 安装对于 /tmp 目录有一定要求,至少需要 10G 空间,否则安装时会报警并使用 kingbase 用户家目录作为替代:

1
2
3
Now launch installer...
正在准备进行安装
警告:/tmp 磁盘空间不足!正在尝试将 /home/kingbase 用于安装基础和 tmp dir

手动挂载 /tmp 目录空间:

1
2
3
4
5
6
[root@kes ~]# cat<<-EOF>>/etc/fstab
tmpfs /tmp tmpfs size=10G 0 0
EOF
[root@kes ~]# mount -o remount /tmp
[root@kes ~]# df -h | grep /tmp
tmpfs 10G 20K 10G 1% /tmp

配置环境变量

这一步官方文档没有提到,是以我安装其他数据库的经验添加:

1
2
3
4
5
6
[root@kes ~]# cat<<-\EOF>>/home/kingbase/.bash_profile
export KES_HOME=/KingbaseES/V9/Server
export LD_LIBRARY_PATH=$KES_HOME/lib:/lib:/usr/lib:/usr/lib64
export PATH=$KES_HOME/bin:/usr/sbin:$PATH
export PS1="[`whoami`@`hostname`:"'$PWD]$ '
EOF

环境配置方面到这就结束了,没有看到关于 selinux,swap 以及透明大页这些配置的要求,所有也就没有多此一举了。

KES 安装

KES 安装支持以下 3 种方式:

  • 图形化安装
  • 命令行安装
  • 静默安装

本文基于三种模式都会演示一遍。

安装 ISO 挂载

KES 的安装包和达梦的类似,都是 iso 格式的,iso 格式的安装包需要先挂载才能使用。

挂载 iso 文件需要使用 root 用户,安装包上传在 /install 目录,挂载到 /mnt 目录下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@kes ~]# cd /install/
[root@kes install]# ls
KingbaseES_V009R001C001B0030_Lin64_install.iso
[root@kes install]# mount -o loop KingbaseES_V009R001C001B0030_Lin64_install.iso /mnt/
mount: /mnt: WARNING: source write-protected, mounted read-only.
## 挂载目录下可以看到 setup 目录和 setup.sh 脚本
[root@kes install]# ll /mnt/
dr-xr-xr-x 2 root root 2048 5月 21 21:44 setup
-r-xr-xr-x 1 root root 3932 5月 21 21:44 setup.sh
## 将挂载出来的安装文件拷贝到 /install 目录下
[root@kes install]# cp -r /mnt/* /install
[root@kes install]# ll
-rw-r--r-- 1 root root 2502940672 9月 24 21:23 KingbaseES_V009R001C001B0030_Lin64_install.iso
dr-xr-xr-x 2 root root 91 9月 24 21:24 setup
-r-xr-xr-x 1 root root 3932 9月 24 21:25 setup.sh
## 复制完成后取消安装 iso 的挂载
[root@kes install]# umount /mnt

此时 /mnt 已经和 iso 文件解除挂载关系,在 /mnt 目录下不会再看到安装相关文件。

配置语言环境

图形化安装支持中文和英文的安装界面,根据操作系统的语言设置会显示对应语言的安装界面,可以执行如下命令查看操作系统的语言设置:

1
2
3
4
5
[root@kes install]# echo $LANG
zh_CN.UTF-8
## 显示值包含“zh_CN”,则为中文语言,否则为英文;我安装系统时选的中文,所以是中文环境
## 如何不是也可以手动切换为中文
export LANG=zh_CN.UTF-8

设置好语言环境后,切换为安装用户 kingbase,进入安装程序 setup.sh 所在目录:

1
2
3
4
5
6
## 由于之前 root 复制的安装文件权限为 root,所以需要重新授权 kingbase 用户
[root@kes install]# chown -R kingbase:kingbase /install
[root@kes install]# su - kingbase
c[kingbase@kes ~]$ cd /install/
[kingbase@kes install]$ ls
KingbaseES_V009R001C001B0030_Lin64_install.iso setup setup.sh

查看一下 setup.sh 的帮助命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[kingbase@kes install]$ ./setup.sh -i silent -h
Usage: install [-f <path_to_installer_properties_file> | -options]
(to execute the installer)

Where options include:
-? Show this help text
-h Show this help text
-help Show this help text
--help Show this help text
-i [gui | console | silent]
Specify the user interface mode for the installer
-D<name>=<value>
Specify installer properties
-r <path_to_generate_response_file>
Generates response file.
JVM heap size options are only applicable to Installers
-jvmxms <size>
Specify JVM initial heap size.
-jvmxmx <size>
Specify JVM maximum heap size.
The options field may also include the following in case of uninstaller
if it is enabled for Maintenance Mode
-add <feature_name_1> [<feature_name_2 ...]
Add Specified Features
-remove <feature_name_1> [<feature_name_2 ...]
Remove Specified Features
-repair
Repair Installation
-uninstall
Uninstall

接下来就可以开始进行 KingbaseES 的安装了。

图形化安装

注意:最小化安装的操作系统可以跳过图形化安装这段,直接去命令行和静默安装了。

启动安装程序

启动图形化安装程序,指定参数 -i gui 为图形化安装:

1
2
## 这里不指定 -i 参数,直接执行 sh setup.sh 也是可以的
[kingbase@kes install]$ sh setup.sh -i gui

这里遇到一个问题,如果当前环境不支持图形化调用或者没配置好图形化界面(包括最小化安装),则会报错如下:

1
2
3
4
5
6
7
8
9
10
正在启动安装程序...


Graphical installers are not supported by the VM. The console mode should be used instead...

===============================================================================
KingbaseES V9 (使用 InstallAnywhere 创建)
-------------------------------------------------------------------------------

正在准备控制台模式安装...

提示使用命令行模式进行安装,这里可以输入 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
2
3
4
5
6
7
8
9
10
11
[kingbase@kes install]$ ./setup.sh -i gui
Now launch installer...
正在准备进行安装
正在从安装程序档案中提取 JRE...
正在解包 JRE...
正在从安装程序档案中提取安装资源...
配置该系统环境的安装程序...
Verifying JVM........
正在启动安装程序...

Complete.

别忘记还有最后一步,root 用户下执行 root.sh 脚本:

1
2
3
4
5
6
## 这一步是为了注册数据库服务为系统服务
[root@kes ~]# /KingbaseES/V9/install/script/root.sh
Starting KingbaseES V9:
等待服务器进程启动 .... 完成
服务器进程已经启动
KingbaseES V9 started successfully

注册服务成功后,如果想启动或停止数据库服务,进入 /KingbaseES/V9/Server/bin 目录,使用 kingbase 用户执行如下命令:

1
2
3
4
5
6
7
8
# 停止服务
[kingbase@kes:/home/kingbase]$ sys_ctl stop -m fast -w -D /data
等待服务器进程关闭 .... 完成
服务器进程已经关闭
# 启动服务
[kingbase@kes:/home/kingbase]$ sys_ctl -w start -D /data -l "/data/sys_log/startup.log"
等待服务器进程启动 .... 完成
服务器进程已经启动

到此,图形化安装部署演示结束,过程十分流畅,堪称丝滑。

命令行安装

命令行安装与图形化安装其实差不多,大概演示一下安装过程。

启动安装程序

启动安装程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
[kingbase@kes:/install]$ sh setup.sh -i console
Now launch installer...
正在准备进行安装
正在从安装程序档案中提取 JRE...
正在解包 JRE...
正在从安装程序档案中提取安装资源...
配置该系统环境的安装程序...
Verifying JVM........
正在启动安装程序...

===============================================================================
KingbaseES V9 (使用 InstallAnywhere 创建)
-------------------------------------------------------------------------------

正在准备控制台模式安装...

===============================================================================

请稍候
---

===============================================================================
简介
--

本安装程序将指导您完成 KingbaseES V9 的安装。

建议您在继续本次安装前,退出所有程序。
如果要回到前一屏幕进行更改,可输入“back”。

如果要取消本次安装,可随时输入“quit”。

KingbaseES Version: V9
Kingbase Type:BMJ-NO
Installer Version: V009R001C001B0030
Install DATE:202409251209

Kingbase Inc.
http://www.kingbase.com.cn

请按 <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
8
9
10
11
12
13
14
15
16
17
18
19
===============================================================================
选择安装集
-----

请选择将由本安装程序安装的“安装集”。

->1- 完全安装
2- 客户端安装

3- 定制安装

输入“安装集”的号码,或按 <ENTER> 键以接受缺省值
:

===============================================================================


请稍候
---

选择授权文件,没有就直接回车:

1
2
3
4
5
6
7
8
9
===============================================================================
选择授权文件
------

不选择授权文件,则使用软件自带试用版授权
提示:请在有效期内及时更换正式授权文件。

文件路径 :

选择安装目录,输入 /KingbaseES/V9/,确认,回车继续:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
===============================================================================
选择安装目录
------

请选择一个安装目录。

您想在哪一位置安装?

缺省安装文件夹: /opt/Kingbase/ES/V9

输入一个绝对路径,或按 <ENTER> 键以接受缺省路径
: /KingbaseES/V9/

安装文件夹为: /KingbaseES/V9
是否正确? (Y/N): Y

预安装摘要,没问题直接回车下一步:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
===============================================================================
预安装摘要
-----

在继续执行前请检查以下信息:

产品名:
KingbaseES V9

安装文件夹:
/KingbaseES/V9

产品功能部件:
数据库服务器,
接口,
数据库部署工具,
高可用组件,
数据库开发管理工具,
数据迁移工具

安装空间磁盘信息
所需磁盘空间: 5378 MB 空闲磁盘空间: 77447 MB



请按 <ENTER> 键继续:

开始安装:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
===============================================================================
准备就绪,可以安装
---------

本安装程序已准备完毕,可在下列位置安装 KingbaseES V9:

/KingbaseES/V9

按 <ENTER> 键进行安装:

===============================================================================
正在安装...
-------

[==================|==================|==================|==================]
[------------------|------------------|------------------|------------------]



===============================================================================


请稍候
---

等待进度条完成代表软件已经安装完成。

初始化数据库

接着上面流程继续,选择数据存储的目录:

1
2
3
4
5
6
7
===============================================================================
选择存储数据的文件夹
----------

请选择一个文件夹,该文件夹必须为空。

Data folder (默认﹕ /KingbaseES/V9/data): /data

配置数据库初始参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
===============================================================================
数据库端口
-----

请输入数据库服务监听端口,默认54321。

端口 (默认﹕ 54321):




===============================================================================
数据库管理员
------

请输入数据库管理员用户名。

User (默认﹕ system):




===============================================================================
输入密码
----

本次安装需输入密码才能继续。

请输入密码: 请输入密码:*********



===============================================================================
再次输入密码
------

本次安装需再次输入密码才能继续。

请再次输入密码: 请再次输入密码:*********



===============================================================================
数据库服务字符集
--------

请输入服务端字符集编码。

1- default
->2- UTF8
3- GBK
4- GB2312
5- GB18030

输入您选择的号码,或按 <ENTER> 键以接受缺省值:




===============================================================================
区域
--

请输入数据库区域。

1- C
->2- zh_CN.UTF-8
3- en_US.UTF-8

输入您选择的号码,或按 <ENTER> 键以接受缺省值:




===============================================================================
数据库兼容模式
-------

请输入数据库兼容模式。

1- PG
->2- ORACLE
3- MySQL

输入您选择的号码,或按 <ENTER> 键以接受缺省值:




===============================================================================
字符大小写敏感特性
---------

请输入字符大小写敏感特性。

->1- YES
2- NO

输入您选择的号码,或按 <ENTER> 键以接受缺省值:




===============================================================================
存储块大小
-----

请输入存储块大小。

->1- 8k
2- 16k
3- 32k

输入您选择的号码,或按 <ENTER> 键以接受缺省值:




===============================================================================
身份认证方法
------

请选择身份认证方法。

->1- scram-sha-256
2- scram-sm3
3- sm4
4- sm3

输入您选择的号码,或按 <ENTER> 键以接受缺省值:




===============================================================================
自定义参数
-----

请输入自定义初始化数据库参数。

Custom (默认﹕ ):

开始初始化数据库:

1
2
3
4
5
6
7
===============================================================================
提示
--

数据库即将被安装,需要花费一些时间,请耐心等待。

请按 <ENTER> 键继续:

等待安装完成后,退出安装程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
===============================================================================
安装完成
----

恭喜!KingbaseES V9 已成功地安装到:

/KingbaseES/V9

如果您需要将 KingbaseES V9 注册为系统服务,请运行

/KingbaseES/V9/install/script/root.sh

按 <ENTER> 键以退出安装程序:
Complete.

执行 root.sh 脚本:

1
2
3
4
5
[root@kes ~]# /KingbaseES/V9/install/script/root.sh
Starting KingbaseES V9:
等待服务器进程启动 .... 完成
服务器进程已经启动
KingbaseES 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[kingbase@kes:/install/setup]$ grep -v "^\s*\(#\|$\)" /install/setup/silent.cfg 
KB_LICENSE_PATH=
CHOSEN_INSTALL_SET=Full
CHOSEN_FEATURE_LIST=SERVER,KSTUDIO,KDTS,INTERFACE,DEPLOY,KINGBASEHA
USER_INSTALL_DIR=/opt/Kingbase/ES/V9
USER_SELECTED_DATA_FOLDER=
DB_PORT=54321
DB_USER=system
DB_PASS=
DB_PASS2=
ENCODING_PARAM=UTF8
LOCALE_PARAM=zh_CN.UTF-8
INITCUSTOM=
DATABASE_MODE_PARAM=ORACLE
CASE_SENSITIVE_PARAM=YES
BLOCK_SIZE_PARAM=8k
AUTHENTICATION_METHOD_PARAM=scram-sha-256

根据需求修改对应的参数值:

1
2
3
4
5
6
7
[kingbase@kes:/install/setup]$ vi /install/setup/silent.cfg

## 修改以下内容
USER_INSTALL_DIR=/KingbaseES/V9
USER_SELECTED_DATA_FOLDER=/data
DB_PASS=kingbase
DB_PASS2=kingbase

修改后的配置文件内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[kingbase@kes:/install/setup]$ grep -v "^\s*\(#\|$\)" /install/setup/silent.cfg 
KB_LICENSE_PATH=
CHOSEN_INSTALL_SET=Full
CHOSEN_FEATURE_LIST=SERVER,KSTUDIO,KDTS,INTERFACE,DEPLOY,KINGBASEHA
USER_INSTALL_DIR=/KingbaseES/V9
USER_SELECTED_DATA_FOLDER=/data
DB_PORT=54321
DB_USER=system
DB_PASS=kingbase
DB_PASS2=kingbase
ENCODING_PARAM=UTF8
LOCALE_PARAM=zh_CN.UTF-8
INITCUSTOM=
DATABASE_MODE_PARAM=ORACLE
CASE_SENSITIVE_PARAM=YES
BLOCK_SIZE_PARAM=8k
AUTHENTICATION_METHOD_PARAM=scram-sha-256

修改完配置文件后,进入安装程序所在目录,以 kingbase 用户执行如下命令:

1
2
3
4
## -f 参数指定修改后配置文件的相对或绝对路径,相对路径是指相对 setup/silent.cfg 的相对路径。
[kingbase@kes:/install]$ ./setup.sh -i silent -f /install/setup/silent.cfg
Now launch installer...
Verifying JVM...Complete.

静默安装时不输出如何屏显,但是可以在安装完成后,查看安装日志 /KingbaseES/V9/install/Logs/KingbaseES_V9_安装_*.log

1
[kingbase@kes:/home/kingbase]$ tail -2000f /KingbaseES/V9/install/Logs/KingbaseES_V9_*.log

等待安装完成后,如果没有报错,则代表安装成功,如果有类似如下错误:

image.png

则代表 silent.cfg 文件中参数取值有错误,未完成安装过程,需要修改后重新执行。

连接测试

连接 KES 数据库,查看版本信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
## 查看 KES 版本
[kingbase@kes:/home/kingbase]$ kingbase -V
KINGBASE (KingbaseES) V009R001C001B0030
-- 使用 system 用户连接到 kingbase 数据库
[kingbase@kes:/home/kingbase]$ ksql -p 54321 -U system kingbase
用户 system 的口令:
输入 "help" 来获取帮助信息.

-- 查看数据库版本
kingbase=# select version();
version
----------------------------------------------------------------------------------------------------------------------
KingbaseES V009R001C001B0030 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
(1 行记录)

-- 创建数据库 lucifer
kingbase=# create database lucifer;
CREATE DATABASE

-- 查看数据库信息
kingbase=# \l
数据库列表
名称 | 拥有者 | 字元编码 | 校对规则 | Ctype | 存取权限
-----------+--------+----------+-------------+-------------+-------------------
kingbase | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
lucifer | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
security | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
template0 | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/system +
| | | | | system=CTc/system
template1 | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/system +
| | | | | system=CTc/system
test | system | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
(6 行记录)

-- 切换数据库
kingbase-# \c lucifer
您现在以用户名"system"连接到数据库"lucifer"

-- 查看连接信息
lucifer=# \conninfo
以用户 "system" 的身份,通过套接字"/tmp"在端口"54321"连接到数据库 "lucifer"

-- 创建用户并授权
lucifer=# create user lucifer with password 'lucifer';
CREATE ROLE
lucifer=# alter user lucifer createdb;
ALTER ROLE

-- 查看用户信息
lucifer=# \dg lucifer
角色列表
角色名称 | 属性 | 成员属于
----------+---------+----------
lucifer | 建立 DB | {}

-- 使用新用户 lucifer 连接数据库 lucifer
lucifer=# \c lucifer lucifer
用户 lucifer 的口令:
您现在以用户名"lucifer"连接到数据库"lucifer"

-- 创建表 t1
lucifer=# create table t1(id number, name varchar2(20));
CREATE TABLE
-- 创建索引 idx_t1_id
lucifer=# create index idx_t1_id on t1(id);
CREATE INDEX
-- 插入数据
lucifer=# insert into t1 values(1,'lucifer');
INSERT 0 1
-- 查看表结构
lucifer=# \d t1
数据表 "public.t1"
栏位 | 类型 | 校对规则 | 可空的 | 预设
------+----------------------------+----------+--------+------
id | numeric | | |
name | character varying(20 char) | | |
索引:
"idx_t1_id" btree (id)

-- 查看表数据
lucifer=# select * from t1;
id | name
----+---------
1 | lucifer
(1 行记录)

KES 卸载

安装学会了,自然也要知道如何卸载 KES,卸载一般都很简单。

删除数据库服务

如果在安装后执行 root.sh 脚本在系统中注册了数据库服务,需要在卸载前执行 rootuninstall.sh 脚本删除已注册的数据库服务:

1
2
## 执行没有任何输出
[root@kes ~]# /KingbaseES/V9/install/script/rootuninstall.sh

KES 卸载也分 3 种方式:

  • 图形化卸载
  • 控制台卸载
  • 静默卸载

看来 KES 在软件这块支持的功能还是很丰富的,这里为了省事,就直接使用静默方式进行卸载(kingbase 用户执行):

1
2
3
4
## 进入安装目录下的 Uninstall 目录下执行
[kingbase@kes:/home/kingbase]$ cd /KingbaseES/V9/Uninstall
## 如果是通过静默安装方式安装的,可以不加 -i 参数,否则必须附加 -i 参数
[kingbase@kes:/KingbaseES/V9/Uninstall]$ sh Uninstaller -i silent

卸载过程没有提示信息,等待卸载过程完成即可。

📢 注意:对于初始化生成的文件或程序运行中生成的文件,卸载过程当中无法自动删除(这个我认为是非常合理的,卸载软件不删除数据,是为了保护数据),需要再退出卸载程序后手动删除。

手动删除初始化生成的文件(前提是确实不需要这些数据了才能删除,这里用于便于测试,所以删除):

1
2
[root@kes ~]# rm -rf /KingbaseES/V9/*
[root@kes ~]# rm -rf /data

至此,KES 完全卸载完成。

KES 常用命令

分享一些 KES 常用运维命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 停止数据库服务
[kingbase@kes:/home/kingbase]$ sys_ctl stop -m fast -w -D /data
等待服务器进程关闭 .... 完成
服务器进程已经关闭
# 启动数据库服务
[kingbase@kes:/home/kingbase]$ sys_ctl -w start -D /data -l "/data/sys_log/startup.log"
等待服务器进程启动 .... 完成
服务器进程已经启动
# 查看数据库进程
[kingbase@kes:/home/kingbase]$ ps -ef | grep kingbase: | grep -v grep
kingbase 10881 10880 0 13:33 ? 00:00:00 kingbase: logger
kingbase 10883 10880 0 13:33 ? 00:00:00 kingbase: checkpointer
kingbase 10884 10880 0 13:33 ? 00:00:00 kingbase: background writer
kingbase 10885 10880 0 13:33 ? 00:00:00 kingbase: walwriter
kingbase 10886 10880 0 13:33 ? 00:00:00 kingbase: autovacuum launcher
kingbase 10887 10880 0 13:33 ? 00:00:00 kingbase: stats collector
kingbase 10888 10880 0 13:33 ? 00:00:00 kingbase: kwr collector
kingbase 10889 10880 0 13:33 ? 00:00:00 kingbase: ksh writer
kingbase 10890 10880 0 13:33 ? 00:00:00 kingbase: ksh collector
kingbase 10891 10880 0 13:33 ? 00:00:00 kingbase: logical replication launcher

今天的分享到这结束,如果有好的建议或者错误请留言,我会及时纠正,谢谢。