暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

告别繁琐!KingbaseES v9数据库一键安装-青学会&金仓专栏(1)


想学会更多实用技巧,欢迎加入青学会MOP技术社区(实名社区),联系小助手入群。
同时欢迎大家在评论区留言互动交流!

社区会不定期举行相关的抽奖、知识分享活动。
如果你有想了解的知识点希望我们发文可以后台私信。


大家都在写kingbase V9的安装,写的着实有点太长了,哈哈,我这整理了一个一键安装脚本,直接来干货!

同样的环境和目录的情况下,直接参考我的文章就能安装上。

省下来的时间就可以愉快的进行下一步的学习了。

0、金仓数据库简介

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

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

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

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

另外金仓可是妥妥的国家队!!DDDDD

1、准备环境

虚拟机配置:4cpu、8G内存、系统盘120G、数据盘300G

操作系统:openEuler 24.03 LTS X86架构(默认安装即可)

软件版本:KingbaseES_V009R001C001B0030

安装目录:/u01/app/Kingbase/ES/V9

数据文件目录:/u01/app/Kingbase/ES/V9/data

下载安装镜像,这里测试我就不校验MD5了,生产大家要注意传到服务器后也校验一下,以免装一半提示少文件等奇怪的错误。

别忘记在授权文件位置下载授权文件,kingbaseES软件并不是免费的,可以下载试用授权进行安装。

2、相关参考地址

文档地址:https://bbs.kingbase.com.cn/documentGuide?recId=d16e9a1be637c8fe4644c2c82fe16444

下载地址:https://www.kingbase.com.cn/xzzx/index.htm

3、部署前准备

准备安装目录,把第二块300g数据库盘挂载到/u01目录,这里使用lvm的方法。

方法1:手动执行示例,我这里第2块硬盘是/dev/nvme0n2
mkdir -p /u01
parted -s /dev/nvme0n2 mklabel gpt
parted -s /dev/nvme0n2 mkpart primary 2048s 100%
parted -s /dev/nvme0n2 toggle 1 lvm
partprobe /dev/nvme0n2
vgcreate datavg /dev/nvme0n2p1
lvcreate -l 100%FREE -n datalv datavg
mkfs.ext4 /dev/mapper/datavg-datalv
mount /dev/mapper/datavg-datalv /u01

方法2:编辑脚本执行,粘贴以下内容到lvm.sh脚本里,执行sh lvm.sh <disk_path> <mount_point>
如sh lvm.sh /dev/nvme0n2 /u01
则把/dev/nvme0n2创建新的LVM,并格式分lv挂载到/u01目录下(注意脚本要适当修改,如果硬盘是sdb的话,那么分区名是${disk_path}1 ,我这里nvme的话显示是${disk_path}p1)
#!/bin/bash
disk_path=$1
mount_point=$2
mkdir -p $2
parted -s $disk_path mklabel gpt
parted -s $disk_path mkpart primary 2048s 100%
parted -s $disk_path toggle 1 lvm
parted -s $disk_path p
pvcreate ${disk_path}p1
vgcreate datavg ${disk_path}p1
lvcreate -l 100%FREE -n datalv datavg
mkfs.ext4 /dev/mapper/datavg-datalv
mount /dev/mapper/datavg-datalv $2
echo "/dev/mapper/datavg-datalv $2 ext4 defaults 0 0 " >>/etc/fstab

4、一键部署

执行脚本,提前把以下两个文件拷贝到/root目录下

KingbaseES_V009R001C001B0030_Lin64_install.iso
license_企业版.zip

下面是脚本内容

#!/bin/bash
#一键安装数据库
#创建安装用户
echo "**********************Create user**********************"
useradd -d /home/kingbase -m kingbase
echo "kingbase" | passwd --stdin kingbase

#修改用户环境变量
echo "change user profile"
cat >> /home/kingbase/.bash_profile <<EOF
export PATH=/u01/app/Kingbase/ES/V9/Server/bin:\$PATH
export KINGBASE_HOME=/u01/app/Kingbase/ES/V9
export KINGBASE_DATA=/u01/app/Kingbase/ES/V9/data
EOF

