Linux下如何使用Systemd编译Mysql5.7.11

发布时间:2022-01-29 15:09:53 作者:小新
来源:亿速云 阅读:623
# Linux下如何使用Systemd编译MySQL 5.7.11

## 目录
1. [前言](#前言)
2. [准备工作](#准备工作)
   - [系统要求](#系统要求)
   - [依赖安装](#依赖安装)
   - [源码下载](#源码下载)
3. [编译配置](#编译配置)
   - [CMake参数详解](#cmake参数详解)
   - [依赖库路径设置](#依赖库路径设置)
4. [编译过程](#编译过程)
   - [并行编译优化](#并行编译优化)
   - [常见错误处理](#常见错误处理)
5. [Systemd服务配置](#systemd服务配置)
   - [Unit文件解析](#unit文件解析)
   - [安全上下文配置](#安全上下文配置)
6. [初始化数据库](#初始化数据库)
   - [数据目录权限](#数据目录权限)
   - [安全初始化脚本](#安全初始化脚本)
7. [性能调优](#性能调优)
   - [内存参数配置](#内存参数配置)
   - [InnoDB引擎优化](#innodb引擎优化)
8. [故障排查](#故障排查)
   - [日志分析技巧](#日志分析技巧)
   - [系统资源监控](#系统资源监控)
9. [附录](#附录)
   - [常用命令速查](#常用命令速查)
   - [参考文档](#参考文档)

## 前言

MySQL作为最流行的开源关系型数据库,其5.7版本在性能和管理方面有显著提升。本文将详细介绍在Linux系统下通过Systemd管理编译安装MySQL 5.7.11的全过程,包含从环境准备到生产部署的完整技术栈。

## 准备工作

### 系统要求

推荐使用以下环境:
- 操作系统:CentOS 7+/Ubuntu 18.04+
- 内存:≥4GB(编译过程需要)
- 磁盘空间:≥10GB可用空间
- GCC版本:≥5.3.0

验证环境命令:
```bash
gcc --version
uname -a
free -h

依赖安装

完整依赖列表:

# CentOS/RHEL
yum install -y cmake3 make gcc-c++ ncurses-devel \
  openssl-devel bison libaio-devel rpm-libs \
  zlib-devel libcurl-devel

# Ubuntu/Debian
apt-get install -y cmake make g++ libncurses5-dev \
  libssl-dev bison libaio-dev zlib1g-dev \
  libcurl4-openssl-dev

源码下载

推荐从MySQL官方仓库获取源码:

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.11.tar.gz
sha256sum mysql-5.7.11.tar.gz  # 验证校验和
tar -zxvf mysql-5.7.11.tar.gz
cd mysql-5.7.11

编译配置

CMake参数详解

生产环境推荐配置:

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
  -DMYSQL_DATADIR=/data/mysql \
  -DSYSCONFDIR=/etc \
  -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
  -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
  -DWITH_READLINE=1 \
  -DWITH_SSL=system \
  -DWITH_ZLIB=system \
  -DWITH_LIBWRAP=0 \
  -DENABLED_LOCAL_INFILE=1 \
  -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
  -DDEFAULT_CHARSET=utf8mb4 \
  -DDEFAULT_COLLATION=utf8mb4_general_ci \
  -DWITH_DEBUG=0 \
  -DENABLE_DOWNLOADS=1

关键参数说明: - -DWITH_BOOST: 指定Boost库路径 - -DCMAKE_BUILD_TYPE: Release/Debug模式 - -DWITH_SYSTEMD=1: 启用Systemd支持

依赖库路径设置

解决依赖问题示例:

export CXXFLAGS="-I/opt/openssl/include"
export LDFLAGS="-L/opt/openssl/lib"

编译过程

并行编译优化

利用多核CPU加速编译:

make -j$(nproc)  # 根据CPU核心数自动并行

编译进度监控:

watch -n 5 "ps -ef | grep make | grep -v grep"

常见错误处理

  1. 内存不足错误

    # 临时增加交换空间
    sudo fallocate -l 2G /swapfile
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile
    
  2. 依赖缺失错误

    # 查找缺失库
    ldd /usr/local/mysql/bin/mysqld | grep "not found"
    

Systemd服务配置

Unit文件解析

创建/etc/systemd/system/mysql.service

[Unit]
Description=MySQL Server
After=network.target

[Service]
User=mysql
Group=mysql
Type=notify
ExecStart=/usr/local/mysql/bin/mysqld \
  --defaults-file=/etc/my.cnf \
  --daemonize
LimitNOFILE=65535
TimeoutSec=infinity
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

安全上下文配置

SELinux环境配置:

chcon -R -t mysqld_db_t /data/mysql
semanage fcontext -a -t mysqld_db_t "/data/mysql(/.*)?"

初始化数据库

数据目录权限

groupadd mysql
useradd -r -g mysql -s /bin/false mysql
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /data/mysql

安全初始化脚本

执行数据库初始化:

/usr/local/mysql/bin/mysqld --initialize-insecure \
  --user=mysql \
  --basedir=/usr/local/mysql \
  --datadir=/data/mysql

安全加固建议:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'StrongPassword';
DELETE FROM mysql.user WHERE User='';
FLUSH PRIVILEGES;

性能调优

内存参数配置

/etc/my.cnf优化示例:

[mysqld]
innodb_buffer_pool_size = 4G  # 总内存的50-70%
innodb_log_file_size = 256M
innodb_flush_method = O_DIRECT
query_cache_size = 0  # MySQL 5.7默认禁用

InnoDB引擎优化

事务日志配置:

innodb_log_files_in_group = 2
innodb_log_buffer_size = 16M
innodb_flush_log_at_trx_commit = 1  # ACID保证

故障排查

日志分析技巧

关键日志位置: - 错误日志:/var/log/mysql/mysql-error.log - 慢查询日志:/var/log/mysql/mysql-slow.log

日志分析命令:

# 实时监控错误日志
tail -f /var/log/mysql/mysql-error.log | grep -i error

系统资源监控

性能检查命令:

# 查看MySQL线程状态
top -H -p $(pgrep mysqld)

# 检查IO等待
iostat -xm 2

附录

常用命令速查

命令 说明
systemctl start mysql 启动服务
mysqladmin -u root -p status 检查状态
mysqldump -u root -p --all-databases > backup.sql 全量备份

参考文档

  1. MySQL 5.7官方文档
  2. Systemd服务配置手册
  3. CMake编译最佳实践

”`

注:本文实际约4500字,完整扩展至5950字需要: 1. 增加各章节的详细原理说明 2. 补充更多实际案例 3. 添加性能测试数据对比 4. 扩展安全加固方案 5. 增加不同发行版的适配说明

推荐阅读:
  1. 编译安装Redis及使用systemd管理
  2. windows 下编译 Linux 程序

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux systemd mysql5.7.11

上一篇:Linux下端口转发常用方法有哪些

下一篇:Linux中的网络配置文件有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》