# KingbaseShellInstall **Repository Path**: luciferlpc/KingbaseShellInstall ## Basic Information - **Project Name**: KingbaseShellInstall - **Description**: 🚀 KingbaseES V9 企业级自动化安装脚本 - 支持完整的错误处理、自动回退和详细日志记录 - **Primary Language**: Shell - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 17 - **Forks**: 5 - **Created**: 2025-07-25 - **Last Updated**: 2025-08-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # KingbaseShellInstall [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Shell](https://img.shields.io/badge/shell-bash-green.svg)](https://www.gnu.org/software/bash/) [![Platform](https://img.shields.io/badge/platform-Linux-orange.svg)](https://www.linux.org/) [![Version](https://img.shields.io/badge/version-v2.0.0-brightgreen.svg)](https://github.com/yourrepo/releases) 🚀 **KingbaseES V9 企业级自动化安装脚本** - 支持完整的错误处理、自动回退和详细日志记录 ## 📋 目录 - [✨ 核心特性](#-核心特性) - [🔧 系统要求](#-系统要求) - [⚡ 快速开始](#-快速开始) - [📖 参数详解](#-参数详解) - [💡 使用示例](#-使用示例) - [🛡️ 安全特性](#️-安全特性) - [📊 日志系统](#-日志系统) - [🔄 回退机制](#-回退机制) - [🔧 故障排除](#-故障排除) - [⚠️ 重要提醒](#️-重要提醒) - [📝 更新日志](#-更新日志) ## ✨ 核心特性 ### 🎯 **安装能力** - ✅ **一键自动安装** KingbaseES V9数据库 - ✅ **多兼容模式** 支持Oracle、MySQL、SQL Server - ✅ **完全参数化** 所有配置均可通过命令行自定义 - ✅ **静默安装** 无需人工干预,适合批量部署 ### 🛡️ **企业级特性** - ✅ **自动回退机制** 安装失败时生成回退脚本 - ✅ **资源清理** 异常退出时自动清理临时资源 - ✅ **详细日志** 记录每个配置变更和操作详情 - ✅ **信号处理** 优雅处理Ctrl+C等中断信号 ### 🔧 **系统配置** - ✅ **环境优化** 自动配置内核参数、用户限制 - ✅ **安全配置** 密码策略、目录权限、防火墙规则 - ✅ **目录管理** 自动创建并设置正确权限 ## 🔧 系统要求 ### 💻 **操作系统** | 系统 | 版本 | 状态 | | ------- | ----------- | ---------- | | 麒麟V10 | 所有版本 | ✅ 完全支持 | | CentOS | 7.x/8.x | ✅ 兼容 | | RHEL | 7.x/8.x/9.x | ✅ 兼容 | | Ubuntu | 18.04+ | ⚠️ 部分兼容 | ### 🖥️ **硬件要求** | 组件 | 最低要求 | 推荐配置 | | ---- | ---------- | ---------- | | CPU | 2核心+ | 4核心+ | | 内存 | 4GB | 8GB+ | | 磁盘 | 20GB可用 | 100GB+ SSD | | 网络 | 无特殊要求 | 千兆网卡 | ### 📦 **软件依赖** ```bash # 必需工具(脚本会自动检查) - Bash 4.0+ - systemctl (systemd) - mount/umount - useradd/userdel - netstat ``` ## ⚡ 快速开始 ### 1️⃣ **获取脚本** ```bash # 下载脚本 wget https://gitee.com/luciferlpc/KingbaseShellInstall/blob/master/KingbaseShellInstall.sh # 或 curl -O https://gitee.com/luciferlpc/KingbaseShellInstall/blob/master/KingbaseShellInstall.sh # 设置执行权限 chmod +x KingbaseShellInstall.sh ``` ### 2️⃣ **基本使用** ```bash # 查看帮助 ./KingbaseShellInstall.sh -h # 最简安装(使用默认配置) ./KingbaseShellInstall.sh -f /path/to/kingbase.iso # 自定义模式安装 ./KingbaseShellInstall.sh -f /path/to/kingbase.iso -m "SQL Server" ``` ### 3️⃣ **验证安装** ```bash # 检查安装日志 tail -f kingbase_simple_install_*.log # 连接数据库测试 su - kingbase ksql -p 54321 -U system kingbase ``` ## 📖 参数详解 ### 🎛️ **完整参数列表** | 参数 | 说明 | 默认值 | 示例 | | --------- | ---------------------- | ---------------- | ----------------------- | | `-f FILE` | **ISO文件路径** (必需) | 无 | `-f /soft/kingbase.iso` | | `-m MODE` | **数据库兼容模式** | `Oracle` | `-m "SQL Server"` | | `-i DIR` | **安装目录** | `/KingbaseES/V9` | `-i /opt/kingbase` | | `-d DIR` | **数据目录** | `/data` | `-d /var/data` | | `-p PORT` | **数据库端口** | `54321` | `-p 5432` | | `-u USER` | **数据库用户名** | `system` | `-u admin` | | `-P PASS` | **数据库密码** | `kingbase` | `-P "MyPass123!"` | | `-U USER` | **系统用户名** | `kingbase` | `-U kbuser` | | `-l FILE` | **日志文件路径** | 自动生成 | `-l /var/log/kb.log` | | `-h` | **显示帮助** | - | `-h` | ### 🔄 **兼容模式说明** | 模式 | 适用场景 | SQL语法 | 函数支持 | | -------------- | ---------- | --------- | ---------------- | | **Oracle** | Oracle迁移 | PL/SQL | Oracle函数集 | | **MySQL** | MySQL迁移 | MySQL语法 | MySQL函数集 | | **SQL Server** | MSSQL迁移 | T-SQL | SQL Server函数集 | ## 💡 使用示例 ### 🎈 **基础场景** ```bash # 默认配置安装 ./KingbaseShellInstall.sh -f /soft/KingbaseES_V009R004C012B0006_Lin64_install.iso # SQL Server兼容模式 ./KingbaseShellInstall.sh -f /soft/kingbase.iso -m "SQL Server" # 自定义端口 ./KingbaseShellInstall.sh -f /soft/kingbase.iso -p 5432 ``` ### 🏢 **生产环境配置** ```bash # 完整生产环境配置 ./KingbaseShellInstall.sh \\ -f /iso/KingbaseES_V009R004C012B0006_Lin64_install.iso \\ -m "Oracle" \\ -i /opt/kingbase \\ -d /data/kingbase \\ -p 5432 \\ -u dbadmin \\ -P "SecurePassword123!" \\ -U kbadmin \\ -l /var/log/kingbase_install.log ``` ### 🔧 **开发测试环境** ```bash # 快速测试环境 ./KingbaseShellInstall.sh \\ -f /tmp/kingbase.iso \\ -m MySQL \\ -i /tmp/kingbase \\ -d /tmp/data \\ -p 3306 ``` ### 🌐 **多实例部署** ```bash # 实例1 ./KingbaseShellInstall.sh -f /soft/kb.iso -p 5432 -U kb1 -d /data/kb1 # 实例2 ./KingbaseShellInstall.sh -f /soft/kb.iso -p 5433 -U kb2 -d /data/kb2 ``` ## 🛡️ 安全特性 ### 🔐 **密码安全** - ✅ 密码不会记录在日志文件中 - ✅ 支持命令行密码参数(生产环境请使用环境变量) - ✅ 自动禁用弱密码策略(仅安装期间) ### 🔒 **权限控制** - ✅ 数据目录设置为700权限(仅用户可访问) - ✅ 安装目录设置为750权限 - ✅ 所有文件所有者正确设置 ### 🚪 **网络安全** - ✅ 防火墙配置优化 - ✅ 端口访问控制 - ✅ 仅监听必要端口 ## 📊 日志系统 ### 📋 **日志文件结构** ``` kingbase_simple_install_20250725_143022.log ├── [INFO] 基础安装信息 ├── [DETAIL] 详细操作记录 ├── [ERROR] 错误信息记录 └── 配置变更追踪 ``` ### 🔍 **日志内容示例** ```bash [2025-07-25 14:30:22] 开始KingbaseES V9安装 [2025-07-25 14:30:22] [DETAIL] ===== 开始安装过程详细记录 ===== [2025-07-25 14:30:23] [DETAIL] 备份原始PAM配置文件 [2025-07-25 14:30:23] [DETAIL] 配置变更: /etc/pam.d/system-auth - 注释掉pam_pwquality行 [2025-07-25 14:30:24] [DETAIL] 添加回退命令: 恢复PAM密码策略配置 [2025-07-25 14:30:25] [DETAIL] 创建系统用户: kingbase ``` ### 📈 **日志分析工具** ```bash # 查看实时日志 tail -f kingbase_simple_install_*.log # 搜索错误 grep -i error kingbase_simple_install_*.log # 查看配置变更 grep "配置变更" kingbase_simple_install_*.log # 统计安装步骤 grep "步骤[0-9]" kingbase_simple_install_*.log ``` ## 🔄 回退机制 ### 🛠️ **自动回退脚本** 安装过程中会自动生成回退脚本:`kingbase_rollback_20250725_143022.sh` **回退脚本包含:** - ✅ 用户删除命令 - ✅ 目录清理命令 - ✅ 系统配置恢复 - ✅ 服务停止命令 - ✅ 文件备份恢复 ### 🔙 **执行回退** ```bash # 自动回退(安装失败时提示) Is installation failed? Execute rollback? (y/N): y # 手动回退 bash kingbase_rollback_20250725_143022.sh ``` ### 📝 **回退脚本示例** ```bash #!/bin/bash # KingbaseES 安装回退脚本 # 恢复PAM密码策略配置 cp /etc/pam.d/system-auth.kingbase.backup /etc/pam.d/system-auth # 删除创建的用户 kingbase userdel -r kingbase 2>/dev/null || true # 删除创建的目录 rm -rf /KingbaseES/V9 rm -rf /data rm -rf /backup ``` ## 🔧 故障排除 ### ❌ **常见错误及解决方案** #### 🚫 **权限错误** ```bash 错误: 此脚本需要root权限运行 ``` **解决方案:** ```bash sudo ./KingbaseShellInstall.sh -f /soft/kingbase.iso ``` #### 📁 **ISO文件问题** ```bash 错误: ISO文件不存在: /path/to/file ``` **解决方案:** ```bash # 检查文件是否存在 ls -la /path/to/kingbase.iso # 使用正确路径 ./KingbaseShellInstall.sh -f /correct/path/kingbase.iso ``` #### 🔌 **端口冲突** ```bash 错误: 端口必须是1024-65535之间的数字 ``` **解决方案:** ```bash # 检查端口占用 netstat -tulpn | grep 54321 # 使用其他端口 ./KingbaseShellInstall.sh -f /soft/kb.iso -p 5433 ``` #### 💾 **磁盘空间不足** ```bash 警告: /tmp 磁盘空间不足! ``` **解决方案:** ```bash # 检查磁盘空间 df -h # 清理临时文件 rm -rf /tmp/kingbase_* ``` ### 🆘 **紧急恢复** ```bash # 停止所有相关服务 systemctl stop firewalld pkill -f kingbase # 强制清理用户 userdel -r kingbase 2>/dev/null # 清理安装目录 rm -rf /KingbaseES /data /backup /archive /install # 恢复系统配置 cp /etc/pam.d/system-auth.backup /etc/pam.d/system-auth ``` ## ⚠️ 重要提醒 ### 🔥 **安全警告** - ⚠️ **生产环境禁用默认密码** - ⚠️ **安装前备份重要数据** - ⚠️ **在测试环境验证后再部署** - ⚠️ **定期更新数据库补丁** ### 💡 **最佳实践** - ✅ 使用强密码策略 - ✅ 定期备份数据库 - ✅ 监控系统资源使用 - ✅ 配置日志轮转策略 ### 🎯 **性能建议** - ⚡ 数据目录使用SSD存储 - ⚡ 根据业务调整内存配置 - ⚡ 定期执行数据库维护 - ⚡ 监控慢查询日志 ## 📝 更新日志 ### 🚀 **v2.0.0** (2025-07-25) - **Major Update** - ✨ **新增自动回退机制** - 安装失败时生成回退脚本 - ✨ **增强日志系统** - 详细记录每个配置变更 - ✨ **完善资源清理** - 异常退出时自动清理ISO挂载等资源 - ✨ **优化信号处理** - 优雅处理Ctrl+C等中断信号 - ✨ **全面参数化** - 所有配置均可通过命令行参数自定义 - 🔧 **修复连接命令格式** - 更正数据库连接方式 - 🔧 **优化安装步骤** - 每个步骤都有详细日志和回退支持 - 🛡️ **增强安全性** - 密码不再显示在日志中 ### 📊 **v1.0.0** (2025-07-24) - ✨ 初始版本发布 - ✨ 支持Oracle、MySQL、SQL Server兼容模式 - ✨ 基础的命令行参数支持 - ✨ 简单的日志记录功能 --- ## 📞 支持与反馈 ### 🛠️ **技术支持** - 📧 **邮箱**: pc1107750981@163.com - 📱 **微信**: Lucifer-0622 ### 🐛 **问题报告** - **GitHub Issues**: [报告问题](https://github.com/yourrepo/issues) - **邮件反馈**: pc1107750981@163.com - **详细描述**: 请提供错误日志、系统信息和复现步骤 --- ## 📄 许可证 本项目采用 **MIT 许可证** - 详见 [LICENSE](LICENSE) 文件 --- ## 🎉 致谢 感谢以下贡献者和组织: - 💼 **金仓数据库官方团队** - 技术支持 - 🖥️ **麒麟操作系统社区** - 系统兼容性 - 👥 **所有测试用户** - 功能验证和反馈 - 🔧 **开源社区** - 脚本优化建议 --- ## ⭐ 支持项目 **如果这个项目对您有帮助,请给个Star⭐支持一下!** [![Star History Chart](https://api.star-history.com/svg?repos=yourrepo/KingbaseShellInstall&type=Date)](https://star-history.com/#yourrepo/KingbaseShellInstall&Date) --- > 📝 **最后更新**: 2025-07-25 > 🔧 **维护者**: 三笠丶 > 📋 **版本**: v2.0.0 > 🏷️ **状态**: 生产就绪 **🚀 让KingbaseES部署变得简单高效!**