#关闭防火墙及SELINUX
echo "**********************disable firewalld and selinux**********************"
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
setenforce 0
systemctl disable firewalld && systemctl stop firewalld
#修改配置参数
echo "**********************config system parameter**********************"
cp /etc/sysctl.conf /etc/sysctl.conf.bak
echo "#kingbase-set" >> /etc/sysctl.conf
echo "kernel.shmmni = 4096" >> /etc/sysctl.conf
echo "fs.aio-max-nr = 1048576" >> /etc/sysctl.conf
echo "fs.file-max = 6815744" >> /etc/sysctl.conf
echo "kernel.sem = 250 32000 100 128" >> /etc/sysctl.conf
echo "kernel.shmmax=$(free|grep Mem |awk '{print int($2*1024*0.85)}')" >> /etc/sysctl.conf
echo "kernel.shmall=$(free|grep Mem |awk '{print int(($2*1024*0.85)/4096)}')" >> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 9000 65500" >> /etc/sysctl.conf
echo "net.core.rmem_default = 262144" >> /etc/sysctl.conf
echo "net.core.rmem_max = 4194304" >> /etc/sysctl.conf
echo "net.core.wmem_default = 262144" >> /etc/sysctl.conf
echo "net.core.wmem_max = 1048586" >> /etc/sysctl.conf
sysctl -p
echo "#kingbase-set" >> /etc/security/limits.conf
echo "kingbase soft nofile 65536" >> /etc/security/limits.conf
echo "kingbase hard nofile 65536" >> /etc/security/limits.conf
echo "kingbase soft nproc 65536" >> /etc/security/limits.conf
echo "kingbase hard nproc 65536" >> /etc/security/limits.conf
echo "kingbase soft core unlimited" >> /etc/security/limits.conf
echo "kingbase hard core unlimited" >> /etc/security/limits.conf
#创建安装目录
echo "**********************create directory**********************"
mkdir -p /u01/{app/Kingbase/ES/V9/data,/software/}
#修改主机名
echo "**********************modify hostname**********************"
hostnamectl set-hostname kingbase
public_ip=$(hostname -I| grep -o -e '[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}' |head -n 1)
node_name=$(hostname)
echo -e "${public_ip} ${node_name}">> /etc/hosts
cat /etc/hosts
#拷贝软件包
echo "**********************copy software to directory**********************"
cp *.iso *.zip /u01/software
mount -o loop /u01/software/*.iso /mnt/
unzip /u01/software/licen*.zip
chown -R kingbase:kingbase /u01

#静默安装配置
echo "**********************create silent file**********************"
cat >> /u01/software/install1.cfg <<EOF
#授权文件位置
KB_LICENSE_PATH=/u01/software/license_41248/license_41248_0.dat
#是否全部安装,选项有Full, Client, Custom
CHOSEN_INSTALL_SET=Full
#安装的组件,有SERVER, KSTUDIO, KDTS, INTERFACE, DEPLOY, KINGBASEHA
CHOSEN_FEATURE_LIST=SERVER,KSTUDIO,KDTS,INTERFACE,DEPLOY,KINGBASEHA
#安装软件目录
USER_INSTALL_DIR=/u01/app/Kingbase/ES/V9
#初始化数据库文件位置
USER_SELECTED_DATA_FOLDER=/u01/app/Kingbase/ES/V9/data
#端口
DB_PORT=54321
#管理员用户名
DB_USER=system
#这里要要输入两次口令
DB_PASS=oracle
DB_PASS2=oracle
#选项有UTF8, GBK, GB18030, GB2312, default
ENCODING_PARAM=UTF8
LOCALE_PARAM=zh_CN.UTF-8
#选择数据库模式,有三种可选ORACLE, PG, MySQL
DATABASE_MODE_PARAM=ORACLE
#是否区分大小写
CASE_SENSITIVE_PARAM=YES
#存储块大小 8/16/32K可选
BLOCK_SIZE_PARAM=8k
AUTHENTICATION_METHOD_PARAM=scram-sha-256
EOF
chmod 777 /u01/software/install1.cfg

#开始安装
echo "**********************installing**********************"
su - kingbase -c "/mnt/setup.sh -i silent -f /u01/software/install1.cfg"
echo "finish! please use root account exec /u01/app/Kingbase/ES/V9/install/script/root.sh"

记得看提示,最后要执行root.sh,注册系统服务,并启动数据库

[root@kingbase Logs]# /u01/app/Kingbase/ES/V9/install/script/root.sh 
Starting KingbaseES V9: 
waiting for server to start.... done
server started
KingbaseES V9 started successfully
[root@kingbase Logs]
[root@kingbase Logs]
[root@kingbase Logs]
[root@kingbase Logs]# ps -ef|grep kingbase
kingbase    6274       1  0 18:55 ?        00:00:00 /u01/app/Kingbase/ES/V9/KESRealPro/V009R001C001B0030/Server/bin/kingbase -D /u01/app/Kingbase/ES/V9/data
kingbase    6275    6274  0 18:55 ?        00:00:00 kingbase: logger   
kingbase    6277    6274  0 18:55 ?        00:00:00 kingbase: checkpointer   
kingbase    6278    6274  0 18:55 ?        00:00:00 kingbase: background writer   
kingbase    6279    6274  0 18:55 ?        00:00:00 kingbase: walwriter   
kingbase    6280    6274  0 18:55 ?        00:00:00 kingbase: autovacuum launcher   
kingbase    6281    6274  0 18:55 ?        00:00:00 kingbase: stats collector   
kingbase    6282    6274  0 18:55 ?        00:00:00 kingbase: kwr collector   
kingbase    6283    6274  0 18:55 ?        00:00:00 kingbase: ksh writer   
kingbase    6284    6274  0 18:55 ?        00:00:00 kingbase: ksh collector   
kingbase    6285    6274  0 18:55 ?        00:00:00 kingbase: logical replication launcher   
root        6287    4701  0 18:55 pts/1    00:00:00 grep --color=auto kingbase

在欧拉系统里,推荐是使用/etc/init.d/kingbased命令启动&停止数据库

/etc/init.d/kingbased status
/etc/init.d/kingbased stop
/etc/init.d/kingbased start

登陆数据库

[kingbase@kingbase:/home/kingbase]$ ksql -p 54321 -U system kingbase
Password for user system: 
Type "help" for help.

kingbase=# \l
                               List of databases
   Name    | Owner  | Encoding |   Collate   |    Ctype    | Access privileges 
-----------+--------+----------+-------------+-------------+-------------------
 kingbase  | 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 | 
(5 rows)

5、注意事项

这里发现一个情况,安装完软件后,会自动去修改一遍sysctl.conf

比如下面#kingbase-set是我脚本里添加的,之后又有一段#add by kingbase这安装完软件后自动写进去的。

这里要是生产的话,大家注意参数调整

#kingbase-set
kernel.shmmni = 4096
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmax=6594470707
kernel.shmall=1609978
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 = 1048586


#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



END

往期文章回顾

MOP社区新闻

  青学会MOP技术社区成立了!

  青学会专家顾问团成员介绍

DBA实战小技巧

  推荐一款超实用的openGauss数据库安装工具!

  实战:记一次RAC故障排查
  DBA实战运维小技巧安装篇(一)Oracle 主流版本不同架构下的静默安装指南
  DBA实战运维小技巧存储篇(一)根目录满了如何处理
  DBA实战运维小技巧存储篇(二)打包迁移单机数据库至新存储

MOP社区投稿-内核开发

  浅谈 PostgreSQL GUC 模块原理

  简单解析 IvorySQL 增强 Oracle xml 兼容能力的原理

  简单讨论 PostgreSQL C语言拓展函数返回数据表的方式

  简单分析 pg_config 程序的作用与原理
  Redis 日志机制简介(一):SlowLog
  Redis 日志机制简介(二):AOF 日志
  Redis 日志机制简介(三):RDB 日志
  pg_cron插件使用介绍
  Redis 的指令表实现机制简介
  pg几款源码工具介绍

MOP顾问说

   MOP顾问说:MOP 三种主流数据库常用 SQL(一)

  MOP顾问说:服务器内存

  MOP 顾问说:Linux Nice 值与 CPU 优先级揭秘


文章转载自青年数据库学习互助会,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论