1. 首页 > MySQL教程 > 正文

MySQL教程FG001-MySQL安装前期准备工作

本文档为MySQL初学者提供全面的安装前期准备指南,包括行业前景分析、学习准备建议、硬件环境要求、存储环境规划、网络环境配置,以及云平台、虚拟机、PC服务器、一体机、超融合、K8S、Docker等多种运行环境的知识。适合新人入行学习MySQL,为MySQL数据库的安装和运行做好充分准备。

Part01-基础概念与理论知识

1.1 MySQL数据库版本选择

MySQL 8.4是Oracle发布的长期支持版(LTS),具有更好的性能和安全性。学习交流加群风哥微信: itpux-com

1.2 MySQL数据库行业前景

MySQL作为世界上最流行的开源关系型数据库之一,具有广阔的行业前景:

  • 市场需求旺盛:随着数字化转型的加速,企业对数据库的需求持续增长,MySQL凭借其开源、稳定、高效的特点,成为众多企业的首选。
  • 就业机会多:MySQL数据库管理员、开发工程师等职位需求大,薪资待遇优厚。
  • 技术生态成熟:MySQL拥有庞大的用户社区和完善的技术生态,学习资源丰富。
  • 应用场景广泛:从中小企业到大型互联网公司,从传统行业到新兴领域,MySQL都有广泛的应用。
  • 发展趋势良好:Oracle持续投入MySQL的开发和维护,不断推出新特性和改进性能。

1.3 MySQL学习准备

作为MySQL初学者,建议做好以下学习准备:

  • 基础知识:了解数据库基本概念、SQL语言基础、关系型数据库原理等。
  • 学习资源:官方文档、在线教程、视频课程、书籍等。推荐MySQL官方文档、风哥MySQL教程等。
  • 实践环境:搭建本地测试环境,通过实际操作加深理解。
  • 学习计划:制定合理的学习计划,从基础到进阶,循序渐进。
  • 社区参与:加入MySQL社区,与其他学习者交流,解决学习中遇到的问题。

Part02-生产环境规划与建议

2.1 硬件环境规划

根据业务需求规划服务器配置,包括CPU、内存、存储等。生产环境建议:

  • CPU:根据并发量选择,一般建议至少8核心以上。
  • 内存:根据数据量和并发量,建议16GB以上,大型应用建议32GB或64GB。
  • 存储:使用SSD存储提高性能,数据目录至少需要50GB空间。
  • 网络:千兆网卡以上,确保网络传输速度。

2.2 存储环境规划

合理规划存储结构,包括数据目录、日志目录等:

  • 数据目录:建议单独挂载分区,避免与系统分区混用。
  • 日志目录:建议与数据目录分离,提高I/O性能。
  • 备份目录:预留足够空间用于存储备份文件。
  • 存储类型:优先使用SSD,提高数据读写速度。
  • RAID配置:根据需求选择合适的RAID级别,提高数据安全性和性能。

2.3 网络环境规划

规划网络架构,确保MySQL服务的网络连接稳定:

  • 网络拓扑:合理设计网络拓扑,避免网络瓶颈。
  • 防火墙配置:开放MySQL默认端口3306,或根据实际配置开放相应端口。
  • 网络带宽:确保足够的网络带宽,满足数据传输需求。
  • 网络安全:配置网络安全策略,防止未授权访问。
  • 高可用设计:考虑网络冗余,确保服务连续性。

Part03-运行环境知识

3.1 云平台环境

云平台特点

云平台提供弹性计算资源,适合快速部署MySQL:

  • 弹性扩展:根据业务需求快速调整资源。
  • 高可用性:云平台通常提供多可用区部署,提高服务可用性。
  • 管理便捷:提供控制台管理,简化运维工作。
  • 按需付费:根据实际使用量付费,降低成本。

主流云平台

阿里云、腾讯云、华为云、AWS、Azure等都提供MySQL云服务。

3.2 虚拟机环境

虚拟机特点

虚拟机环境适合测试和中小型应用:

  • 资源隔离:每个虚拟机独立运行,互不干扰。
  • 快速部署:通过镜像快速部署MySQL环境。
  • 成本较低:相比物理服务器,成本更低。
  • 管理灵活:可根据需要调整虚拟机配置。

常用虚拟化平台

VMware、KVM、Hyper-V等。

3.3 PC服务器环境

PC服务器特点

物理服务器适合对性能和稳定性要求较高的场景:

  • 性能稳定:物理服务器性能稳定,无虚拟化开销。
  • 资源独享:所有硬件资源专用于MySQL服务。
  • 可定制性强:可根据需求定制硬件配置。
  • 安全性高:物理隔离,安全性更好。

