greatsql教程FG025-GreatSQL操作系统优化与配置
内容简介
本教程详细介绍GreatSQL数据库的操作系统优化与配置,包括操作系统类型、系统配置、内核参数调优、文件系统配置、网络配置、安全设置等内容。风哥教程参考GreatSQL官方文档操作系统指南,帮助读者掌握操作系统的优化和配置。
操作系统是数据库运行的基础,合理的操作系统配置可以显著提高数据库的性能和可靠性。本教程将从基础概念入手,逐步深入到实战案例和最佳实践。
目录大纲
Part01-基础概念与理论知识
1.1 操作系统概述
操作系统是管理计算机硬件和软件资源的系统软件,为应用程序提供运行环境。对于数据库系统来说,操作系统的性能和稳定性直接影响数据库的运行效果。
操作系统的主要功能包括:
- 资源管理:管理CPU、内存、存储、网络等资源
- 进程管理:调度和管理进程
- 文件系统:管理文件和目录
- 网络管理:处理网络连接
- 安全管理:提供安全机制
1.2 操作系统类型
适合运行GreatSQL的操作系统类型包括:
- Linux:
- Oracle Linux 9.3 / 8.x / 7.x
- Red Hat Enterprise Linux (RHEL) 9.3 / 8.x / 7.x
- CentOS 8 / 7
- SUSE Linux Enterprise Server (SLES) 15 / 12
- Ubuntu Server 22.04 / 20.04
- 国产操作系统:
- 麒麟操作系统 Kylin v10 SP3
- 欧拉操作系统 openEuler 22.03 LTS
- 统信UOS Server 20
- 其他操作系统:
- Windows Server(不推荐,性能和稳定性不如Linux)
1.3 系统资源管理
系统资源管理主要包括:
- CPU管理:调度进程,分配CPU时间
- 内存管理:分配和回收内存
- 存储管理:管理磁盘空间,文件系统
- 网络管理:处理网络连接,数据传输
- 进程管理:创建、调度、终止进程
Part02-生产环境规划与建议
2.1 操作系统选型
风哥提示:操作系统选型应根据业务需求、技术栈和运维经验进行综合考虑。
操作系统选型建议:
- 企业级应用:选择Oracle Linux或RHEL,稳定性和支持性好
- 开源爱好者:选择CentOS或Ubuntu,社区支持活跃
- 国产化需求:选择麒麟操作系统或欧拉操作系统
- 云环境:选择与云平台兼容的操作系统版本
2.2 系统配置建议
系统配置建议:
- 磁盘分区:
- /boot:500MB
- swap:物理内存的1-2倍
- /:剩余空间的20%
- /greatsql:剩余空间,用于数据库文件
- 文件系统:
- 数据文件:XFS或Ext4
- 日志文件:XFS
- 网络配置:
- 使用静态IP
- 配置合适的MTU值
- 启用Jumbo Frame(如果网络支持)
- 系统服务:
- 禁用不必要的服务
- 启用必要的服务(如sshd、ntpd)
2.3 性能优化建议
性能优化建议:
- CPU优化:
- 启用超线程
- 调整CPU调度策略
- 禁用不必要的CPU核心(如果需要)
- 内存优化:
- 启用大内存页
- 关闭透明大页
- 调整内存分配策略
- 存储优化:
- 使用SSD或NVMe
- 配置合适的I/O调度器
- 调整文件系统参数
- 网络优化:
- 调整TCP参数
- 启用网络加速功能
- 优化网络缓冲区
更多视频教程www.fgedu.net.cn
Part03-生产环境项目实施方案
3.1 系统安装与配置
系统安装与配置步骤:
- 系统安装:
- 选择合适的操作系统版本
- 配置磁盘分区
- 安装必要的软件包
- 系统更新:
- 更新系统到最新版本
- 安装安全补丁
- 基础配置:
- 配置网络
- 配置主机名
- 配置时间同步
- 服务配置:
- 启用必要的服务
- 禁用不必要的服务
3.2 内核参数调优
内核参数调优:
- 内存参数:
- vm.swappiness
- vm.overcommit_memory
- vm.overcommit_ratio
- 网络参数:
- net.core.somaxconn
- net.ipv4.tcp_max_syn_backlog
- net.ipv4.tcp_fin_timeout
- 文件系统参数:
- fs.file-max
- fs.aio-max-nr
- 进程参数:
- kernel.sem
- kernel.shmmax
- kernel.shmall
3.3 安全设置
安全设置:
- 防火墙设置:
- 配置防火墙规则
- 开放必要的端口
- 限制访问源
- SELinux设置:
- 配置SELinux策略
- 设置合适的安全上下文
- 用户权限:
- 创建专用的数据库用户
- 限制用户权限
- 使用sudo进行权限管理
- 密码策略:
- 设置强密码策略
- 定期更换密码
- 使用密钥认证
Part04-生产案例与实战讲解
4.1 系统配置实战
# 系统基础配置
# 检查系统版本
cat /etc/redhat-release
# 检查系统架构 uname -m
# 检查CPU信息 lscpu
# 检查内存信息 free -h
# 检查磁盘信息 df -h
# 检查网络信息 ifconfig
# 检查系统版本
cat /etc/redhat-release
# 检查系统架构 uname -m
# 检查CPU信息 lscpu
# 检查内存信息 free -h
# 检查磁盘信息 df -h
# 检查网络信息 ifconfig
Oracle Linux Server release 9.3
x86_64
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 85
Model name: Intel(R) Xeon(R) Gold 6248 CPU @ 2.50GHz
Stepping: 7
CPU MHz: 2500.000
CPU max MHz: 3900.0000
CPU min MHz: 1000.0000
BogoMIPS: 5000.00
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 1024K
L3 cache: 22528K
NUMA node0 CPU(s): 0-15
total used free shared buff/cache available
Mem: 62G 2.0G 58G 100M 2.0G 60G
Swap: 8.0G 0B 8.0G
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 5.0G 45G 10% /
/dev/sdb1 500G 100G 400G 20% /greatsql
eth0: flags=4163 mtu 1500
inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
ether 00:11:22:33:44:55 txqueuelen 1000 (Ethernet)
RX packets 1000000 bytes 1000000000 (953.6 MiB)
TX packets 1000000 bytes 1000000000 (953.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
x86_64
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 85
Model name: Intel(R) Xeon(R) Gold 6248 CPU @ 2.50GHz
Stepping: 7
CPU MHz: 2500.000
CPU max MHz: 3900.0000
CPU min MHz: 1000.0000
BogoMIPS: 5000.00
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 1024K
L3 cache: 22528K
NUMA node0 CPU(s): 0-15
total used free shared buff/cache available
Mem: 62G 2.0G 58G 100M 2.0G 60G
Swap: 8.0G 0B 8.0G
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 5.0G 45G 10% /
/dev/sdb1 500G 100G 400G 20% /greatsql
eth0: flags=4163
inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
ether 00:11:22:33:44:55 txqueuelen 1000 (Ethernet)
RX packets 1000000 bytes 1000000000 (953.6 MiB)
TX packets 1000000 bytes 1000000000 (953.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# 配置主机名 hostnamectl set-hostname fgedu.net.cn
# 配置时间同步 timedatectl set-timezone Asia/Shanghai yum install -y chrony
systemctl enable chronyd systemctl start chronyd chronyc sources
# 配置网络
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << 'EOF' TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=eth0 UUID=550e8400-e29b-41d4-a716-446655440000 DEVICE=eth0 ONBOOT=yes IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 DNS2=8.8.4.4 EOF
# 重启网络服务
systemctl restart NetworkManager
# 配置时间同步 timedatectl set-timezone Asia/Shanghai yum install -y chrony
systemctl enable chronyd systemctl start chronyd chronyc sources
# 配置网络
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << 'EOF' TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=eth0 UUID=550e8400-e29b-41d4-a716-446655440000 DEVICE=eth0 ONBOOT=yes IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 DNS2=8.8.4.4 EOF
# 重启网络服务
systemctl restart NetworkManager
210 Number of sources = 4
MS Name/IP address Stratum Poll Reach LastRx Last sample
==============================================================================
^* 203.107.6.88 2 6 377 42 -3342us[-3342us] +/- 25ms
^+ 119.28.183.184 2 6 377 43 -1429us[-1429us] +/- 49ms
^+ 120.25.115.20 2 6 377 44 +6851us[+6851us] +/- 37ms
^+ 202.112.29.82 2 6 377 43 +2023us[+2023us] +/- 29ms
MS Name/IP address Stratum Poll Reach LastRx Last sample
==============================================================================
^* 203.107.6.88 2 6 377 42 -3342us[-3342us] +/- 25ms
^+ 119.28.183.184 2 6 377 43 -1429us[-1429us] +/- 49ms
^+ 120.25.115.20 2 6 377 44 +6851us[+6851us] +/- 37ms
^+ 202.112.29.82 2 6 377 43 +2023us[+2023us] +/- 29ms
学习交流加群风哥微信: itpux-com
4.2 内核参数调优实战
# 配置内核参数
cat > /etc/sysctl.d/greatsql.conf << 'EOF'
# GreatSQL内核参数配置
# 内存参数 vm.swappiness = 10 vm.overcommit_memory = 1 vm.overcommit_ratio = 80
# 网络参数 net.core.somaxconn = 65535 net.ipv4.tcp_max_syn_backlog = 65535 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 300 net.ipv4.tcp_keepalive_probes = 3 net.ipv4.tcp_keepalive_intvl = 15
# 文件系统参数 fs.file-max = 6815744 fs.aio-max-nr = 1048576
# 进程参数 kernel.sem = 250 32000 100 128 kernel.shmmax = 68719476736 kernel.shmall = 16777216 kernel.shmmni = 4096
# 安全参数 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_synack_retries = 2 EOF
# 应用内核参数 sysctl -p /etc/sysctl.d/greatsql.conf
# 验证内核参数 sysctl -a | grep -E “vm.swappiness|net.core.somaxconn|fs.file-max”
cat > /etc/sysctl.d/greatsql.conf << 'EOF'
# GreatSQL内核参数配置
# 内存参数 vm.swappiness = 10 vm.overcommit_memory = 1 vm.overcommit_ratio = 80
# 网络参数 net.core.somaxconn = 65535 net.ipv4.tcp_max_syn_backlog = 65535 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 300 net.ipv4.tcp_keepalive_probes = 3 net.ipv4.tcp_keepalive_intvl = 15
# 文件系统参数 fs.file-max = 6815744 fs.aio-max-nr = 1048576
# 进程参数 kernel.sem = 250 32000 100 128 kernel.shmmax = 68719476736 kernel.shmall = 16777216 kernel.shmmni = 4096
# 安全参数 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_synack_retries = 2 EOF
# 应用内核参数 sysctl -p /etc/sysctl.d/greatsql.conf
# 验证内核参数 sysctl -a | grep -E “vm.swappiness|net.core.somaxconn|fs.file-max”
vm.swappiness = 10
net.core.somaxconn = 65535
fs.file-max = 6815744
net.core.somaxconn = 65535
fs.file-max = 6815744
# 配置文件描述符限制
cat > /etc/security/limits.d/greatsql.conf << 'EOF'
# GreatSQL文件描述符限制 * soft nofile 65536 * hard nofile 65536 * soft nproc 65536 * hard nproc 65536 EOF
# 验证文件描述符限制 ulimit -n ulimit -u
cat > /etc/security/limits.d/greatsql.conf << 'EOF'
# GreatSQL文件描述符限制 * soft nofile 65536 * hard nofile 65536 * soft nproc 65536 * hard nproc 65536 EOF
# 验证文件描述符限制 ulimit -n ulimit -u
65536
65536
65536
学习交流加群风哥QQ113257174
4.3 安全设置实战
# 配置防火墙
# 安装防火墙 yum install -y firewalld
# 启用防火墙
systemctl enable firewalld systemctl start firewalld
# 开放3306端口 firewall-cmd –permanent –add-port=3306/tcp
# 开放22端口 firewall-cmd –permanent –add-port=22/tcp
# 重载防火墙规则 firewall-cmd –reload
# 查看防火墙规则 firewall-cmd –list-ports
# 安装防火墙 yum install -y firewalld
# 启用防火墙
systemctl enable firewalld systemctl start firewalld
# 开放3306端口 firewall-cmd –permanent –add-port=3306/tcp
# 开放22端口 firewall-cmd –permanent –add-port=22/tcp
# 重载防火墙规则 firewall-cmd –reload
# 查看防火墙规则 firewall-cmd –list-ports
3306/tcp 22/tcp
# 配置SELinux
# 查看SELinux状态 getenforce
# 配置SELinux策略 semanage port -a -t
mysql_port_t -p tcp 3306
# 允许GreatSQL访问文件系统 chcon -R -t
mysqld_db_t /greatsql/
# 验证SELinux配置 sestatus
# 查看SELinux状态 getenforce
# 配置SELinux策略 semanage port -a -t
mysql_port_t -p tcp 3306
# 允许GreatSQL访问文件系统 chcon -R -t
mysqld_db_t /greatsql/
# 验证SELinux配置 sestatus
Enforcing
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
Part05-风哥经验总结与分享
5.1 操作系统最佳实践
- 系统选择:
- 选择稳定的操作系统版本
- 定期更新系统补丁
- 使用最小化安装
- 系统配置:
- 合理规划磁盘分区
- 使用高性能文件系统
- 配置合适的网络参数
- 性能优化:
- 启用大内存页
- 关闭透明大页
- 调整内核参数
- 安全设置:
- 配置防火墙规则
- 启用SELinux
- 限制用户权限
- 监控与维护:
- 部署监控系统
- 定期检查系统状态
- 备份系统配置
5.2 常见问题与解决方案
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 文件描述符不足 | 系统默认文件描述符限制过低 | 修改/etc/security/limits.conf,增加文件描述符限制 |
| 内存不足 | 内存容量不够或内存泄漏 | 增加内存容量,优化应用程序 |
| 磁盘空间不足 | 日志文件过大或数据文件增长过快 | 清理日志文件,扩展磁盘空间 |
| 网络连接超时 | 网络参数配置不当 | 调整网络参数,优化TCP配置 |
| SELinux阻止访问 | SELinux策略限制 | 配置SELinux策略,允许必要的访问 |
更多学习教程公众号风哥教程itpux_com
5.3 性能优化技巧
# 创建系统优化脚本
cat > /greatsql/scripts/system_optimize.sh << 'EOF'
#!/bin/bash # system_optimize.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
echo “=== System Optimization ===” echo “Date: $(date)”
# 检查系统负载
echo “1. System Load:” uptime
# 检查CPU使用率
echo “2. CPU Usage:” top -bn1 | grep “Cpu(s)” | sed “s/.*, *\([0-9.]*\)%* id.*/\1/” | awk ‘{print 100 – $1″%”}’
# 检查内存使用率
echo “3. Memory Usage:” free -h
# 检查磁盘使用率
echo “4. Disk Usage:” df -h
# 检查网络连接
echo “5. Network Connections:” netstat -tuln | grep LISTEN
# 检查系统服务
echo “6. Running Services:” systemctl list-units –type=service –state=running | head -20 echo “=== System Optimization Completed ===” echo “Date: $(date)” EOF
# 设置脚本权限
chmod +x /greatsql/scripts/system_optimize.sh
cat > /greatsql/scripts/system_optimize.sh << 'EOF'
#!/bin/bash # system_optimize.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
echo “=== System Optimization ===” echo “Date: $(date)”
# 检查系统负载
echo “1. System Load:” uptime
# 检查CPU使用率
echo “2. CPU Usage:” top -bn1 | grep “Cpu(s)” | sed “s/.*, *\([0-9.]*\)%* id.*/\1/” | awk ‘{print 100 – $1″%”}’
# 检查内存使用率
echo “3. Memory Usage:” free -h
# 检查磁盘使用率
echo “4. Disk Usage:” df -h
# 检查网络连接
echo “5. Network Connections:” netstat -tuln | grep LISTEN
# 检查系统服务
echo “6. Running Services:” systemctl list-units –type=service –state=running | head -20 echo “=== System Optimization Completed ===” echo “Date: $(date)” EOF
# 设置脚本权限
chmod +x /greatsql/scripts/system_optimize.sh
# 执行系统优化脚本 /greatsql/scripts/system_optimize.sh
=== System Optimization ===
Date: Wed Apr 9 20:00:00 CST 2026
1. System Load:
20:00:00 up 1 day, 2:00, 1 user, load average: 0.10, 0.05, 0.01
2. CPU Usage:
5.0%
3. Memory Usage:
total used free shared buff/cache available
Mem: 62G 2.0G 58G 100M 2.0G 60G
Swap: 8.0G 0B 8.0G
4. Disk Usage:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 5.0G 45G 10% /
/dev/sdb1 500G 100G 400G 20% /greatsql
5. Network Connections:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
tcp6 0 0 :::3306 :::* LISTEN
6. Running Services:
UNIT LOAD ACTIVE SUB DESCRIPTION
chronyd.service loaded active running NTP client/server
firewalld.service loaded active running firewalld – dynamic firewall daemon
greatsql.service loaded active running GreatSQL Server
NetworkManager.service loaded active running Network Manager
sshd.service loaded active running OpenSSH server daemon
systemd-journald.service loaded active running Journal Service
systemd-logind.service loaded active running Login Service
systemd-networkd.service loaded active running Network Service
systemd-resolved.service loaded active running Network Name Resolution
systemd-timesyncd.service loaded active running Network Time Synchronization
systemd-udevd.service loaded active running udev Kernel Device Manager
=== System Optimization Completed ===
Date: Wed Apr 9 20:00:00 CST 2026
Date: Wed Apr 9 20:00:00 CST 2026
1. System Load:
20:00:00 up 1 day, 2:00, 1 user, load average: 0.10, 0.05, 0.01
2. CPU Usage:
5.0%
3. Memory Usage:
total used free shared buff/cache available
Mem: 62G 2.0G 58G 100M 2.0G 60G
Swap: 8.0G 0B 8.0G
4. Disk Usage:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 5.0G 45G 10% /
/dev/sdb1 500G 100G 400G 20% /greatsql
5. Network Connections:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
tcp6 0 0 :::3306 :::* LISTEN
6. Running Services:
UNIT LOAD ACTIVE SUB DESCRIPTION
chronyd.service loaded active running NTP client/server
firewalld.service loaded active running firewalld – dynamic firewall daemon
greatsql.service loaded active running GreatSQL Server
NetworkManager.service loaded active running Network Manager
sshd.service loaded active running OpenSSH server daemon
systemd-journald.service loaded active running Journal Service
systemd-logind.service loaded active running Login Service
systemd-networkd.service loaded active running Network Service
systemd-resolved.service loaded active running Network Name Resolution
systemd-timesyncd.service loaded active running Network Time Synchronization
systemd-udevd.service loaded active running udev Kernel Device Manager
=== System Optimization Completed ===
Date: Wed Apr 9 20:00:00 CST 2026
操作系统优化建议
- 定期更新系统:保持系统和软件包的最新状态
- 监控系统状态:定期检查系统负载、内存使用、磁盘空间等
- 优化启动服务:禁用不必要的服务,减少系统启动时间
- 配置系统日志:合理配置日志级别,定期清理日志文件
- 使用工具监控:使用top、vmstat、iostat等工具监控系统状态
操作系统维护建议
风哥提示:定期的系统维护可以提高系统的稳定性和性能,减少故障的发生。
- 每周检查系统日志
- 每月更新系统补丁
- 每季度清理磁盘空间
- 每半年进行一次系统性能评估
- 每年进行一次系统备份和恢复测试
操作系统案例分享
案例背景:某企业数据库服务器性能下降,查询响应时间变长。
分析过程:
- 检查数据库参数,发现配置合理
- 检查SQL语句,发现已优化
- 检查系统状态,发现文件描述符不足
解决方案:
- 修改/etc/security/limits.conf,增加文件描述符限制
- 修改内核参数,优化网络配置
- 重启数据库服务
实施效果:
- 查询响应时间从秒级缩短到毫秒级
- 系统稳定性显著提高
- 用户满意度显著提高
from greatsql视频:www.itpux.com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
