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

前言

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

本文主要记录人大金仓 KES V9 的安装步骤以及经验总结,让大家更容易安装 KingbaseES,安装过程很丝滑。

介绍

金仓数据库管理系统[简称: KingbaseES ]是中电科金仓公司自主研发的、具有自主知识产权的商用关系型数据库管理系统(DBMS)。该产品面向事务处理类应用,兼顾各类数据分析类应用,可用做信息管理系统、业务及生产系统、决策支持系统、全文检索、地理信息系统等的承载数据库。

KingbaseES(KES) 支持多种操作系统和硬件平台:支持 Linux、Windows、国产 Kylin 等数十个操作系统产品版本,支持通用x86_64 及国产龙芯、飞腾、申威等 CPU 硬件体系架构。

针对不同类型的客户需求,KingbaseES 提供标准版、企业版、专业版、开发版等多种版本。这些版本构建于同一数据库引擎上,不同平台版本完全兼容。

KingbaseES 软件能够提供一主一备以及一主多备的高可用集群架构,实现数据及实例级 (异地) 故障容灾,也能够提供多节点并行服务,内存融合及存储共享,实现高并发性能利用最大化,结合读写分离或备份使用同步实现数据保护最大化。

环境准备

本文演示环境为:

主机名版本CPU内存硬盘
kes银河麒麟V10x868G100G

KingbaseES 对内存和硬盘的要求不高,资源不足的同学可以参考以下配置:

版本要求
标准版/企业版/专业版/开发版CPU:X86、龙芯、飞腾、鲲鹏
内存:512MB 以上
硬盘:11GB 以上空闲空间

系统安装建议不要使用最小化,可能确实必要命令(ifconfig,unzip 等),对新手不是很友好。

安装包下载

金仓官网提供安装软件介质,直接访问:下载中心

选择对应版本以及系统类型下载即可,下载完成后建议进行版本校验认证:

$ md5sum KingbaseES_V009R001C001B0030_Lin64_install.iso
3adf56122ea7d407bc43138ab8b11f84  KingbaseES_V009R001C001B0030_Lin64_install.iso

## 官方 MD5 校验码
3ADF56122EA7D407BC43138AB8B11F84

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

安装前配置

检查操作系统版本

检查操作系统版本信息:

