KingbaseES V9 全自动静默安装指南与一键部署脚本
一、静默安装原理与优势
KingbaseES的静默安装通过预置配置文件实现无人值守部署,特别适合批量环境与自动化运维场景。相比交互式安装,静默模式具有以下优势:
- 通过配置文件统一管理安装参数
- 支持自动化流水线集成
- 确保多节点配置一致性
- 显著降低人工操作失误率
二、全自动安装脚本
#!/bin/bash
# KingbaseES V9 全自动静默安装脚本
# 版本:v0.1
# 作者:全栈开发技术博客
# 详情:https://www.lvtao.net/system/kingbase-setup-bash-shell.html
# 说明:使用前请确保已获取root权限
# ============= 用户可配置参数 =============
INSTALL_USER="kingbase" # 运行用户
DB_PORT=54321 # 数据库端口
INSTALL_DIR="/opt/Kingbase/ES/V9" # 安装目录
DATA_DIR="/home/kingbase/data" # 数据目录
LICENSE_PATH="/home/kingbase/license.dat" # 许可证路径
ISO_PATH="KingbaseES_V009R001C002B0014_Lin64_install.iso" # 镜像路径
# ============= 环境预处理 =============
function precheck() {
# 检查root权限
[[ $EUID -ne 0 ]] && echo "错误:必须使用root权限执行" && exit 1
# 检查ISO文件存在
[ ! -f $ISO_PATH ] && echo "错误:ISO文件不存在" && exit 2
# 检查端口占用
ss -tunlp | grep -q ":${DB_PORT}\b" && echo "错误:端口${DB_PORT}已被占用" && exit 3
}
# ============= 系统配置 =============
function system_config() {
# 创建用户和组
if ! grep -q "^dba:" /etc/group; then
groupadd dba -g 3000
fi
if ! id $INSTALL_USER &>/dev/null; then
useradd -g dba -u 3001 $INSTALL_USER
echo "kingbase123" | passwd --stdin $INSTALL_USER
fi
# 创建目录结构
mkdir -p $INSTALL_DIR $DATA_DIR /home/kingbase/{archivelog,backup}
chown -R $INSTALL_USER:dba $INSTALL_DIR /home/kingbase
# 关闭防火墙和SELinux
systemctl stop firewalld && systemctl disable firewalld
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
setenforce 0
# 配置内核参数
cat >> /etc/security/limits.conf <<EOF
$INSTALL_USER soft nofile 1048576
$INSTALL_USER hard nofile 1048576
$INSTALL_USER soft nproc 131072
$INSTALL_USER hard nproc 131072
EOF
cat >> /etc/sysctl.conf <<EOF
fs.aio-max-nr=1048576
kernel.shmall=2097152
kernel.shmmax=17179869184
net.ipv4.ip_local_port_range=9000 65500
EOF
sysctl -p
# 处理RemoveIPC
sed -i 's/^#\(RemoveIPC=\).*/\1no/' /etc/systemd/logind.conf
systemctl daemon-reload
systemctl restart systemd-logind
}
# ============= 安装过程 =============
function install_kingbase() {
# 挂载ISO镜像
mount_point=$(mktemp -d)
mount -t iso9660 -o loop $ISO_PATH $mount_point
# 准备静默配置文件
cp $mount_point/setup/silent.cfg /tmp/
chmod 644 /tmp/silent.cfg
# 使用sed动态修改配置
sed -i -e "s|CHOSEN_INSTALL_SET=.*|CHOSEN_INSTALL_SET=Full|" \
-e "s|USER_INSTALL_DIR=.*|USER_INSTALL_DIR=$INSTALL_DIR|" \
-e "s|KB_LICENSE_PATH=.*|KB_LICENSE_PATH=$LICENSE_PATH|" \
-e "s|USER_SELECTED_DATA_FOLDER=.*|USER_SELECTED_DATA_FOLDER=$DATA_DIR|" \
-e "s|DB_PORT=.*|DB_PORT=$DB_PORT|" \
/tmp/silent.cfg
# 切换用户执行安装
su - $INSTALL_USER -c "$mount_point/setup.sh -i silent -f /tmp/silent.cfg"
# 检查安装结果
if grep -q "Installation: Successful" $INSTALL_DIR/install/Logs/KingbaseES_V9_安装_*.log; then
echo "安装成功!"
else
echo "安装失败,请检查日志:$INSTALL_DIR/install/Logs/"
exit 4
fi
# 卸载镜像
umount $mount_point && rmdir $mount_point
}
# ============= 后置配置 =============
function post_config() {
# 配置环境变量
cat >> /home/$INSTALL_USER/.bashrc <<EOF
export KINGBASE_HOME=$INSTALL_DIR
export PATH=\$KINGBASE_HOME/Server/bin:\$PATH
export LD_LIBRARY_PATH=\$KINGBASE_HOME/Server/lib:\$LD_LIBRARY_PATH
export KINGBASE_DATA=$DATA_DIR
export KINGBASE_PORT=$DB_PORT
EOF
# 注册系统服务
$INSTALL_DIR/install/script/root.sh
# 启动数据库
su - $INSTALL_USER -c "sys_ctl -w start -D $DATA_DIR -l $DATA_DIR/sys_log/startup.log"
}
# ============= 主执行流程 =============
main() {
precheck
system_config
install_kingbase
post_config
echo "KingbaseES V9 安装完成!使用端口:$DB_PORT"
}
main "$@"
三、使用说明
1. 准备工作
- 将ISO镜像和许可证文件上传到服务器
- 根据实际情况修改脚本头部配置参数
- 确保服务器内存≥4GB,磁盘空间≥50GB
2. 执行安装
chmod +x kingbase_install.sh
./kingbase_install.sh
3. 验证安装
# 查看数据库进程
ps -ef | grep kingbase
# 连接数据库
ksql -Usystem -d test -p 54321 -h 127.0.0.1
四、关键参数说明
参数文件 | 关键配置项 | 推荐值 |
---|---|---|
silent.cfg | CHOSEN_INSTALL_SET | Full |
DATABASE_MODE_PARAM | ORACLE | |
AUTHENTICATION_METHOD | scram-sha-256 | |
kingbase.conf | max_connections | 500 |
shared_buffers | 4GB | |
sys_hba.conf | host all all 0.0.0.0/0 | scram-sha-256 |
五、常见问题处理
Q1: 安装时报错"目录权限不足"
- 确认安装目录所属用户为kingbase
- 检查SELinux是否已彻底关闭
Q2: 数据库无法启动
- 检查数据目录是否已初始化
- 查看启动日志:
$DATA_DIR/sys_log/startup.log
Q3: 客户端连接失败
- 确认防火墙已关闭
- 检查sys_hba.conf的访问控制规则
版权声明:本文为原创文章,版权归 全栈开发技术博客 所有。
本文链接:https://www.lvtao.net/system/kingbase-setup-bash-shell.html
转载时须注明出处及本声明