Skip to content

KingBaseES 在 Linux 上安装

系统要求

硬件要求

配置类型CPU内存存储网络
最小配置2核4GB50GB千兆网卡
推荐配置4核或以上8GB或以上100GB SSD或以上千兆网卡或以上

软件要求

操作系统版本
Red Hat Enterprise Linux7.0 及以上
CentOS7.0 及以上
Ubuntu18.04 及以上
SUSE Linux Enterprise Server12 及以上

依赖包要求

在安装 KingBaseES 之前,需要确保系统已安装以下依赖包:

bash
# Red Hat/CentOS 系统
yum install -y gcc gcc-c++ make cmake perl python3 python3-devel openssl openssl-devel libxml2 libxml2-devel libxslt libxslt-devel zlib zlib-devel readline readline-devel libaio libaio-devel

# Ubuntu 系统
apt-get update
apt-get install -y gcc g++ make cmake perl python3 python3-dev openssl libssl-dev libxml2 libxml2-dev libxslt1-dev zlib1g zlib1g-dev libreadline-dev libaio1 libaio-dev

安装前准备

1. 创建用户和组

KingBaseES 不建议使用 root 用户运行,因此需要创建专门的用户和组:

bash
# 创建用户组
groupadd kingbase

# 创建用户并加入组
useradd -g kingbase -d /home/kingbase -m kingbase

# 设置用户密码
passwd kingbase

2. 配置系统参数

2.1 配置内核参数

编辑 /etc/sysctl.conf 文件,添加或修改以下参数:

bash
cat >> /etc/sysctl.conf << EOF
# KingBaseES 内核参数配置
kernel.shmmni = 4096
kernel.sem = 50100 64128000 50100 1280
fs.file-max = 7672460
net.ipv4.ip_local_port_range = 9000 65500
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_keepalive_time = 30
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_intvl = 30
vm.overcommit_memory = 0
vm.swappiness = 10
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
EOF

# 使配置生效
sysctl -p

2.2 配置资源限制

编辑 /etc/security/limits.conf 文件,添加以下参数:

bash
cat >> /etc/security/limits.conf << EOF
# KingBaseES 资源限制配置
kingbase soft nofile 65536
kingbase hard nofile 65536
kingbase soft nproc 131072
kingbase hard nproc 131072
kingbase soft stack 10240
kingbase hard stack 32768
kingbase soft core unlimited
kingbase hard core unlimited
EOF

3. 准备安装包

从 KingBaseES 官方网站或镜像站点下载适合您系统的安装包,例如:

bash
# 假设安装包位于 /tmp 目录
ls -l /tmp/KingbaseES_V008R006C005B0041_Lin64_install.iso

安装步骤

1. 挂载安装包

bash
# 创建挂载目录
mkdir -p /mnt/kingbase

# 挂载安装包
mount -o loop /tmp/KingbaseES_V008R006C005B0041_Lin64_install.iso /mnt/kingbase

2. 执行安装脚本

bash
# 切换到安装目录
cd /mnt/kingbase

# 查看安装脚本
ls -l setup.sh

# 给安装脚本添加执行权限
chmod +x setup.sh

# 执行安装脚本
su - kingbase -c "/mnt/kingbase/setup.sh"

3. 图形化安装向导

如果系统支持图形界面,安装程序将启动图形化安装向导:

  1. 欢迎页面:点击「下一步」
  2. 许可证协议:阅读并接受许可证协议,点击「下一步」
  3. 安装类型:选择「典型安装」或「自定义安装」,点击「下一步」
  4. 安装目录:默认安装目录为 /opt/Kingbase/ES/V8,可以根据需要修改,点击「下一步」
  5. 数据目录:默认数据目录为 /opt/Kingbase/ES/V8/data,可以根据需要修改,点击「下一步」
  6. 初始化参数:设置数据库初始化参数,包括端口号(默认 54321)、字符集(默认 UTF8)、数据块大小(默认 8KB)等,点击「下一步」
  7. 密码设置:设置数据库超级用户 system 的密码,点击「下一步」
  8. 预安装检查:检查系统环境是否满足安装要求,点击「下一步」
  9. 安装摘要:确认安装配置,点击「安装」
  10. 安装过程:等待安装完成
  11. 安装完成:点击「完成」

4. 命令行安装

如果系统不支持图形界面,可以使用命令行模式安装:

bash
# 命令行安装
su - kingbase -c "/mnt/kingbase/setup.sh -i console"

按照命令行提示完成安装:

  1. 选择语言:输入 1 选择中文
  2. 接受许可证协议:输入 y
  3. 选择安装类型:输入 1 选择典型安装,或 2 选择自定义安装
  4. 输入安装目录:默认 /opt/Kingbase/ES/V8,直接回车使用默认值
  5. 输入数据目录:默认 /opt/Kingbase/ES/V8/data,直接回车使用默认值
  6. 输入端口号:默认 54321,直接回车使用默认值
  7. 选择字符集:默认 UTF8,直接回车使用默认值
  8. 输入数据块大小:默认 8KB,直接回车使用默认值
  9. 输入超级用户密码:输入密码并确认
  10. 确认安装:输入 y 开始安装
  11. 等待安装完成

安装后配置

1. 配置环境变量

编辑 kingbase 用户的 .bash_profile 文件,添加以下环境变量:

bash
su - kingbase
cat >> ~/.bash_profile << EOF
# KingBaseES 环境变量
export KINGBASE_HOME=/opt/Kingbase/ES/V8
export PATH=KINGBASE_HOME/bin:PATH
export LD_LIBRARY_PATH=KINGBASE_HOME/lib:LD_LIBRARY_PATH
export KINGBASE_DATA=KINGBASE_HOME/data
EOF

# 使环境变量生效
source ~/.bash_profile

2. 启动数据库服务

bash
# 使用 sys_ctl 启动数据库
sys_ctl start -D KINGBASE_DATA

# 查看数据库状态
sys_ctl status -D KINGBASE_DATA

3. 验证安装

bash
# 连接数据库
ksql -U system -d kingbase

# 查看数据库版本
SELECT version();

# 退出数据库
\q

4. 设置开机自启

方法1:使用 systemd

创建 systemd 服务文件:

bash
cat > /etc/systemd/system/kingbase.service << EOF
[Unit]
Description=KingBaseES Database Service
After=network.target

[Service]
Type=forking
User=kingbase
Group=kingbase
Environment=KINGBASE_HOME=/opt/Kingbase/ES/V8
Environment=KINGBASE_DATA=/opt/Kingbase/ES/V8/data
ExecStart=KINGBASE_HOME/bin/sys_ctl start -D KINGBASE_DATA
ExecStop=KINGBASE_HOME/bin/sys_ctl stop -D KINGBASE_DATA
ExecReload=KINGBASE_HOME/bin/sys_ctl reload -D KINGBASE_DATA
PIDFile=KINGBASE_DATA/kingbase.pid
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

# 重新加载 systemd 配置
systemctl daemon-reload

# 启用开机自启
systemctl enable kingbase

# 启动服务
systemctl start kingbase

# 查看服务状态
systemctl status kingbase

方法2:使用 chkconfig

创建 init 脚本:

bash
cat > /etc/init.d/kingbase << 'EOF'
#!/bin/bash
# KingBaseES init script
# chkconfig: 2345 64 36

KINGBASE_HOME=/opt/Kingbase/ES/V8
KINGBASE_DATA=KINGBASE_HOME/data
SYS_CTL=KINGBASE_HOME/bin/sys_ctl

case "1" in
    start)
        echo "Starting KingBaseES..."
        su - kingbase -c "SYS_CTL start -D KINGBASE_DATA"
        ;;
    stop)
        echo "Stopping KingBaseES..."
        su - kingbase -c "SYS_CTL stop -D KINGBASE_DATA"
        ;;
    restart)
        echo "Restarting KingBaseES..."
        su - kingbase -c "SYS_CTL restart -D KINGBASE_DATA"
        ;;
    status)
        su - kingbase -c "SYS_CTL status -D KINGBASE_DATA"
        ;;
    reload)
        echo "Reloading KingBaseES configuration..."
        su - kingbase -c "SYS_CTL reload -D KINGBASE_DATA"
        ;;
    *)
        echo "Usage: 0 {start|stop|restart|status|reload}"
        exit 1
        ;;
esac
exit 0
EOF

# 给脚本添加执行权限
chmod +x /etc/init.d/kingbase

# 添加到 chkconfig
chkconfig --add kingbase

# 设置开机自启
chkconfig kingbase on

# 启动服务
service kingbase start

