适配所有数据库的OS 一键优化神器
#!/bin/bash # 文件: db_os_optimize.sh # 功能: 操作系统参数优化数据库场景专用 # 兼容: CentOS/RHEL 7/Ubuntu 18.04/Debian 9 # 说明: 需root权限执行优化项包含网络、内存、文件描述符、安全、IO等 ############################################################################## # 配置区可根据实际需求调整 ############################################################################## TARGET_USER${1:-root} # 目标用户默认root TIME_ZONEAsia/Shanghai # 系统时区 SWAPPINESS0 # 禁用Swap数据库推荐 MAX_OPEN_FILES655360 # 最大文件描述符 MAX_PROCESS655360 # 最大进程数 FIREWALL_ACTIONopen # 防火墙动作open(开放常用端口)/close(关闭)/keep(保持不变) DB_PORT54321 # 数据库端口需开放时使用 ############################################################################## # 工具函数 ############################################################################## # 日志输出带时间戳 log() { echo [$(date %Y-%m-%d %H:%M:%S)] [$1] $2 } # 错误退出 error_exit() { log ERROR $1 exit 1 } # 备份配置文件 backup_conf() { local conf_path$1 local backup_path${conf_path}.bak.$(date %Y%m%d%H%M%S) if [ -f $conf_path ]; then cp -p $conf_path $backup_path || error_exit 备份$conf_path失败 log INFO 已备份配置文件: $backup_path fi } # 检查命令是否存在 command_exist() { command -v $1 /dev/null 21 } ############################################################################## # 前置检查 ############################################################################## # 检查root权限 if [ $(id -u) -ne 0 ]; then error_exit 脚本必须以root用户执行当前用户: $(whoami) fi # 检查目标用户是否存在 if ! id -u $TARGET_USER /dev/null 21; then log WARN 目标用户$TARGET_USER不存在是否创建(y/n默认n) read -r create_user if [ $create_user y ] || [ $create_user Y ]; then useradd -m -s bin/bash $TARGET_USER || error_exit 创建用户$TARGET_USER失败 log INFO 已创建目标用户: $TARGET_USER else error_exit 目标用户$TARGET_USER不存在脚本退出 fi fi # 检查系统发行版 if [ -f etc/redhat-release ]; then OS_TYPErhel elif [ -f etc/lsb-release ] || [ -f etc/debian_version ]; then OS_TYPEdebian else error_exit 不支持的操作系统发行版 fi log INFO 开始执行操作系统参数优化目标用户: $TARGET_USER系统类型: $OS_TYPE ############################################################################## # 1. 备份关键配置文件 ############################################################################## log INFO 开始备份配置文件... backup_conf /etc/sysctl.conf backup_conf /etc/security/limits.conf backup_conf /etc/ssh/sshd_config backup_conf /etc/bashrc ############################################################################## # 2. 内核参数优化sysctl.conf ############################################################################## log INFO 优化内核参数... SYSCTL_MARKER#add by kingbase (enhanced) # 检查是否已添加优化配置避免重复 if ! grep -q ^$SYSCTL_MARKER /etc/sysctl.conf; then cat etc/sysctl.conf EOF $SYSCTL_MARKER # 共享内存优化数据库核心需求 kernel.shmmax 4294967296 # 最大共享内存段4GB根据物理内存调整 kernel.shmall 1048576 # 共享内存总页数4GB/4KB1048576 kernel.shmmni 8192 # 最大共享内存段数 kernel.sem 5010 64128000 50100 1280 # 信号量配置 # 文件系统优化 fs.file-max $MAX_OPEN_FILES # 系统最大打开文件数 fs.aio-max-nr 1048576 # 异步IO最大请求数 # 内存优化 vm.overcommit_memory 2 # 禁止过度内存分配 vm.overcommit_ratio 90 # 内存过度分配比例物理内存90% vm.swappiness $SWAPPINESS # 禁用Swap0优先使用物理内存 vm.dirty_background_ratio 5 # 后台刷脏页阈值5% vm.dirty_ratio 10 # 强制刷脏页阈值10% vm.dirty_expire_centisecs 3000 # 脏页过期时间30秒 # 网络优化提升并发和连接稳定性 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 # TCP半连接队列长度 net.ipv4.tcp_tw_reuse 1 # 复用TIME_WAIT状态的端口 net.ipv4.tcp_tw_recycle 0 # 禁用TCP连接回收避免NAT环境问题 net.ipv4.tcp_fin_timeout 30 # TIME_WAIT超时时间30秒 net.ipv4.tcp_keepalive_time 600 # TCP保活时间10分钟 net.ipv4.tcp_keepalive_intvl 30 # 保活探测间隔30秒 net.ipv4.tcp_keepalive_probes 10 # 保活探测次数 net.ipv4.tcp_max_tw_buckets 200000 # 最大TIME_WAIT数量 EOF # 应用内核参数忽略临时失效的参数 sysctl -p /dev/null 21 || log WARN 部分内核参数需重启系统生效 else log INFO 内核参数已优化跳过重复添加 fi ############################################################################## # 3. 用户资源限制优化limits.conf ############################################################################## log INFO 优化用户资源限制... LIMITS_MARKER#add by kingbase (enhanced) if ! grep -q ^$LIMITS_MARKER /etc/security/limits.conf; then cat etc/security/limits.conf EOF $LIMITS_MARKER # 全局限制 * soft nofile $MAX_OPEN_FILES * hard nofile $MAX_OPEN_FILES * soft nproc $MAX_PROCESS * hard nproc $MAX_PROCESS * soft core unlimited * hard core unlimited * soft memlock unlimited * hard memlock unlimited # root用户限制 root soft nofile $MAX_OPEN_FILES root hard nofile $MAX_OPEN_FILES root soft nproc $MAX_PROCESS root hard nproc $MAX_PROCESS # 目标用户专项限制 $TARGET_USER soft nofile $MAX_OPEN_FILES $TARGET_USER hard nofile $MAX_OPEN_FILES $TARGET_USER soft nproc $MAX_PROCESS $TARGET_USER hard nproc $MAX_PROCESS $TARGET_USER soft memlock unlimited $TARGET_USER hard memlock unlimited EOF # 清除limits.d下的默认限制避免覆盖 if [ -d /etc/security/limits.d ]; then find /etc/security/limits.d -name *.conf -exec sed -i /^\*.*nofile\|^\*.*nproc/d {} \; fi else log INFO 用户资源限制已优化跳过重复添加 fi ############################################################################## # 4. SSH服务优化sshd_config ############################################################################## log INFO 优化SSH服务配置... SSHD_CONF/etc/ssh/sshd_config # 匹配行首可能的空白字符注释原有配置 sed -i s/^[[:space:]]*GSSAPIAuthentication/#GSSAPIAuthentication/g $SSHD_CONF sed -i s/^[[:space:]]*UseDNS/#UseDNS/g $SSHD_CONF sed -i s/^[[:space:]]*UsePAM/#UsePAM/g $SSHD_CONF sed -i s/^[[:space:]]*PasswordAuthentication/#PasswordAuthentication/g $SSHD_CONF # 添加优化配置确保生效 cat $SSHD_CONF EOF # 优化项add by kingbase GSSAPIAuthentication no # 禁用GSSAPI认证加速登录 UseDNS no # 禁用DNS反向解析加速登录 UsePAM yes # 启用PAM认证 PasswordAuthentication yes # 允许密码登录根据需求调整 MaxStartups 100 # 最大并发连接尝试数 MaxSessions 100 # 最大并发会话数 EOF # 重启SSH服务兼容systemd和sysvinit if command_exist systemctl; then systemctl restart sshd /dev/null 21 || log WARN 重启sshd服务失败systemd elif command_exist service; then service sshd restart /dev/null 21 || log WARN 重启sshd服务失败sysvinit fi ############################################################################## # 5. Shell环境优化bashrc ############################################################################## log INFO 优化Shell环境... BASHRC_CONF/etc/bashrc SHELL_MARKER#add by kingbase (enhanced) if ! grep -q ^$SHELL_MARKER $BASHRC_CONF; then cat $BASHRC_CONF EOF $SHELL_MARKER # 启用别名扩展 shopt -s expand_aliases # 历史命令优化 HISTSIZE1000000 # 历史命令记录条数 HISTFILESIZE2000000 # 历史文件最大行数 HISTTIMEFORMAT%Y-%m-%d %H:%M:%S # 历史命令带时间戳 HISTCONTROLignoredups:ignorespace # 忽略重复命令和空格开头的命令 # 环境变量优化 export LC_ALLC # 统一字符集 export LANGC export TMOUT0 # 禁用自动退出 EOF else log INFO Shell环境已优化跳过重复添加 fi ############################################################################## # 6. Cron权限优化cron.allow ############################################################################## log INFO 配置Cron权限... CRON_ALLOW/etc/cron.allow # 确保文件存在且目标用户已添加 touch $CRON_ALLOW chmod 600 $CRON_ALLOW if ! grep -q ^$TARGET_USER$ $CRON_ALLOW; then echo $TARGET_USER $CRON_ALLOW log INFO 已添加$TARGET_USER到cron.allow else log INFO $TARGET_USER已在cron.allow中跳过 fi ############################################################################## # 7. 关键系统优化数据库场景必做 ############################################################################## # 7.1 关闭透明大页THP数据库性能杀手 log INFO 关闭透明大页THP... THP_DISABLE/etc/systemd/system/disable-thp.service if [ ! -f $THP_DISABLE ]; then cat $THP_DISABLE EOF [Unit] DescriptionDisable Transparent Huge Pages (THP) Aftersysinit.target local-fs.target [Service] Typeoneshot ExecStart/bin/sh -c echo never /sys/kernel/mm/transparent_hugepage/enabled echo never /sys/kernel/mm/transparent_hugepage/defrag [Install] WantedBymulti-user.target EOF # 启用并立即执行 systemctl daemon-reload systemctl enable disable-thp /dev/null 21 systemctl start disable-thp /dev/null 21 fi # 临时关闭立即生效 echo never /sys/kernel/mm/transparent_hugepage/enabled 2/dev/null echo never /sys/kernel/mm/transparent_hugepage/defrag 2/dev/null # 7.2 关闭SELINUX避免权限冲突 log INFO 调整SELINUX... if [ $OS_TYPE rhel ]; then sed -i s/^SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config setenforce 0 /dev/null 21 # 临时关闭 fi # 7.3 防火墙配置 log INFO 配置防火墙动作: $FIREWALL_ACTION... if command_exist firewall-cmd; then # CentOS/RHEL防火墙 case $FIREWALL_ACTION in open) firewall-cmd --permanent --add-port$DB_PORT/tcp firewall-cmd --permanent --add-port22/tcp firewall-cmd --reload /dev/null 21 log INFO 已开放端口: 22, $DB_PORT ;; close) systemctl stop firewalld systemctl disable firewalld /dev/null 21 log INFO 已关闭防火墙 ;; keep) log INFO 保持防火墙当前配置 ;; esac elif command_exist ufw; then # Ubuntu/Debian防火墙 case $FIREWALL_ACTION in open) ufw allow 22/tcp ufw allow $DB_PORT/tcp ufw reload /dev/null 21 log INFO 已开放端口: 22, $DB_PORT ;; close) ufw disable /dev/null 21 log INFO 已关闭防火墙 ;; keep) log INFO 保持防火墙当前配置 ;; esac fi # 7.4 设置系统时区 log INFO 设置系统时区为: $TIME_ZONE timedatectl set-timezone $TIME_ZONE /dev/null 21 # 同步时间需安装ntp/chrony if command_exist chronyd; then systemctl start chronyd systemctl enable chronyd /dev/null 21 elif command_exist ntpd; then systemctl start ntpd systemctl enable ntpd /dev/null 21 fi # 7.5 磁盘IO调度器优化根据磁盘类型自动适配 log INFO 优化磁盘IO调度器... for disk in $(lsblk -dn -o NAME | grep -v loop); do disk_path/sys/block/$disk/queue/scheduler if [ -f $disk_path ]; then # SSD/NVMe用mq-deadline机械硬盘用mq-deadline通用最优 echo mq-deadline $disk_path 2/dev/null log INFO 磁盘$disk IO调度器已设置为: mq-deadline fi chmod x db_os_optimite.sh # 7.6 禁用文件系统atime减少磁盘IO root ./db_os_optimite.sh ./db_os_optimite.sh mydbuser sed -i s/\(defaults\)/\1,noatime/ /etc/fstab 2/dev/null mount -o remount / /dev/null 21 # 临时生效重启后完全生效 # 7.7 关闭自动更新避免系统不稳定 log INFO 关闭系统自动更新... if [ $OS_TYPE rhel ]; then systemctl stop yum-cron /dev/null 21 systemctl disable yum-cron /dev/null 21 elif [ $OS_TYPE debian ]; then systemctl stop unattended-upgrades /dev/null 21 systemctl disable unattended-upgrades /dev/null 21 fi ############################################################################## # 执行结果提示 ############################################################################## log INFO 操作系统参数优化完成 log INFO log INFO 需立即生效的操作 log INFO 1. 重新登录Shell用户资源限制生效 log INFO 2. 重启系统部分内核参数、IO调度器完全生效 log INFO log INFO 优化日志和配置备份已保留路径 log INFO - 配置备份/etc/xxx.conf.bak.2025xxxx log INFO - 脚本执行日志可通过终端输出回溯 log INFO 使用说明1. 赋予执行权限chmod x enhance_os_param.sh2. 执行脚本默认目标用户kingbase./enhance_os_param.sh3. 自定义目标用户./enhance_os_param.sh mydbuser4. 执行后建议重新登录Shell 重启系统确保所有优化生效注意事项• 脚本仅适用于数据库服务器生产环境建议先在测试机验证• 防火墙开放端口可根据实际需求修改DB_PORT变量• 共享内存参数kernel.shmmax可根据物理内存调整建议设为物理内存的50%-80%• 若需启用SELINUX需手动调整SELINUXpermissive并配置数据库相关策略