适用场景

大型企业、高并发应用、对性能要求较高的场景。

3.4 一体机环境

一体机特点

数据库一体机集成了硬件和软件,提供一站式解决方案:

  • 预配置优化:硬件和软件预配置优化,性能更好。
  • 易于部署:开箱即用,减少部署时间。
  • 管理简单:集成管理界面,简化运维。
  • 支持厂商:提供专业技术支持。

主流一体机

Oracle Exadata、IBM PureData等。

3.5 超融合环境

超融合特点

超融合基础设施将计算、存储、网络集成在一起:

  • 简化管理:统一管理界面,简化运维。
  • 弹性扩展:可根据需求横向扩展。
  • 高可用性:多节点部署,提高可用性。
  • 成本效益:相比传统架构,成本更低。

适用场景

中小型企业、快速部署场景、混合云环境。

3.6 K8S容器环境

K8S特点

Kubernetes提供容器编排能力,适合微服务架构:

  • 自动扩缩容:根据负载自动调整MySQL实例数量。
  • 高可用性:多副本部署,提高服务可用性。
  • 滚动更新:支持无停机更新。
  • 资源隔离:容器化部署,资源隔离性好。

部署方式

使用StatefulSet部署MySQL,确保数据持久化。

3.7 Docker容器环境

Docker特点

Docker容器轻量便携,适合快速部署和测试:

  • 快速部署:通过镜像快速部署MySQL环境。
  • 环境一致性:确保开发、测试、生产环境一致。
  • 资源占用少:容器轻量,资源占用少。
  • 易于迁移:容器可在不同环境间快速迁移。

部署建议

生产环境建议使用数据卷挂载,确保数据持久化。

Part04-生产环境项目实施方案

4.1 硬件环境检查

在安装MySQL之前,必须对服务器的硬件环境进行全面检查,确保满足MySQL 8.4的最低要求。学习交流加群风哥QQ113257174

# 检查内存大小
# free -h
total used free shared buff/cache available
Mem: 64G 2.5G 60G 12M 1.5G 61G
Swap: 32G 0B 32G

# 检查磁盘空间
# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 32G 0 32G 0% /dev
tmpfs 32G 0 32G 0% /dev/shm
tmpfs 32G 12M 32G 1% /run
tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/sda1 50G 18G 33G 36% /
/dev/sdb1 500G 25G 475G 5% /mysql

# 检查CPU核心数
# nproc
32

# 检查系统架构
# uname -m
x86_64

生产环境建议:最小内存4GB(测试环境),生产环境建议16GB以上。SWAP分区:内存8-16GB时,SWAP等于内存大小;内存16-64GB时,SWAP为16GB;内存64GB以上时,SWAP为32GB。数据目录至少需要50GB空间。

4.2 操作系统检查

MySQL 8.4支持Oracle Linux 9.3、Red Hat Enterprise Linux 9.3等操作系统。本文以Oracle Linux 9.3为例。

# 检查操作系统版本
# cat /etc/oracle-release
Oracle Linux Server release 9.3

# 检查内核版本
# uname -r
5.15.0-100.96.4.1.el9uek.x86_64

# 检查SELinux状态
# getenforce
Disabled

# 关闭SELinux(如未关闭)
# vi /etc/selinux/config
SELINUX=disabled

# 检查防火墙状态
# systemctl status firewalld

# 关闭防火墙(生产环境建议开放特定端口而非完全关闭)
# systemctl stop firewalld
# systemctl disable firewalld

4.3 依赖包安装

MySQL 8.4需要安装一系列依赖包,使用yum进行安装。

# 安装MySQL依赖包
# yum install -y wget curl libaio libnuma numactl-libs openssl-devel

# 安装额外依赖包
# yum install -y perl net-tools

风哥提示:确保安装所有必要的依赖包,否则可能导致MySQL安装失败或运行异常。

4.4 内核参数配置

内核参数对MySQL数据库的性能和稳定性至关重要,需要根据服务器硬件配置进行调整。

# 编辑sysctl.conf文件
# vi /etc/sysctl.conf

# 添加以下内核参数
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
net.core.netdev_max_backlog = 4096
net.core.somaxconn = 4096
net.ipv4.ip_local_port_range = 9000 65500
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_tw_reuse = 1
vm.swappiness = 10
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10

# 使内核参数生效
# sysctl -p

# 验证参数设置
# sysctl -a | grep kernel.sem
kernel.sem = 250 32000 100 128

# sysctl -a | grep fs.file-max
fs.file-max = 6815744

