CentOS 7下openGauss极简版安装实战指南
在数据库技术日新月异的今天,国产数据库openGauss凭借其高性能、高可用特性逐渐成为企业级应用的热门选择。对于需要在CentOS 7环境下快速部署openGauss的开发者和运维人员来说,极简版无疑是最轻量高效的入门方案。本文将带你从零开始,完成整个安装流程,并针对实际环境中可能遇到的各类问题提供解决方案。
1. 环境准备与系统优化
在开始安装openGauss之前,我们需要对CentOS 7系统进行一系列优化配置,以确保数据库能够稳定运行。这些准备工作看似繁琐,但却是避免后续问题的关键步骤。
首先创建一个专用的数据库用户组和用户,这不仅是安全最佳实践,也能避免使用root权限带来的潜在风险:
groupadd dbgrp
useradd -g dbgrp -m -d /home/omm -s /bin/bash omm
passwd omm # 设置用户密码
数据库性能很大程度上受限于系统内核参数,我们需要调整以下几个关键设置:
# 文件句柄数限制
echo "* soft nofile 1000000" >> /etc/security/limits.conf
echo "* hard nofile 1000000" >> /etc/security/limits.conf
# 内核信号量参数
echo "kernel.sem=250 32000 32 321" >> /etc/sysctl.conf
sysctl -p # 立即生效
注意:文件句柄数限制对于高并发数据库应用至关重要,默认值通常无法满足生产环境需求。
安全相关配置调整也是必不可少的步骤:
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 禁用SELinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
安装基础依赖软件包:
yum install -y net-tools wget zip unzip bzip2 libaio-devel flex bison ncurses-devel glibc-devel patch readline-devel
完成上述配置后,建议重启系统使所有设置生效:
reboot
2. 安装包获取与解压
openGauss极简版提供了两种获取方式:官方下载和镜像站获取。根据网络环境选择最适合的方式。
官方下载地址(可能需要较长时间):
wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/5.1.0/x86/openGauss-5.1.0-CentOS-64bit.tar.bz2
如果下载速度不理想,可以考虑使用国内镜像站:
wget https://mirrors.huaweicloud.com/opengauss/5.1.0/x86/openGauss-5.1.0-CentOS-64bit.tar.bz2
下载完成后,创建专用目录并解压安装包:
mkdir -p /home/omm/openGauss
tar -jxf openGauss-5.1.0-CentOS-64bit.tar.bz2 -C /home/omm/openGauss
解压后的目录结构如下:
openGauss/
├── bin
├── include
├── lib
├── share
└── simpleInstall
提示:极简版与完整版的主要区别在于不包含OM和CM组件,适合开发测试环境使用。
3. 数据库安装与初始化
进入simpleInstall目录,执行安装脚本前需要确认几个关键参数:
| 参数 | 说明 | 默认值 | 是否必选 |
|---|---|---|---|
| -w | 数据库初始密码 | 无 | 是 |
| -p | 主节点端口号 | 5432 | 否 |
| --multinode | 是否一主一备安装 | 单节点 | 否 |
| -h/--help | 显示帮助信息 | 无 | 否 |
单节点安装命令示例:
cd /home/omm/openGauss/simpleInstall
sh install.sh -w "YourStrong@Password123"
安装过程会输出详细日志,正常情况下应该看到类似以下信息:
[STEP 1] check install env
[STEP 2] decompress package
[STEP 3] init datanode
[STEP 4] start datanode
[STEP 5] register datanode to cm
[STEP 6] start cm
[STEP 7] init gaussdb
[STEP 8] start gaussdb
[STEP 9] check install result
[SUCCESS] All installation steps finished
安装完成后,会自动将必要的环境变量添加到用户profile中。为使环境变量立即生效,可以执行:
source ~/.bashrc
验证安装是否成功:
ps ux | grep gaussdb # 查看数据库进程
gsql -d postgres -p 5432 -U omm -W # 连接数据库
4. 常见问题排查与解决
即使按照标准流程安装,在实际环境中仍可能遇到各种问题。以下是几个典型问题及其解决方案。
4.1 安装脚本执行失败
问题现象:执行install.sh时报错,提示权限不足或依赖缺失。
解决方案:
- 确保使用omm用户执行安装命令
- 检查依赖是否完整安装:
# 检查缺失的依赖库
ldd /home/omm/openGauss/bin/gaussdb | grep "not found"
- 如果提示python相关错误,可能需要安装特定版本:
yum install -y python3
4.2 数据库无法启动
问题现象:安装完成后,ps命令查不到gaussdb进程。
排查步骤:
- 检查日志文件:
tail -100 /home/omm/openGauss/data/single_node/pg_log/postgresql-*.log
- 手动启动数据库:
gs_ctl start -D /home/omm/openGauss/data/single_node
常见启动错误及解决方法:
| 错误信息 | 可能原因 | 解决方案 |
|---|---|---|
| "could not create shared memory segment" | 内核参数配置不当 | 重新配置kernel.sem参数并重启 |
| "could not open file" | 权限问题 | chown -R omm:dbgrp /home/omm/openGauss |
| "port 5432 already in use" | 端口冲突 | 修改安装参数-p指定其他端口 |
4.3 连接认证失败
问题现象:gsql连接时提示密码错误或认证失败。
解决方案:
- 确认使用正确的连接命令:
gsql -d postgres -p 5432 -U omm -W
- 检查pg_hba.conf配置:
vim /home/omm/openGauss/data/single_node/pg_hba.conf
确保包含以下行:
host all all 127.0.0.1/32 md5
local all all md5
- 修改配置后需要重新加载:
gs_ctl reload -D /home/omm/openGauss/data/single_node
5. 基础操作与维护
成功安装后,掌握一些基本操作命令对日常维护至关重要。
5.1 gsql常用命令
连接数据库后,可以使用以下元命令:
\l -- 列出所有数据库
\c dbname -- 切换数据库
\d -- 列出当前数据库的所有表
\dt -- 列出所有普通表
\di -- 列出所有索引
\du -- 列出所有角色
\q -- 退出gsql
5.2 gs_ctl管理命令
数据库服务控制命令:
# 查看状态
gs_ctl status -D /home/omm/openGauss/data/single_node
# 停止服务
gs_ctl stop -D /home/omm/openGauss/data/single_node
# 启动服务
gs_ctl start -D /home/omm/openGauss/data/single_node
# 重启服务
gs_ctl restart -D /home/omm/openGauss/data/single_node
# 重新加载配置文件
gs_ctl reload -D /home/omm/openGauss/data/single_node
5.3 性能监控命令
几个实用的性能查看命令:
# 查看数据库连接数
gsql -c "SELECT count(*) FROM pg_stat_activity;"
# 查看锁等待
gsql -c "SELECT blocked_locks.pid AS blocked_pid, blocking_locks.pid AS blocking_pid FROM pg_catalog.pg_locks blocked_locks JOIN pg_catalog.pg_locks blocking_locks ON blocking_locks.locktype = blocked_locks.locktype AND blocking_locks.DATABASE IS NOT DISTINCT FROM blocked_locks.DATABASE AND blocking_locks.relation IS NOT DISTINCT FROM blocked_locks.relation AND blocking_locks.page IS NOT DISTINCT FROM blocked_locks.page AND blocking_locks.tuple IS NOT DISTINCT FROM blocked_locks.tuple AND blocking_locks.virtualxid IS NOT DISTINCT FROM blocked_locks.virtualxid AND blocking_locks.transactionid IS NOT DISTINCT FROM blocked_locks.transactionid AND blocking_locks.classid IS NOT DISTINCT FROM blocked_locks.classid AND blocking_locks.objid IS NOT DISTINCT FROM blocked_locks.objid AND blocking_locks.objsubid IS NOT DISTINCT FROM blocked_locks.objsubid AND blocking_locks.pid != blocked_locks.pid JOIN pg_catalog.pg_stat_activity blocking_activity ON blocking_activity.pid = blocking_locks.pid WHERE NOT blocked_locks.GRANTED;"
267



被折叠的 条评论
为什么被折叠?