相关新闻

PPTTimer:Windows平台终极演讲计时器,让演示时间掌控如呼吸般自然

PPTTimer:Windows平台终极演讲计时器,让演示时间掌控如呼吸般自然

PPTTimer:Windows平台终极演讲计时器,让演示时间掌控如呼吸般自然 【免费下载链接】ppttimer 一个简易的 PPT 计时器 项目地址: https://gitcode.com/gh_mirrors/pp/ppttimer 在重要演讲或PPT演示中,时间管理是每位演讲者必须面对的挑…

2026/7/24 18:57:41 阅读更多 →
抖音直播录制终极指南:一键自动录制40+平台直播内容

抖音直播录制终极指南:一键自动录制40+平台直播内容

抖音直播录制终极指南:一键自动录制40平台直播内容 【免费下载链接】DouyinLiveRecorder 可循环值守和多人录制的直播录制软件,支持抖音、TikTok、Youtube、快手、虎牙、斗鱼、B站、小红书、pandatv、sooplive、flextv、popkontv、twitcasting、winktv、…

2026/7/24 18:57:41 阅读更多 →
TranslucentTB开机启动完全指南:解决灰色选项与注册表配置难题

TranslucentTB开机启动完全指南:解决灰色选项与注册表配置难题

TranslucentTB开机启动完全指南:解决灰色选项与注册表配置难题 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB TranslucentTB…