生产环境内核参数说明:fs.file-max设置系统最大文件句柄数;kernel.sem依次为SEMMSL、SEMMNS、SEMOPM、SEMMNI;net.ipv4.ip_local_port_range设置可用端口范围,避免与MySQL端口冲突;vm.swappiness设置为10,减少使用swap。更多学习教程公众号风哥教程itpux_com

4.5 大内存页配置

大内存页(HugePages)可以减少页表项数量,提高内存访问效率,对MySQL数据库性能有显著提升。

# 检查当前大内存页配置
# grep Huge /proc/meminfo
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB

# 检查透明大内存页状态
# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never

# 禁用透明大内存页
# vi /etc/default/grub

# 在GRUB_CMDLINE_LINUX中添加:transparent_hugepage=never
GRUB_CMDLINE_LINUX=”crashkernel=auto rd.lvm.lv=ol/root rd.lvm.lv=ol/swap transparent_hugepage=never”

# 重新生成grub配置
# grub2-mkconfig -o /boot/grub2/grub.cfg

# 重启系统使配置生效
# reboot

# 配置大内存页数量(假设内存为64GB,每个大页2MB)
# vi /etc/sysctl.conf

# 添加大内存页配置
vm.nr_hugepages = 16384
vm.hugetlb_shm_group = 27

# 使配置生效
# sysctl -p

# 验证大内存页配置
# grep HugePages /proc/meminfo
HugePages_Total: 16384
HugePages_Free: 16384
HugePages_Rsvd: 0
HugePages_Surp: 0

4.6 NUMA配置

NUMA(Non-Uniform Memory Access)架构对MySQL数据库性能有重要影响,需要正确配置。

# 检查NUMA状态
# numactl –hardware
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23
node 0 size: 32768 MB
node 0 free: 31024 MB
node 1 cpus: 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31
node 1 size: 32768 MB
node 1 free: 32156 MB
node distances:
node 0 1
0: 10 21
1: 21 10

# 检查当前NUMA策略
# numactl –show
policy: default
preferred node: current

# 禁用NUMA(推荐在BIOS中禁用,或在GRUB中添加参数)
# vi /etc/default/grub

# 在GRUB_CMDLINE_LINUX中添加:numa=off
GRUB_CMDLINE_LINUX=”crashkernel=auto rd.lvm.lv=ol/root rd.lvm.lv=ol/swap transparent_hugepage=never
numa=off”

# 重新生成grub配置
# grub2-mkconfig -o /boot/grub2/grub.cfg

# 重启系统
# reboot

# 验证NUMA已禁用
# dmesg | grep -i numa
No NUMA configuration found

4.7 TMPFS配置

TMPFS(临时文件系统)用于存储临时文件,对MySQL数据库的性能有一定影响。

# 检查当前TMPFS配置
# df -h /dev/shm
Filesystem Size Used Avail Use% Mounted on
tmpfs 32G 0 32G 0% /dev/shm

# 检查当前挂载选项
# mount | grep tmpfs
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)

# 配置TMPFS大小(建议设置为物理内存的50%-75%)
# vi /etc/fstab

# 修改tmpfs行
tmpfs /dev/shm tmpfs defaults,size=48g 0 0

# 重新挂载TMPFS
# mount -o remount /dev/shm

# 验证配置
# df -h /dev/shm
Filesystem Size Used Avail Use% Mounted on
tmpfs 48G 0 48G 0% /dev/shm

4.8 用户和组配置

MySQL数据库需要特定的用户和组来运行,需要提前创建并配置。

# 创建MySQL用户组
# groupadd -g 27 mysql

# 创建MySQL用户
# useradd -u 27 -g mysql mysql

# 设置MySQL用户密码
# passwd mysql
Changing password for user mysql.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

# 验证用户和组
# id mysql
uid=27(mysql) gid=27(mysql) groups=27(mysql)

# 配置用户资源限制
# vi /etc/security/limits.conf

# 添加以下内容
mysql soft nproc 2047
mysql hard nproc 16384
mysql soft nofile 1024
mysql hard nofile 65536
mysql soft stack 10240
mysql hard stack 32768

4.9 目录结构配置

按照最佳实践创建MySQL目录结构。

# 创建MySQL基础目录
# mkdir -p /mysql/data
# mkdir -p /mysql/logs
# mkdir -p /mysql/binlog
# mkdir -p /mysql/backup
# mkdir -p /mysql/tmp

# 设置目录权限
# chown -R mysql:mysql /mysql
# chmod -R 755 /mysql

