2d3147d166deab71b1fd8006a4984dcc.gif

作者 | JiekeXu

来源 |公众号 JiekeXu DBA之路(ID: JiekeXu_IT)

如需转载请联系授权 | (个人微信 ID:JiekeXu_DBA)

大家好,我是 JiekeXu,江湖人称“强哥”,荣获 Oracle ACE Pro 称号,墨天轮 MVP,墨天轮年度“墨力之星”,拥有 Oracle 11g OCP/OCM 认证,MySQL 5.7/8.0 OCP 认证以及 PCA、PCTA、OBCA、OGCA、KCP 等众多国产数据库认证证书,今天和大家一起来看看中电科金仓 KES 单机安装最佳实践欢迎点击最上方蓝字“JiekeXu DBA之路”关注我的微信公众号,然后点击右上方三个点“设为星标”置顶,更多干货文章才能第一时间推送,谢谢!

目   录

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

七、参考链接

前  言

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

fd7d5f423094115424874acef46c6670.jpeg

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

金仓数据库属于非开源产品,企业版本需要绑定主机 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 类型的安装介质。

b8aa20517328cedf9f452345617e6c98.png    

af092de5585a6632069269e6d3fa4f00.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 软件安装规划表  

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

40a7e5f0010a4e3300f27cf731b7face.png

三、操作系统相关配置  

这一节主要说明 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

40e9260c26026793085fca307a3f70b9.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,有 图形化安装 、 命令行安装 和 静默安装 三种方式,不论何种方式安装,整体的安装流程如下图所示。

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

1006df105a03ab4e7bdcbae20197e625.png

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

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

45353e3f2e78496ffd11b8d08312d1a4.png

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

f306ad13ddc6a2eb21beb4650afb1203.png

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

15d2f42f7e0f0800aeae2043f501baae.png

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

958467858a7f4f079d54a8f9f05bb8b3.png

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

2523325d5fa51e9e3506a2f02106f493.png

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

71a73b0296ff2777fa06f1eaae47c15e.png

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

9202c1843cd9b473eb44724194b5f303.png

·数据库区域选择:enUS.UTF-8,默认为 zhCN.UTF-8

·默认数据库兼容模式为:ORACLE(可选 PG、MySQL)

·默认大小写敏感为:是(可选否)    

a14680630ead1750dc3a8ce330045e68.png

·默认数据块大小为:8k(可选16k、32k)

·默认身份认证方法为scram-sha-256(可选 scram-sm3,sm4,sm3)   

aaf889d9cdb40c0f38aa7488f2079dc8.png

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

22c1275114af3de3d99a30a0b030f943.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

8ce1e29153aa54b5a88665edeb5a15e3.png

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

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

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

b7c64e9b75dcb9fbe2d06cb26d18b14d.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

32a4dcaa0af823f2d928b78302c4c74a.png

图形化管理工具——KStudio

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

e90c1060a9100fe7be0274545c8808b0.png

62251b00ade3eef526ea2fac56611dc2.png

780929c6a4e9037d52574c2cad27bb0b.png

3282bd90baba9b96411268de3e274ecd.png

五、安装后检查

·查看 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

·查看安装日志

在$KINGBASEHOME/{install}/Logs目录下,存在名称为 "KingbaseESV9_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)

1d1efb6191aaab3636f3960679681b98.png

·用户简单管理

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

b2da120c947780ded533b421b7dd665b.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 ~]#

b4f0260e782438b233f2fe8e6f53bc7c.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

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

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

8e76cb5ef7a75090ecf68bf689fc53f3.png

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

欢迎关注我的公众号【JiekeXu DBA之路】,一起学习新知识!

94964a3ccb23f8646470d3c5d580524d.gif

分享几个数据库备份脚本

一文搞懂 Oracle 统计信息
 
 

我的 Oracle ACE 心路历程

MOP 系列|MOP 三种主流数据库索引简介

Oracle 主流版本不同架构下的静默安装指南
 
 

关机重启导致 ASM 磁盘丢失数据库无法启动

Oracle SQL 性能分析(SPA)原理与实战演练
 
 

Oracle 11g 升级到 19c 需要关注的几个问题

Windows 10 环境下 MySQL 8.0.33 安装指南

SQL 大全(四)|数据库迁移升级时常用 SQL 语句

OGG|使用 OGG19c 迁移 Oracle11g 到 19C(第二版)

Oracle 大数据量导出工具——sqluldr2 的安装与使用

从国产数据库调研报告中你都能了解哪些信息及我的总结建议

使用数据泵利用 rowid 分片导出导入 lob 大表及最佳实践

在归档模式下直接 rm dbf 数据文件并重启数据库还有救吗?

欢迎关注我的公众号【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
——————————————————————————b22ba74a274d2cdc95ef642366cd4035.png

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