2026/7/24 18:57:41 阅读更多 →

最新新闻

告别C盘爆红!WindowsCleaner开源工具三步释放30%系统资源

告别C盘爆红!WindowsCleaner开源工具三步释放30%系统资源

告别C盘爆红!WindowsCleaner开源工具三步释放30%系统资源 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否经历过这样的场景:电脑越用…

2026/7/24 19:05:44 阅读更多 →
3分钟掌握视频转PPT:智能提取幻灯片完整指南

3分钟掌握视频转PPT:智能提取幻灯片完整指南

3分钟掌握视频转PPT:智能提取幻灯片完整指南 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 还在为从视频中手动截取PPT页面而烦恼吗?extract-video-ppt是你的…

2026/7/24 19:05:44 阅读更多 →
Wand-Enhancer:Wand应用本地增强与远程控制完整指南

Wand-Enhancer:Wand应用本地增强与远程控制完整指南

Wand-Enhancer:Wand应用本地增强与远程控制完整指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 还在为Wand应用的功能限制而烦恼吗…

2026/7/24 19:05:43 阅读更多 →
SMUDebugTool:AMD锐龙处理器硬件调试的完整指南

SMUDebugTool:AMD锐龙处理器硬件调试的完整指南

SMUDebugTool:AMD锐龙处理器硬件调试的完整指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gitcode.…

2026/7/24 19:05:43 阅读更多 →
AI模型代码兼容性检测实战手册:从TensorFlow 1.x到PyTorch 2.4,6步完成零误差平滑迁移

AI模型代码兼容性检测实战手册:从TensorFlow 1.x到PyTorch 2.4,6步完成零误差平滑迁移

更多请点击: https://kaifayun.com 第一章:AI模型代码兼容性检测实战手册:从TensorFlow 1.x到PyTorch 2.4,6步完成零误差平滑迁移 迁移前的兼容性快照分析 在启动迁移前,需对原始TensorFlow 1.x代码进行结构化扫描&a…

2026/7/24 19:05:43 阅读更多 →
如何快速构建高效的大众点评数据采集系统:智能反爬虫解决方案实战指南

如何快速构建高效的大众点评数据采集系统:智能反爬虫解决方案实战指南

如何快速构建高效的大众点评数据采集系统:智能反爬虫解决方案实战指南 【免费下载链接】dianping_spider 大众点评爬虫(全站可爬,解决动态字体加密,非OCR)。持续更新 项目地址: https://gitcode.com/gh_mirrors/di/d…

2026/7/24 19:04:43 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