# 查看服务状态
service kingbase status

数据库初始化

如果在安装过程中没有初始化数据库,可以手动初始化:

bash
# 初始化数据库
initdb -D KINGBASE_DATA -E UTF8 --locale=C -U system -W

# 启动数据库
sys_ctl start -D KINGBASE_DATA

配置远程访问

1. 修改监听地址

编辑 kingbase.conf 文件,修改监听地址:

bash
vi KINGBASE_DATA/kingbase.conf

找到并修改以下参数:

listen_addresses = '*'  # 监听所有地址,或指定具体的IP地址
port = 54321  # 数据库端口号

2. 修改客户端认证配置

编辑 sys_hba.conf 文件,添加远程访问权限:

bash
vi KINGBASE_DATA/sys_hba.conf

添加以下内容,允许所有IP地址通过密码认证访问:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             0.0.0.0/0               md5
host    all             all             ::/0                    md5

3. 重启数据库

bash
sys_ctl restart -D KINGBASE_DATA

安装验证

1. 本地连接测试

bash
# 使用 ksql 连接数据库
ksql -U system -d kingbase -h localhost -p 54321

# 查看数据库列表\l

# 创建测试数据库
CREATE DATABASE test_db;

# 退出数据库\q

2. 远程连接测试

从另一台机器使用 KingBaseES 客户端连接数据库:

bash
# 使用 ksql 远程连接
tools/ksql -U system -d kingbase -h 192.168.1.100 -p 54321

# 或使用其他数据库客户端,如 DBeaver、Navicat 等

常见问题处理

1. 安装过程中提示依赖包缺失

问题:安装过程中提示缺少某些依赖包。

解决方案

bash
# 根据提示安装缺失的依赖包
yum install -y <缺失的依赖>
# 或
apt-get install -y <缺失的依赖>

2. 初始化数据库失败

问题:初始化数据库时失败,提示 "could not create shared memory segment"。

解决方案

检查内核参数 kernel.shmmaxkernel.shmall 是否设置合理:

bash
# 查看当前设置
sysctl -a | grep shm

# 修改内核参数
cat >> /etc/sysctl.conf << EOF
kernel.shmmax = 17179869184  # 16GB
kernel.shmall = 4194304  # 16GB / 4KB = 4194304
EOF

# 使配置生效
sysctl -p

3. 数据库无法启动

问题:数据库启动失败,提示 "could not bind IPv4 address"。

解决方案

检查端口是否被占用:

bash
# 检查端口占用情况
netstat -tuln | grep 54321

# 如果端口被占用,修改 kingbase.conf 文件中的端口号
vi KINGBASE_DATA/kingbase.conf
port = 54322

# 重启数据库
sys_ctl restart -D KINGBASE_DATA

4. 远程连接失败

问题:远程连接数据库失败,提示 "no pg_hba.conf entry for host"。

解决方案

检查 sys_hba.conf 文件是否正确配置了远程访问权限:

bash
# 查看 sys_hba.conf 文件
cat KINGBASE_DATA/sys_hba.conf

# 添加远程访问权限
echo "host    all             all             0.0.0.0/0               md5" >> KINGBASE_DATA/sys_hba.conf

# 重启数据库
sys_ctl reload -D KINGBASE_DATA

卸载 KingBaseES

1. 停止数据库服务

bash
sys_ctl stop -D KINGBASE_DATA

2. 删除安装目录

bash
# 删除安装目录
rm -rf /opt/Kingbase/ES/V8

# 删除数据目录
rm -rf /opt/Kingbase/ES/V8/data

# 删除用户和组(可选)
userdel -r kingbase
groupdel kingbase

# 删除 systemd 服务文件(可选)
rm -f /etc/systemd/system/kingbase.service
systemctl daemon-reload

# 删除 init 脚本(可选)
rm -f /etc/init.d/kingbase
chkconfig --del kingbase

总结

本文详细介绍了 KingBaseES 在 Linux 操作系统上的安装步骤,包括系统要求、安装前准备、图形化安装、命令行安装、安装后配置、数据库初始化、远程访问配置和常见问题处理。通过本文的指导,您可以成功在 Linux 系统上安装和配置 KingBaseES 数据库。

在实际生产环境中,建议根据系统资源和业务需求合理配置数据库参数,并定期进行数据库备份和维护,确保数据库的稳定性和可靠性。