暂无图片
暂无图片
7
暂无图片
暂无图片
1
暂无图片

国产数据库|中电科金仓 KES 单机安装最佳实践

641
目   录

前 言    
一、软件下载与授权文件获取    
二、KES 软件安装规划表    
三、操作系统相关配置    
四、安装 KingbaseES 单机    
      安装前准备
      开始安装
      图形化安装
      静默安装
五、安装后检查    
六、卸载 KES
七、参考链接
复制

前 言

1999 年 6 月,在王珊教授的带领下,中国人民大学一批从事数据库研究的学者创立了我国第一家数据公司——北京金仓信息技术有限公司。今年是人大金仓成立 25 周年的日子,也是人大金仓正式更名的日子,8 月底,人大金仓公司名称由“北京人大金仓信息技术股份有限公司”变更为“中电科金仓(北京)科技股份有限公司”,简称“电科金仓”,从公司名字的变更看出脱离了高校的属性。更多介绍可以查看前面一篇文章《聊聊人大金仓 KingbaseES 数据库》

facebook_pro_light_1920 × 1080  副本.png

一、软件下载与授权文件获取

金仓数据库属于非开源产品,企业版本需要绑定主机 MAC 地址进行 license 授权使用,当然你也可以下载企业版或者专业版的 90 天试用,开发版本的 365 天试用产品。

https://www.kingbase.com.cn/xzzx/index.htm

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

针对不同类型的客户需求,KingbaseES 提供标准版、企业版、专业版、开发版等多种版本。这些版本构建于同一数据库引擎上,不同平台版本完全兼容。KingbaseES 能够提供一主一备以及一主多备的高可用集群架构,实现数据及实例级 (异地) 故障容灾,也能够提供多节点并行服务,内存融合及存储共享,实现高并发性能利用最大化,结合读写分离或备份使用同步实现数据保护最大化。

我这里使用的 OS 是 x86_64 位的 CentOS Linux release 7.6.1810 (Core) ,如下所示,下载 X86 Linux 类型的安装介质。

image20240918234146083.png

image20240918234348779.png

License

License 是 KingbaseES 提供的授权文件,其中会对数据库有效日期、发布类型、最大并发连接数、mac 地址、ip等信息进行设置,如果在 License 文件中信息与安装环境中相关信息不匹配,数据库将无法启动。如上所示,可下载试用版本的 License 文件。

[root@JiekeXu backup]# md5sum KingbaseES_V009R001C001B0030_Lin64_install.iso 3adf56122ea7d407bc43138ab8b11f84 KingbaseES_V009R001C001B0030_Lin64_install.iso --联系金仓销售获取 LICENSE 授权文件 [root@JiekeXu backup]# cd KingbaseES/ [root@JiekeXu KingbaseES]# ll total 0 drwxrwxr-x 2 root root 33 Sep 9 12:08 license_43846 [root@JiekeXu KingbaseES]# cd license_43846/ [root@JiekeXu license_43846]# ll total 4 -rw-rw-r-- 1 root root 3838 Sep 9 12:08 license_43846_0.dat [root@JiekeXu license_43846]# pwd /backup/KingbaseES/license_43846
复制

二、KES 软件安装规划表

如下表是一些安装要求及明细信息,有了这些信息也方便我们以后的统一规范运维,为我们以后的日常运维减少一些不必要的麻烦。

需求项 明细信息 备注
安装包 KingbaseES_V009R001C001B0030_Lin64_install.iso V9版本
MD5 ACE90FC905DB414B4DA6EBAAEB17D382 /
操作系统 x86_64 CentOS Linux release 7.6.1810 (Core) X86 CentOS7
License license_43846_0.dat 一年体验版
硬件需求 内存:512MB 以上;磁盘大小:11GB以上空闲空间 内存、磁盘大小
安装用户 kingbase 指定组和用户id
安装软件存储目录 /data/KingbaseES/install/ iso镜像及授权文件
软件安装路径 /data/KingbaseES/V9 默认/opt/Kingbase/ES/V9
数据存储路径 /data/KingbaseES/data 目录不存在会自动创建
归档路径 /data/KingbaseES/arch /
端口 54325 非默认端口
SYSTEM密码 kingbase /
数据库编码格式 UTF8 /

三、操作系统相关配置

这一节主要说明 OS 相关的设置,比如查看版本、内存、磁盘、关闭防火墙、SELinux、内核参数、资源限制、关闭 numa 和禁用透明大页等等。

