KingbaseES V9 全自动静默安装指南与一键部署脚本

一、静默安装原理与优势

KingbaseES的静默安装通过预置配置文件实现无人值守部署,特别适合批量环境与自动化运维场景。相比交互式安装,静默模式具有以下优势:

  1. 通过配置文件统一管理安装参数
  2. 支持自动化流水线集成
  3. 确保多节点配置一致性
  4. 显著降低人工操作失误率

二、全自动安装脚本

#!/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.cfgCHOSEN_INSTALL_SETFull
DATABASE_MODE_PARAMORACLE
AUTHENTICATION_METHODscram-sha-256
kingbase.confmax_connections500
shared_buffers4GB
sys_hba.confhost all all 0.0.0.0/0scram-sha-256

五、常见问题处理

Q1: 安装时报错"目录权限不足"

  • 确认安装目录所属用户为kingbase
  • 检查SELinux是否已彻底关闭

Q2: 数据库无法启动

  • 检查数据目录是否已初始化
  • 查看启动日志:$DATA_DIR/sys_log/startup.log

Q3: 客户端连接失败

  • 确认防火墙已关闭
  • 检查sys_hba.conf的访问控制规则

标签: Linux, 人大金仓

相关文章

一些编程语言学习心得

作为一名专注于PHP、Go、Java和前端开发(JavaScript、HTML、CSS)的开发者,还得会运维、会谈客户....不想了,都是泪,今天说说这些年学习编程语言的一些体会,不同编程语言在...

Linux下的SSH服务配置与安全使用指南

重要提示:本文只是我日常使用的参考,请你先在本地做好测试,以免修改后不能正常登录服务器。 尤其是密钥登录的情况,一定要先将公钥放到服务器对应目录中SSH(Secure Shell)是一种加密网络...

macOS下使用UTM安装Alpine Linux虚拟机

在macOS下使用UTM(Universal Turing Machine)安装Alpine Linux虚拟机是一个相对简单的过程,但需要一些基本的配置和步骤。以下是详细的指南,涵盖了从安装UT...

图片Base64编码

CSR生成

图片无损放大

图片占位符

Excel拆分文件