# 验证目录结构
# ls -la /mysql/
total 20
drwxr-xr-x 6 mysql mysql 4096 Apr 1 10:00 .
drwxr-xr-x 3 root root 4096 Apr 1 10:00 ..
drwxr-xr-x 2 mysql mysql 4096 Apr 1 10:00 backup
drwxr-xr-x 2 mysql mysql 4096 Apr 1 10:00 binlog
drwxr-xr-x 2 mysql mysql 4096 Apr 1 10:00 data
drwxr-xr-x 2 mysql mysql 4096 Apr 1 10:00 logs
drwxr-xr-x 2 mysql mysql 4096 Apr 1 10:00 tmp

Part05-生产案例与实战讲解

5.1 环境检查脚本

创建一个环境检查脚本,用于快速验证系统是否满足MySQL安装要求。

#!/bin/bash
# mysql_env_check.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

echo “=== MySQL环境检查脚本 ===”
echo “”
echo “1. 硬件环境检查”
echo “——————”
echo “内存大小:”
free -h
echo “”
echo “磁盘空间:”
df -h
echo “”
echo “CPU核心数:”
nproc
echo “”
echo “系统架构:”
uname -m
echo “”
echo “2. 操作系统检查”
echo “——————”
echo “操作系统版本:”
cat /etc/oracle-release
echo “”
echo “内核版本:”
uname -r
echo “”
echo “SELinux状态:”
getenforce
echo “”
echo “防火墙状态:”
systemctl status firewalld | grep Active
echo “”
echo “3. 内核参数检查”
echo “——————”
echo “文件句柄数:”
sysctl -a | grep fs.file-max
echo “”
echo “内核信号量:”
sysctl -a | grep kernel.sem
echo “”
echo “4. 大内存页检查”
echo “——————”
grep Huge /proc/meminfo
echo “”
echo “5. NUMA检查”
echo “——————”
numactl –hardware
echo “”
echo “6. 目录结构检查”
echo “——————”
ls -la /mysql/
echo “”
echo “=== 检查完成 ===”

# 赋予脚本执行权限
# chmod +x mysql_env_check.sh

# 执行脚本
# ./mysql_env_check.sh
=== MySQL环境检查脚本 ===

1. 硬件环境检查
——————
内存大小:
total used free shared buff/cache available
Mem: 64G 2.5G 60G 12M 1.5G 61G
Swap: 32G 0B 32G

磁盘空间:
Filesystem Size Used Avail Use% Mounted on
devtmpfs 32G 0 32G 0% /dev
tmpfs 32G 0 32G 0% /dev/shm
tmpfs 32G 12M 32G 1% /run
tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/sda1 50G 18G 33G 36% /
/dev/sdb1 500G 25G 475G 5% /mysql

CPU核心数:
32

系统架构:
x86_64

2. 操作系统检查
——————
操作系统版本:
Oracle Linux Server release 9.3

内核版本:
5.15.0-100.96.4.1.el9uek.x86_64

SELinux状态:
Disabled

防火墙状态:
Active: inactive (dead)

3. 内核参数检查
——————
文件句柄数:
fs.file-max = 6815744

内核信号量:
kernel.sem = 250 32000 100 128

4. 大内存页检查
——————
AnonHugePages: 0 kB
HugePages_Total: 16384
HugePages_Free: 16384
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB

5. NUMA检查
——————
No NUMA configuration found

6. 目录结构检查
——————
total 20
drwxr-xr-x 6 mysql mysql 4096 Apr 1 10:00 .
drwxr-xr-x 3 root root 4096 Apr 1 10:00 ..
drwxr-xr-x 2 mysql mysql 4096 Apr 1 10:00 backup
drwxr-xr-x 2 mysql mysql 4096 Apr 1 10:00 binlog
drwxr-xr-x 2 mysql mysql 4096 Apr 1 10:00 data
drwxr-xr-x 2 mysql mysql 4096 Apr 1 10:00 logs
drwxr-xr-x 2 mysql mysql 4096 Apr 1 10:00 tmp

=== 检查完成 ===

Part06-风哥经验总结与分享

6.1 MySQL安装前期准备的重要性

充分的安装前期准备是MySQL数据库稳定运行的基础,直接影响后续的性能和可靠性。

6.2 MySQL常见问题及解决方案

在安装前期准备过程中,常见的问题包括依赖包缺失、内核参数配置不当、目录权限错误等。需要根据具体情况进行排查和解决。

6.3 MySQL最佳实践建议

1. 严格按照官方文档的要求进行环境准备
2. 使用脚本自动化环境检查和配置
3. 提前规划好目录结构和存储方案
4. 合理配置内核参数和内存管理
5. 定期进行环境检查和维护

风哥提示:环境准备完成后,建议创建系统快照或备份,以便在安装过程中出现问题时能够快速恢复。from MySQL:www.itpux.com
GF-MySQL数据库培训文档系列

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息