## 查看操作系统版本 cat /etc/*release ## 查看内存 [root@JiekeXu ~]# free -m total used free shared buff/cache available Mem: 9819 2610 333 2269 6874 4697 Swap: 2047 0 2047 [root@JiekeXu ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 97G 79G 19G 81% / devtmpfs 4.8G 0 4.8G 0% /dev tmpfs 4.8G 0 4.8G 0% /dev/shm tmpfs 4.8G 45M 4.8G 1% /run tmpfs 4.8G 0 4.8G 0% /sys/fs/cgroup /dev/sda1 1014M 180M 835M 18% /boot tmpfs 982M 4.0K 982M 1% /run/user/42 tmpfs 982M 36K 982M 1% /run/user/12345 tmpfs 982M 0 982M 0% /run/user/0 ##关闭防火墙 systemctl status firewalld systemctl stop firewalld systemctl disable firewalld systemctl list-unit-files | grep firewalld ## 关闭 selinux cp /etc/selinux/config /etc/selinux/config_`date +"%Y%m%d_%H%M%S"`&& sed -i 's/SELINUX\=enforcing/SELINUX\=disabled/g' /etc/selinux/config cat /etc/selinux/config ##不重启 setenforce 0 getenforce
复制
  • 内核参数

    为了避免在 KingbaseES 安装和使用过程中出现问题,需要检查和设置内核参数。

cat>>/etc/sysctl.conf <<EOF ############For KingbaseES Setting######## fs.aio-max-nr = 1048576 #异步IO请求数目 推荐值是:1048576 其实它等于 1024*1024 也就是 1024K 个 fs.file-max = 6815744 #打开的文件句柄的最大数量,防止文件描述符耗尽的问题 fs.nr_open = 20480000 # 系统范围内可打开的最大文件数 kernel.core_pattern = core.%e.%p.%t # Core dump 文件名模式 kernel.shmall = 2097152 #共享内存总量 页为单位,内存除以4K所得 kernel.shmmax = 4294967295 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 #SEMMSL: 每个信号集的最大信号数量 SEMMNS:用于控制整个 Linux 系统中信号的最大数 SEMOPM: 内核参数用于控制每个 semop 系统调用可以执行的信号操作的数量 SEMMNI :内核参数用于控制整个 Linux 系统中信号集的最大数量 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 #套接字发送缓冲区大小的最大值 fs.file-max = 6815744 kernel.watchdog_thresh=30 vm.min_free_kbytes = $(free -k | awk 'NR==2 {printf "%d\n", int($2 / 200)}') # 预留给 OS 的最小空闲内存 vm.swappiness = 2 vm.overcommit_memory = 0 # 表示系统的内存分配策略可以选值为 0,1,2。0:表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。 vm.max_map_count=2000000 EOF
复制

内核参数修改完毕后,重启Linux系统,并输入如下命令查看内核参数的修改是否正确:

/sbin/sysctl -p /sbin/sysctl -a
复制
  • 资源限制

Linux 资源限制配置文件是 /etc/security/limits.conf 。限制用户可使用的资源数量对系统的稳定性非常重要。通过调整资源限制数量改进系统性能。如下:其中 soft 是一个警告值,hard 是真正意义的阈值,超过系统就会报错,一般情况下两者设为同一个值。一般保持系统安装时的默认值即可。

资源项 含义
core 内核文件大小(KB)
data 最大数据大小(KB)
fsize 最大文件大小(KB)
memlock 最大锁定内存地址空间(KB)
nofile 最大打开的文件描述符数量
rss 最大持久设置大小(KB)
stack 最大堆栈大小(KB)
cpu 最大CPU时间(分钟)
noproc 最大进程数量
as 地址空间限制(KB)
maxlogins 用户最大登录次数
maxsyslogins 系统上登录的最大数量
priority 运行用户进程的优先级
locks 用户可持有的最大文件锁数量
sigpending 最大挂起的信号数量
msgqueue POSIX消息队列使用的最大内存(字节)
nice 最大可提升到的合适优先级
rtprio 最大实时优先级
cat>>/etc/security/limits.conf <<EOF ########################################## ############For KingbaseES Setting######## kingbase soft stack unlimited kingbase hard stack unlimited kingbase soft nproc 655360 kingbase hard nproc 1048576 # 注意:设置 nofile 的 hard limit 不能大于 /proc/sys/fs/nr_open,否则注销后将无法正常登陆 kingbase soft nofile 655360 kingbase hard nofile 1048576 kingbase soft memlock unlimited kingbase hard memlock unlimited kingbase soft core unlimited kingbase hard core unlimited EOF
复制
  • RemoveIPC 参数