[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"

关闭防火墙

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

[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 身份执行安装部署:

[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)

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

[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

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

[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 安装和使用过程中出现问题,官方建议调整系统内核参数:

参数参考值所在文件
semmsl250/proc/sys/kernel/sem
semmns32000/proc/sys/kernel/sem
semopm100/proc/sys/kernel/sem
semmni128/proc/sys/kernel/sem
shmall2097152/proc/sys/kernel/shmall
shmmax最小: 536870912
最大: 物理内存值减去1字节
建议: 大于物理内存的一半
/proc/sys/kernel/shmmax
shmmin4096/proc/sys/kernel/shmmni
file-max6815744/proc/sys/fs/file-max
aio-max-nr1048576
注意: 本参数限制并发发出的请求数量。应该设置以避免IO子系统的失败。
/proc/sys/fs/aio-max-nr
ip_local_port_range最小:9000
最大:65500
/proc/sys/net/ipv4/ip_local_port_range
rmem_default262144/proc/sys/net/core/rmem_default
rmem_max4194304/proc/sys/net/core/rmem_max
wmem_default262144/proc/sys/net/core/wmem_default
wmem_max1048576/proc/sys/net/core/wmem_max

注意:这里关于 shmmax 和 shmall 参数值的计算,我们可以参考 oracle 来设置:

# 物理内存(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

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

[root@kes ~]# echo $shmall
2097152
[root@kes ~]# echo $shmmax
7008067574

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

[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

资源配置

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

[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:

[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 用户家目录作为替代:

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

手动挂载 /tmp 目录空间:

[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

配置环境变量

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

[root@kes ~]# cat<<-\EOF>>/home/kingbase/.bash_profile
export KES_HOME=/KingbaseES/V9/Server
export LD_LIBRARY_PATH=$KES_HOME/lib:/lib:/usr/lib
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 目录下:

[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  521 21:44 setup
-r-xr-xr-x 1 root root 3932  521 21:44 setup.sh
## 将挂载出来的安装文件拷贝到 /install 目录下
[root@kes install]# cp -r /mnt/* /install
[root@kes install]# ll
-rw-r--r-- 1 root root 2502940672  924 21:23 KingbaseES_V009R001C001B0030_Lin64_install.iso
dr-xr-xr-x 2 root root         91  924 21:24 setup
-r-xr-xr-x 1 root root       3932  924 21:25 setup.sh
## 复制完成后取消安装 iso 的挂载
[root@kes install]# umount /mnt

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

配置语言环境

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

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

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

## 由于之前 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 的帮助命令:

[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 为图形化安装:

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

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

正在启动安装程序...


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 安装成功,点击完成即可退出安装程序:

[kingbase@kes install]$ ./setup.sh -i gui
Now launch installer...
正在准备进行安装
正在从安装程序档案中提取 JRE...
正在解包 JRE...
正在从安装程序档案中提取安装资源...
配置该系统环境的安装程序...
          Verifying JVM........
正在启动安装程序...

Complete.

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

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

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

# 停止服务
[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:/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 软件

回车继续安装,下面这一部分全都是许可协议,一路回车即可:

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

请稍候
---

===============================================================================
许可协议
----

## 这一部分全都是许可协议内容,这里就不展示了,比较占篇幅,中间一直回车就完事了

是否接受此许可协议条款? (Y/N): Y

输入 Y 接受许可,选择完全安装:

===============================================================================
选择安装集
-----

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

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

    3- 定制安装

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

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


请稍候
---

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

===============================================================================
选择授权文件
------

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

文件路径 : 

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

===============================================================================
选择安装目录
------

请选择一个安装目录。

您想在哪一位置安装?

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

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

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

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

===============================================================================
预安装摘要
-----

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

产品名:
    KingbaseES V9

安装文件夹:
    /KingbaseES/V9

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

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



请按 <ENTER> 键继续: 

开始安装:

===============================================================================
准备就绪,可以安装
---------

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

/KingbaseES/V9

按 <ENTER> 键进行安装: 

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

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



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


请稍候
---

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

初始化数据库

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

===============================================================================
选择存储数据的文件夹
----------

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

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

配置数据库初始参数:

===============================================================================
数据库端口
-----

请输入数据库服务监听端口,默认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 (默认﹕  ): 

开始初始化数据库:

===============================================================================
提示
--

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

请按 <ENTER> 键继续: 

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

===============================================================================
安装完成
----

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

/KingbaseES/V9

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

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

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

执行 root.sh 脚本:

[root@kes ~]# /KingbaseES/V9/install/script/root.sh
Starting KingbaseES V9: 
等待服务器进程启动 .... 完成
服务器进程已经启动
KingbaseES V9 started successfully

命令行模式到这就安装结束了,说实话安装过程十分麻烦(吐槽:光是许可协议输出就一堆),不建议使用这种方式。

静默安装(非常建议)

静默安装我感觉是最方便的,只需要配置参数文件之后,一条命令即可完成安装。

静默安装模式下,安装程序通过读取配置文件来安装数据库。安装包 iso 文件挂载后,setup 目录下已存在 silent.cfg 模板文件,需要根据实际安装机器的情况修改参数值。

配置文件的参数可参考:

序号参数名默认值说明
1CHOSEN_INSTALL_SETFull选择安装集,可选值包括:
1)Full:完全安装
2)Client:客户端安装
3)Custom:定制安装
2CHOSEN_FEATURE_LISTSERVER,MANAGER, KDTS,DEPLOY, INTERFACE, KINGBASEHA选择安装特性,CHOSEN_INSTALL_SET=Custom 起作用。可选值:
1)SERVER:服务器
2)KSTUDIO:数据库开发管理工具
3)KDTS:数据库迁移工具
4)DEPLOY:数据库部署工具
5)INTERFACE:接口
6)KINGBASEHA:高可用组件 多值用逗号分隔。大小写不敏感。如果是错误的组件名称则忽略。
3KB_LICENSE_PATH授权文件的绝对路径,如果指定该参数,就会选择用户指定的 license 文件;如果未指定,则会使用软件自带试用版授权, 请在有效期内及时更换正式授权文件。
4USER_INSTALL_DIR/opt/Kingbase/ES/V8安装目录绝对路径,必须指定,否则报错退出安装过程。 路径分隔符使用’/'。
5USER_SELECTED_DATA_FOLDER数据目录绝对路径,必须为空目录,否则报错退出安装过程。 如果不指定数据目录,默认为安装路径下 data 目录。
6DB_PORT54321数据库服务端口,必填,端口取值范围为 1-65535。 否则报错退出安装过程。
7DB_USERsystem数据库默认用户名,必填,长度不超过 63 字符。 否则报错退出安装过程。
8DB_PASS数据库初始密码,必填,否则报错退出安装过程。无长度限制。
9DB_PASS2确认数据库初始密码,需要和 DB_PASS 一致,否则报错退出安装过程。
10ENCODING_PARAMUTF8数据库字符集,必填,大小写敏感,否则报错退出安装过程。
可选值:
1)default
2)UTF8
3)GBK
4)GB2312
5)GB18030
11DATABASE_MODE_PARAMORACLE数据库兼容模式,必填,大小写敏感,否则报错退出安装过程。
可选值:
1)ORACLE
2)PG
3)MySQL
12LOCALE_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)
13CASE_SENSITIVE_PARAMYES数据库是否区分大小写,必填,大小写敏感,否则报错退出安装过程。可选值1)YES 2)NO
14BLOCK_SIZE_PARAM8k存储块大小,必填,大小写敏感,否则报错退出安装过程。可选值 1)8k 2)16k 3)32k
15AUTHENTICATION_METHOD_PARAMscram-sha-256默认身份认证方法为scram-sha-256(可选 scram-sm3,sm4,sm3)
16INITCUSTOM自定义参数,作为初始化数据库的参数,选填 注意:输入的参数值不能包含-W,–pwprompt,%和$。 如果输入的参数值包含-c,则启动数据库将使用默认端口值54321。

查看默认的配置参数文件内容:

[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

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

[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

修改后的配置文件内容:

[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 用户执行如下命令:

## -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

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

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

image.png

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

连接测试

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

## 查看 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 脚本删除已注册的数据库服务:

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

KES 卸载也分 3 种方式:

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

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

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

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

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

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

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

至此,KES 完全卸载完成。

KES 常用命令

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

# 停止数据库服务
[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  

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

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