systemd-logind 服务中引入的一个特性,是当一个用户退出系统后,会删除所有有关的 IPC 对象。该特性由 /etc/systemd/logind.conf 文件中的 RemoveIPC参数控制。某些操作系统会默认打开,会造成程序信号丢失等问题(只有 redhat7 及以上和一些特殊的国产 Linux 的版本需要修改,改之前可先查看此项是否为默认 yes)。设置RemoveIPC=no。 设置后重启服务:

sed -i 's/\#RemoveIPC\=no/RemoveIPC\=no/g' /etc/systemd/logind.conf cat /etc/systemd/logind.conf | grep RemoveIPC systemctl daemon-reload systemctl status systemd-logind.service systemctl restart systemd-logind.service
复制
  • 关闭 numa 和禁用透明大页

NUMA 是一种用于多处理器系统的内存设计,它允许处理器访问不同的内存区域,但访问本地内存比访问远程内存要快。在一些应用场景中,特别是对于那些对延迟敏感的应用,不当的 NUMA 配置可能会导致性能问题。

透明大页 是 Linux 内核的一个特性,它试图通过使用更大的内存页面(通常是2MB,而不是默认的4KB)来提高内存管理的效率。虽然 THP 在某些情况下可以提高性能,但在其他情况下,尤其是对于数据库和其他需要精确控制内存分配的应用程序,它可能导致性能下降。

### 检查: cat /sys/kernel/mm/transparent_hugepage/enabled cat /sys/kernel/mm/transparent_hugepage/defrag ### 修改 sed -i 's/quiet/quiet transparent_hugepage=never numa=off/' /etc/default/grub grep quiet /etc/default/grub grub2-mkconfig -o /boot/grub2/grub.cfg ### 重启后检查是否生效: cat /sys/kernel/mm/transparent_hugepage/enabled cat /proc/cmdline
复制
  • 调整 login

/etc/pam.d/login 文件是 Linux 系统中 PAM(Pluggable Authentication Modules,可插拔认证模块)配置文件之一。PAM 提供了一种灵活的机制来管理用户认证,它允许系统管理员通过配置文件定义如何进行身份验证、账户管理、会话管理和密码管理,我们通过启用 PAM 的 pam_limits.so 模块来设置用户会话的资源限制。pam_limits.so 模块通常与 /etc/security/limits.conf 文件配合使用,该文件定义了各种资源限制规则。

总结来说,添加 session required pam_limits.so 是为了确保在用户会话开始时,PAM 会读取并应用 /etc/security/limits.conf 文件中定义的资源限制。这有助于增强系统的安全性和稳定性,防止资源滥用。

cat >> /etc/pam.d/login <<EOF session required /lib/security/pam_limits.so session required pam_limits.so EOF
复制
  • 创建安装用户

在安装 KingbaseES 时,安装用户对于安装路径需有“读”、“写”、“执行”的权限。在 Linux 系统中,需要以非 root 用户执行安装程序,且该用户要有标准的 home 目录。

因此,建议在正式安装前,新建 kingbase 用户作为 KingbaseES 专用的系统用户。这里指定组 ID 和 用户 ID 且全局唯一,方便后期主机间数据文件传输迁移。

## 创建安装用户组 kingbase tail -8 /etc/group groupadd -g 10088 kingbase --查看组 ID 避免重复 ## 创建安装用户 kingbase tail -8 /etc/passwd useradd -u 10086 -g kingbase -m -d /home/kingbase -s /bin/bash kingbase echo "kingbase" | passwd --stdin kingbase
复制
  • 创建安装路径

按照前面第二章节规划,创建目录并授权。

# mkdir -p /data/KingbaseES/{V9,data,install,arch} # chown -R kingbase:kingbase /data/KingbaseES
复制
  • 配置环境变量
su - kingbase vi .bash_profile export PATH=/data/KingbaseES/V9/Server/bin:$PATH export KINGBASE_HOME=/data/KingbaseES/V9 export KINGBASE_DATA=/data/KingbaseES/data --生效 . .bash_profile
复制
  • 修改字符集为英文

最后,安装数据库软件时,OS 语言建议设置为英文,习惯了英文下的 Oracle 数据库,突然中文很让人难受,且其他软件对于英文更兼容。

[root@JiekeXu ~]# more /etc/locale.conf LANG="en_US.UTF8"
复制

四、安装 KingbaseES 单机

安装前准备

通过 sftp 上传 iso 和授权文件到 /backup,挂载上传好的 iso 光盘镜像文件到 /mnt

### 验证文件 MD5 值 [root@JiekeXu backup]# md5sum KingbaseES_V009R001C001B0030_Lin64_install.iso 3adf56122ea7d407bc43138ab8b11f84 KingbaseES_V009R001C001B0030_Lin64_install.iso # mount -o loop /backup/KingbaseES_V009R001C001B0030_Lin64_install.iso /mnt
复制

image20240922213644578.png

使用 Kingbase 用户拷贝挂载后的安装文件到我们规划好的 install 目录

# su - kingbase
$ cp -r /mnt/* /data/KingbaseES/install/
复制

复制我们的授权文件到 install 目录

[kingbase@JiekeXu backup]$ cd KingbaseES/
[kingbase@JiekeXu KingbaseES]$ ll
total 0
drwxrwxr-x 2 root root 33 Sep  9 12:08 license_43846
[kingbase@JiekeXu KingbaseES]$ cd license_43846/
[kingbase@JiekeXu license_43846]$ ll
total 4
-rw-rw-r-- 1 root root 3838 Sep  9 12:08 license_43846_0.dat
[kingbase@JiekeXu license_43846]$ cp license_43846_0.dat  /data/KingbaseES/install/
[kingbase@JiekeXu license_43846]$ cd /data/KingbaseES/install/
[kingbase@JiekeXu install]$ ll
total 8
-rw-rw-r-- 1 kingbase kingbase 3838 Sep 22 21:43 license_43846_0.dat
dr-xr-xr-x 2 kingbase kingbase   91 Sep 22 21:42 setup
-r-xr-xr-x 1 kingbase kingbase 3932 Sep 22 21:42 setup.sh
复制

开始安装

安装单机 KingbaseES,有 图形化安装命令行安装静默安装 三种方式,不论何种方式安装,整体的安装流程如下图所示。

不论何种方式安装,整体的安装流程如下图所示。

installlinuximage64.png

下面我们使用命令行的方式安装吧。首先进入安装程序中setup.sh所在目录,以 kingbase 用户执行如下命令:

$ cd /data/KingbaseES/install/ sh setup.sh -i console
复制

image20240922221544815.png

连续多次输入回车继续,直到“DO YOU ACCEPT THE TERMS OF THIS LICENSE AGREEMENT? (Y/N):”输入 Y 回车。

image20240922222133359.png

根据安装后数据库服务功能的不同,KingbaseES 可分为完全安装、客户端安装和定制安装三种安装集。输入1,或按接受缺省项,选择“完全安装”安装集,系统将安装 KingbaseES 所有组件,跳至 选择授权文件 。如果输入2,选择“客户端安装”安装集,系统将安装 KingbaseES 的所有客户端工具、编程接口、扩展插件以及命令行可执行二进制文件,跳至 选择安装文件夹 。如果输入3,选择“定制安装”安装集,可根据需求选择安装所需功能组件,将进入下一步 选择产品功能组件

image20240922222936161.png

然后选择 install 目录下我们准备好的 license 文件,若指定的授权文件合法,则将显示授权文件的详细信息。

image20240922223256370.png

选择安装文件夹,此步骤用于选择安装路径。默认安装路径是 /opt/Kingbase/ES/V9,我们这里选择前面第二章节定义好的 /data/KingbaseES/V9 目录。然后输入 Y 确认,然后需要 5378 MB 空间安装,我们继续两次回车,等待安装。

image20240922223759009.png

首先选择数据库数据目录,默认数据库数据目录为安装目录下的 data 目录,我们选择前面第二章节定义好的 /data/KingbaseES/data 目录,回车,自定义端口 54325 回车。

image20240922224335050.png

接着,自定义管理员账号与密码,我这里默认选择 system,密码 kingbase,选择默认字符集编码为:UTF8。

image20240922224701590.png

  • 数据库区域选择:en_US.UTF-8,默认为 zh_CN.UTF-8
  • 默认数据库兼容模式为:ORACLE(可选 PG、MySQL)
  • 默认大小写敏感为:是(可选否)

image20240922225909097.png

  • 默认数据块大小为:8k(可选16k、32k)
  • 默认身份认证方法为scram-sha-256(可选 scram-sm3,sm4,sm3)

image20240922230136003.png

接下来数据库将进行初始化操作,接着回车等待即可。安装完成后回车退出安装程序。

image20240922230516115.png

如果想注册数据库服务为系统服务,可以在安装并初始化数据库成功后,执行 root.sh 脚本来注册并启动数据库服务。

=============================================================================== Please Wait ----------- =============================================================================== Installation Complete --------------------- Congratulations. KingbaseES V9 has been successfully installed to: /data/KingbaseES/V9 If you want to register KingbaseES V9 as OS service, please run /data/KingbaseES/V9/install/script/root.sh PRESS <ENTER> TO EXIT THE INSTALLER: Complete. [kingbase@JiekeXu install]$ exit logout [root@JiekeXu ~]# [root@JiekeXu ~]# [root@JiekeXu ~]# /data/KingbaseES/V9/install/script/root.sh Starting KingbaseES V9: waiting for server to start.... done server started KingbaseES V9 started successfully
复制

图形化安装

图像化安装支持中文和英文,当设置为中文时,提示比较友好,下一步下一步即可安装,这里仅演示开始步骤,不在演示后续安装步骤。根据操作系统的语言设置会显示对应语言的安装界面。可以执行如下命令查看操作系统的语言设置:

echo $LANG
复制

如果系统显示值包含“zh_CN”,则为中文语言,安装程序会使用中文界面。否则,可以执行如下命令修改语言设置为中文:

export LANG=zh_CN.UTF-8
复制

接下来就可以开始进行 KingbaseES 的安装了。首先打开图形化界面窗口,这里我直接通过 Vmware 打开图形化界面,切换为安装用户 kingbase,进入安装程序 setup.sh 所在目录,执行如下命令:

cd /data/KingbaseES/install/
sh setup.sh
复制

sh setup.sh -i swing
复制

image20240923233002270.png

如果当前操作系统中已存在 KingbaseES,执行启动命令后将弹出 KingbaseES 安装程序窗口【实例管理页】。

选择【安装新的实例】,点击【确认】,开始安装 KingbaseES。点击【取消】按钮则退出本次安装。

如果想在已安装实例上增加或删除功能,则可以选择【修改存在的实例】。

image20240923233124174.png

静默安装

静默安装模式下,安装程序通过读取配置文件来安装数据库。安装包 iso 文件挂载后,setup 目录下已存在silent.cfg 模板文件,需要根据实际安装机器的情况修改参数值。因为 Linux 挂载 iso 目录为只读,需要拷贝setup/silent.cfg 文件到另外的目录进行修改。修改的内容也比较简单,填写 licence 文件位置,数据存储目录以及 system 用户密码,确认密码,其他的选项可酌情修改。

$ vim /data/KingbaseES/install/setup/silent.cfg $ /data/KingbaseES/install/setup.sh -i silent -f /data/KingbaseES/install/setup/silent.cfg # /data/KingbaseES/V9/install/script/root.sh
复制

image20240923234107963.png

图形化管理工具——KStudio

前面章节已经将 KES 安装到 Linux 中,在 Linux 的 Applications 程序菜单中启动“数据库对象管理工具”即可。
或者单独安装客户端工具,KES 支持在 WINDOWS 或 LINUX 中,仅安装客户端工具–在安装 KES 的“选择安装集”步骤中选择“客户端安装”即可。下面是一个简单的演示:

image20240924080134884.png

image20240924075803641.png

image20240924075553531.png
image20240924080406330.png

查看 root.sh 脚本内容
发现 root.sh 在配置开机自启动前,调用了 enhance_os_param.sh 脚本,配置了内核参数文件 sysctl.conf、修改了资源限制文件 limits.conf 以及 sshd 的配置文件 sshd_config,还有 /etc/bashrc 和 /etc/cron.allow 文件。

[kingbase@JiekeXu ~]$ more /data/KingbaseES/V9/install/script/root.sh
#!/bin/bash

ROOT_UID=0
INSTALLDIR=/data/KingbaseES/V9
USERNAME=kingbase
DATADIR=/data/KingbaseES/data
VERSION=V9
SERVICENAME=kingbased

# Run as root, of course.
if [ x"$UID" !=  x"$ROOT_UID" ]
then
    echo "Must be root to run this script, and root.sh should be executed in the '$0' way, not 'sh $0'."
    exit 1
fi

if [ -d $INSTALLDIR/Scripts ]; then
        $INSTALLDIR/Scripts/startupcfg.sh $VERSION $USERNAME $INSTALLDIR $DATADIR $SERVICENAME
elif [ -d $INSTALLDIR/install/script ]; then
  if [ -f $INSTALLDIR/Server/bin/enhance_os_param.sh ]; then
    bash $INSTALLDIR/Server/bin/enhance_os_param.sh $USERNAME  >/dev/null 2>/dev/null;
  fi
        $INSTALLDIR/install/script/startupcfg.sh $VERSION $USERNAME $INSTALLDIR $DATADIR $SERVICENAME
else
        "can not find startupcfg.sh"
fi
[kingbase@JiekeXu ~]$ more /data/KingbaseES/V9/Server/bin/enhance_os_param.sh
#!/bin/bash
#file: enhance_os_param.sh

export LC_MESSAGES=C

# check current user ROOT 
if [ "Xroot" != "X${USER}" ] && [ "X" != "X${USER}" ] ; then
        echo "ERROR: This script should be executed by root, not the $USER."
        exit 3
fi


if [ "X" == "X$1"  ] ; then
_target_user="kingbase"
else
_target_user="$1"
fi
   
conf_exist=$(cat /etc/sysctl.conf | grep 'add by kingbase' | wc -l)
if [ $conf_exist -ne 0 ]; then
        exit 0
fi
cat >> /etc/sysctl.conf <<EOF
#add by kingbase
kernel.sem = 5010 641280 5010 256
kernel.shmall = 2097152
kernel.shmmax = 53687091200
kernel.shmmni = 8192
vm.mmap_min_addr = 65536
vm.dirty_writeback_centisecs = 100
vm.dirty_background_ratio = 10
vm.dirty_ratio = 60
vm.swappiness = 20
vm.min_free_kbytes = 512000
vm.vfs_cache_pressure = 200
fs.aio-max-nr = 1048576
fs.file-max = 76724600
fs.nr_open = 2097152

net.core.netdev_max_backlog = 32768
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.somaxconn = 4096
net.core.wmem_default = 262144
net.core.wmem_max = 4194304


net.ipv4.ip_local_port_range = 9000 65500
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_wmem = 8192 436600 873200
net.ipv4.tcp_rmem  = 32768 436600 873200
net.ipv4.tcp_mem = 94500000 91500000 92700000
net.ipv4.tcp_max_orphans = 3276800
EOF


if [ -f /etc/sysctl.conf ];then
        sysctl -p > /dev/null 2>&1
fi


    cat >> /etc/security/limits.conf <<EOF
#add by kingbase
*       soft        nofile      655360
root    soft        nofile      655360
*       hard        nofile      655360
root    hard        nofile      655360
*       soft        nproc       655360
root    soft        nproc       655360
*       hard        nproc       655360
root    hard        nproc       655360
*       soft        core        unlimited
root    soft        core        unlimited
*       hard        core        unlimited
root    hard        core        unlimited
*       soft        memlock     50000000
root    soft        memlock     50000000
*       hard        memlock     50000000
root    hard        memlock     50000000
EOF


#############  sshd
echo "GSSAPIAuthentication no" >>  /etc/ssh/sshd_config
echo "UseDNS no" >>  /etc/ssh/sshd_config
echo "UsePAM yes" >>  /etc/ssh/sshd_config
systemctl restart sshd 1>/dev/null 2>&1
service sshd restart 1>/dev/null 2>&1


############## shell
echo "shopt -s expand_aliases" >> /etc/bashrc

############## cron.allow
echo "${_target_user}" >> /etc/cron.allow

[kingbase@JiekeXu ~]$ 
复制

五、安装后检查

  • 查看 Kingbase 相关进程
[kingbase@JiekeXu ~]$ ps aux | grep kingbase | grep -v grep | awk '{print $11,$12,$13,$14}'| grep -v awk| grep -v bash | grep -v aux| grep -v su /data/KingbaseES/V9/KESRealPro/V009R001C001B0030/Server/bin/kingbase -D /data/KingbaseES/data kingbase: logger kingbase: checkpointer kingbase: background writer kingbase: walwriter kingbase: autovacuum launcher kingbase: stats collector kingbase: kwr collector kingbase: ksh writer kingbase: ksh collector kingbase: logical replication launcher
复制
  • 查看安装日志

在$KINGBASE_HOME/{install}/Logs目录下,存在名称为 “KingbaseES_V9_Install*.log” 的日志文件,其中记录了安装过程的所有信息。您可以打开日志文件,查看如下所示安装结果信息判断是否安装正确。

more /data/KingbaseES/V9/install/Logs/KingbaseES_V9_Install_09_22_2024_22_39_18.log
复制
  • 登录测试
-- ksql -h hostname -U username -d dbname -p port [kingbase@JiekeXu ~]$ ksql -p 54325 -U system test Password for user system: Type "help" for help. test=# 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 row) test=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+--------+----------+-------------+-------------+------------------- kingbase | system | UTF8 | en_US.UTF-8 | en_US.UTF-8 | security | system | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | system | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/system + | | | | | system=CTc/system template1 | system | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/system + | | | | | system=CTc/system test | system | UTF8 | en_US.UTF-8 | en_US.UTF-8 | (5 rows)
复制

image-20240922233209407

  • 简单管理
select * from sys_user; --创建普通用户 CREATE USER test WITH PASSWORD '123456'; --授予权限 ALTER USER test CREATEROLE; ALTER USER test CREATEDB; --修改管理员密码 ALTER USER system PASSWORD 'Kingbase123'; --修改普通用户密码 ALTER USER test PASSWORD 'Kingbase123'; --KingbaseES提供系统存储过程alteruserreadonly来设置用户的只读状态。 test=# call alteruserreadonly ('','user1',true); --'' 指 database 数据库名称,为空时表示全部数据库
复制

image20240923231144134.png

  • 启停数据库

我们通过 reboot 重启操作系统,检查上面步骤配置成的服务是否可以开机自启动。

[kingbase@JiekeXu ~]$ ps -ef | grep wal kingbase 10007 9820 0 23:50 ? 00:00:00 kingbase: walwriter [root@JiekeXu ~]# systemctl list-dependencies | grep kingbase ● ├─kingbased.service ● ├─kingbased.service [root@JiekeXu ~]# systemctl status kingbased.service ● kingbased.service - LSB: Start and stop the kingbase server Loaded: loaded (/etc/rc.d/init.d/kingbased; bad; vendor preset: disabled) Active: active (exited) since Sun 2024-09-22 23:50:03 CST; 7min ago Docs: man:systemd-sysv-generator(8) Process: 9498 ExecStart=/etc/rc.d/init.d/kingbased start (code=exited, status=0/SUCCESS) Tasks: 0 Sep 22 23:50:02 JiekeXu systemd[1]: Starting LSB: Start and stop the kingbase server... Sep 22 23:50:02 JiekeXu kingbased[9498]: Starting KingbaseES V9: Sep 22 23:50:02 JiekeXu su[9517]: (to kingbase) root on none Sep 22 23:50:03 JiekeXu kingbased[9498]: waiting for server to start.... done Sep 22 23:50:03 JiekeXu kingbased[9498]: server started Sep 22 23:50:03 JiekeXu kingbased[9498]: KingbaseES V9 started successfully Sep 22 23:50:03 JiekeXu systemd[1]: Started LSB: Start and stop the kingbase server. [root@JiekeXu ~]#
复制

image20240922235805705.png

# --root 用户以下命令均可以执行 # systemctl status kingbased.service # systemctl stop kingbased.service # systemctl start kingbased.service # systemctl restart kingbased.service # systemctl restart kingbase # systemctl stop kingbase # systemctl status kingbase # service kingbase status # service kingbase restart [root@JiekeXu ~]# systemctl list-dependencies | grep kingbase ● ├─kingbased.service ● ├─kingbased.service [root@JiekeXu ~]# [root@JiekeXu ~]# systemctl restart kingbase [root@JiekeXu ~]# [root@JiekeXu ~]# systemctl status kingbase ● kingbased.service - LSB: Start and stop the kingbase server Loaded: loaded (/etc/rc.d/init.d/kingbased; bad; vendor preset: disabled) Active: active (exited) since Mon 2024-09-23 00:00:52 CST; 11s ago Docs: man:systemd-sysv-generator(8) Process: 13150 ExecStop=/etc/rc.d/init.d/kingbased stop (code=exited, status=0/SUCCESS) Process: 13180 ExecStart=/etc/rc.d/init.d/kingbased start (code=exited, status=0/SUCCESS) Sep 23 00:00:51 JiekeXu systemd[1]: Starting LSB: Start and stop the kingbase server... Sep 23 00:00:51 JiekeXu kingbased[13180]: Starting KingbaseES V9: Sep 23 00:00:51 JiekeXu su[13186]: (to kingbase) root on none Sep 23 00:00:52 JiekeXu kingbased[13180]: waiting for server to start.... done Sep 23 00:00:52 JiekeXu kingbased[13180]: server started Sep 23 00:00:52 JiekeXu systemd[1]: Started LSB: Start and stop the kingbase server. Sep 23 00:00:52 JiekeXu kingbased[13180]: KingbaseES V9 started successfully [root@JiekeXu ~]# service kingbase status
复制

当然我们还可以使用 kingbase 用户 sys_ctl 命令管理启停。

sys_ctl status -D $KINGBASE_DATA sys_ctl stop -D $KINGBASE_DATA sys_ctl start -D $KINGBASE_DATA sys_ctl restart -D $KINGBASE_DATA [kingbase@JiekeXu ~]$ find /data/KingbaseES/ -name sys_ctl /data/KingbaseES/V9/KESRealPro/V009R001C001B0030/Server/bin/sys_ctl [kingbase@JiekeXu ~]$ echo $KINGBASE_DATA /data/KingbaseES/data [kingbase@JiekeXu ~]$ sys_ctl -D $KINGBASE_DATA status sys_ctl: server is running (PID: 13214) /data/KingbaseES/V9/KESRealPro/V009R001C001B0030/Server/bin/kingbase "-D" "/data/KingbaseES/data"
复制

注:sys_ctl stop 默认停库选项是 -m fast,断开客户端连接、回滚事务、正常关闭数据库,相当于 Oracle 中的 shutdown immediate

-m smart 选项则是等待所有连接断开后才关闭。

-m immediate 选项则是立即关闭,下次启动要进行恢复,相当于 Oracle 的 shutdown abort。

  • 使用 kingbase 启动实例
## 如果我们要启动实例,也可以使用 kingbase -D /data/KingbaseES/data kingbase -D $KINGBASE_DATA >log1 2>&1 & [kingbase@JiekeXu ~]$ which kingbase /data/KingbaseES/V9/Server/bin/kingbase [kingbase@JiekeXu ~]$ sys_ctl stop -D $KINGBASE_DATA waiting for server to shut down.... done server stopped [kingbase@JiekeXu ~]$ kingbase -D $KINGBASE_DATA >log1 2>&1 & [1] 16178 [kingbase@JiekeXu ~]$ sys_ctl status -D $KINGBASE_DATA sys_ctl: server is running (PID: 16178) /data/KingbaseES/V9/KESRealPro/V009R001C001B0030/Server/bin/kingbase "-D" "/data/KingbaseES/data"
复制

六、卸载 KES

先移除开机自动服务,接着卸载 KES 数据库。

[kingbase@JiekeXu script]$ ll /data/KingbaseES/V9/install/script/rootuninstall.sh -rwxr-x--- 1 kingbase kingbase 627 Sep 22 23:02 /data/KingbaseES/V9/install/script/rootuninstall.sh ## root 用户执行 rootuninstall.sh 脚本移除开机自动服务 [root@JiekeXu ~]# sh /data/KingbaseES/V9/install/script/rootuninstall.sh ## 以 kingbase 用户执行 bash /data/KingbaseES/V9/Uninstall/Uninstaller -i console。 [kingbase@JiekeXu Uninstall]$ bash /data/KingbaseES/V9/Uninstall/Uninstaller -i console [kingbase@JiekeXu Uninstall]$ echo $? 0 ## echo $? 返回 0 则说明卸载成功 然后删除此目录即可 /data/KingbaseES
复制

七、参考链接

https://bbs.kingbase.com.cn/docHtml?recId=d16e9a1be637c8fe4644c2c82fe16444&url=aHR0cHM6Ly9iYnMua2luZ2Jhc2UuY29tLmNuL2tpbmdiYXNlLWRvYy92OS9pbnN0YWxsLXVwZGF0YS9pbnN0YWxsLWxpbnV4L2luZGV4Lmh0bWw
复制

========= 未完待续系列 ============

最后这里在新开一个国产数据库技术交流群,有感兴趣的朋友可扫码入群,坑位有限先到先得。本群定位:交流学习国产数据库相关技术,拒绝吹水。

图片.png

全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~

❤️ 欢迎关注我的公众号【JiekeXu DBA之路】,一起学习新知识!
——————————————————————————
公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
ITPUB:https://blog.itpub.net/69968215
腾讯云:https://cloud.tencent.com/developer/user/5645107
——————————————————————————

facebook_pro_light_1920 × 1080  副本.png

最后修改时间:2024-09-26 08:49:28
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

筱悦星辰
暂无图片
6月前
评论
暂无图片 0
任何成绩的取得,都不是一蹴而就的。只有在不断的历练中学会总结,积累经验,才能一步步走向丰盈与完美的生活状态。
6月前
暂无图片 点赞
评论