1. 首页 > MariaDB教程 > 正文

MariaDB教程FG003-CentOS下MariaDB二进制部署与系统环境优化实战

本文档风哥主要介绍在CentOS系统下使用二进制方式部署MariaDB以及系统环境优化的方法,包括二进制安装步骤、系统参数调优、服务配置等内容。风哥教程参考MariaDB官方文档Installation Guides和Performance Tuning内容,适合数据库管理员学习和实施。

Part01-基础概念与理论知识

1.1 二进制部署概念

二进制部署是指直接使用编译好的二进制文件进行安装,相比包管理器安装,具有以下优势:

  • 版本选择更灵活
  • 安装路径可自定义
  • 更适合生产环境的定制化需求
  • 便于版本管理和升级

1.2 CentOS系统优化原理

CentOS系统优化主要包括:

  • 内核参数调优
  • 文件系统优化
  • 内存管理优化
  • 网络参数调优

1.3 性能调优基础

MariaDB性能调优涉及多个方面:

  • 系统层面优化
  • 数据库参数调优
  • 存储引擎选择
  • SQL语句优化
更多视频教程www.fgedu.net.cn

Part02-生产环境规划与建议

2.1 CentOS系统要求

风哥提示:生产环境建议使用CentOS 7.9或CentOS 8.5以上版本,确保系统稳定性和安全性。

2.2 系统环境准备

更多学习教程公众号风哥教程itpux_com

# 检查CentOS版本
[root@fgedu.net.cn ~]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
# 系统更新
[root@fgedu.net.cn ~]# yum update -y
# 安装必要依赖
[root@fgedu.net.cn ~]# yum install -y wget curl vim gcc-c++ make libaio-devel

2.3 部署规划

部署规划包括:

  • 安装路径:/mariadb
  • 数据路径:/mariadb/fgdata
  • 日志路径:/mariadb/logs
  • 配置文件:/mariadb/etc
学习交流加群风哥微信: itpux-com

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

3.1 二进制安装步骤

# 下载MariaDB二进制包
[root@fgedu.net.cn ~]# wget https://downloads.mariadb.org/interstitial/mariadb-10.11.8/binary-linux-systemd-x86_64/mariadb-10.11.8-linux-systemd-x86_64.tar.gz
# 解压二进制包
[root@fgedu.net.cn ~]# tar -zxvf mariadb-10.11.8-linux-systemd-x86_64.tar.gz -C /mariadb/
[root@fgedu.net.cn ~]# cd /mariadb/
[root@fgedu.net.cn mariadb]# ln -s mariadb-10.11.8-linux-systemd-x86_64 current
# 创建用户和组
[root@fgedu.net.cn ~]# groupadd mysql
[root@fgedu.net.cn ~]# useradd -r -g mysql -s /sbin/nologin mysql
# 创建目录结构
[root@fgedu.net.cn mariadb]# mkdir -p current/data current/logs current/etc
[root@fgedu.net.cn mariadb]# chown -R mysql:mysql current/
# 初始化数据库
[root@fgedu.net.cn mariadb]# cd current/
[root@fgedu.net.cn current]# ./scripts/mysql_install_db –user=mysql –datadir=data/

3.2 系统环境优化

# 配置内核参数
[root@fgedu.net.cn ~]# cat > /etc/sysctl.d/mariadb.conf << 'EOF'
# 内存相关
vm.swappiness = 10
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10
# 文件描述符
fs.file-max = 65536
# 网络相关
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 30
# 共享内存
kernel.shmmax = 17179869184
kernel.shmall = 4194304
EOF
# 应用内核参数
[root@fgedu.net.cn ~]# sysctl -p /etc/sysctl.d/mariadb.conf
# 配置文件限制
[root@fgedu.net.cn ~]# cat > /etc/security/limits.d/mysql.conf << 'EOF'
mysql soft nofile 65536
mysql hard nofile 65536
mysql soft nproc 65536
mysql hard nproc 65536
EOF
# 关闭透明大页
[root@fgedu.net.cn ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@fgedu.net.cn ~]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
# 添加到启动脚本
[root@fgedu.net.cn ~]# cat >> /etc/rc.local << 'EOF'
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
EOF
[root@fgedu.net.cn ~]# chmod +x /etc/rc.local

3.3 服务配置与管理

# 配置my.cnf
[root@fgedu.net.cn current]# cat > etc/my.cnf << 'EOF'
[mysqld]
basedir = /mariadb/current
datadir = /mariadb/current/data
socket = /mariadb/current/data/mysql.sock
pid-file = /mariadb/current/data/mysql.pid
# 性能配置
innodb_buffer_pool_size = 8G
innodb_log_file_size = 2G
max_connections = 2000
query_cache_size = 0
query_cache_type = 0
# 安全配置
bind-address = 0.0.0.0
skip-name-resolve
EOF
# 创建systemd服务文件
[root@fgedu.net.cn ~]# cat > /etc/systemd/system/mariadb.service << 'EOF'
[Unit]
Description=MariaDB 10.11.8 database server
After=network.target
[Service]
Type=simple
User=mysql
Group=mysql
ExecStart=/mariadb/current/bin/mysqld –defaults-file=/mariadb/current/etc/my.cnf
ExecStop=/mariadb/current/bin/mysqladmin -u root -p shutdown
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# 启动服务
[root@fgedu.net.cn ~]# systemctl daemon-reload
[root@fgedu.net.cn ~]# systemctl start mariadb
[root@fgedu.net.cn ~]# systemctl enable mariadb
学习交流加群风哥QQ113257174

Part04-生产案例与实战讲解

4.1 二进制部署实战

# 检查安装状态
[root@fgedu.net.cn ~]# ls -la /mariadb/
total 12
drwxr-xr-x 3 root root 4096 Apr 7 11:00 .
drwxr-xr-x. 1 root root 4096 Apr 7 10:50 ..
drwxr-xr-x 10 mysql mysql 4096 Apr 7 11:00 current
lrwxrwxrwx 1 root root 36 Apr 7 11:00 mariadb-10.11.8-linux-systemd-x86_64 -> mariadb-10.11.8-linux-systemd-x86_64
# 检查服务状态
[root@fgedu.net.cn ~]# systemctl status mariadb
● mariadb.service – MariaDB 10.11.8 database server
Loaded: loaded (/etc/systemd/system/mariadb.service;
enabled;
vendor preset: disabled)
Active: active (running) since Mon 2026-04-07 11:10:00 CST;
5min ago
Main PID: 2345 (mysqld)
Status: “Taking your SQL requests now…”
Tasks: 32 (limit: 32768)
Memory: 1.2G
CPU: 2.3s
CGroup: /system.slice/mariadb.service
└─2345 /mariadb/current/bin/mysqld –defaults-file=/mariadb/current/etc/my.cnf
Apr 07 11:10:00 fgedu.net.cn systemd[1]: Started MariaDB 10.11.8 database server.

4.2 系统调优实战

# 检查内核参数
[root@fgedu.net.cn ~]# sysctl -a | grep -E ‘swappiness|dirty|file-max|somaxconn’
vm.swappiness = 10
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10
fs.file-max = 65536
net.core.somaxconn = 65535
# 检查透明大页状态
[root@fgedu.net.cn ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
# 检查文件限制
[root@fgedu.net.cn ~]# su – mysql -s /bin/bash -c ‘ulimit -n’
65536

4.3 性能测试与验证

# 连接MariaDB
[root@fgedu.net.cn ~]# /mariadb/current/bin/mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with;
or \g.
Your MariaDB connection id is 8
Server version: 10.11.8-MariaDB MariaDB Server
MariaDB [(none)]> CREATE DATABASE fgedudb;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> USE fgedudb;
Database changed
# 创建测试表
MariaDB [fgedudb]> CREATE TABLE fgedu_test (
-> id INT PRIMARY KEY AUTO_INCREMENT,
-> name VARCHAR(100),
-> value INT,
-> created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
-> ) ENGINE=InnoDB;
Query OK, 0 rows affected (0.01 sec)
# 插入测试数据
MariaDB [fgedudb]> DELIMITER //
MariaDB [fgedudb]> CREATE PROCEDURE insert_test_data()
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i <= 100000 DO
INSERT INTO fgedu_test (name, value) VALUES (CONCAT(‘test_’, i), i);
SET i = i + 1;
END WHILE;
END //
MariaDB [fgedudb]> DELIMITER;
MariaDB [fgedudb]> CALL insert_test_data();
Query OK, 1 row affected (5.23 sec)
# 测试查询性能
MariaDB [fgedudb]> EXPLAIN SELECT * FROM fgedu_test WHERE id = 50000;
+——+————-+———–+——+—————+———+———+——-+——+————-+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+——+————-+———–+——+—————+———+———+——-+——+————-+
| 1 | SIMPLE | fgedu_test | const | PRIMARY | PRIMARY | 4 | const | 1 | Using index |
+——+————-+———–+——+—————+———+———+——-+——+————-+
1 row in set (0.00 sec)
MariaDB [fgedudb]> SELECT COUNT(*) FROM fgedu_test;
+———-+
| COUNT(*) |
+———-+
| 100000 |
+———-+
1 row in set (0.03 sec)
风哥提示:安全开发是防止SQL注入的第一道防线

Part05-风哥经验总结与分享

5.1 二进制 vs 包管理器安装

二进制安装与包管理器安装的对比:

  • 二进制安装:灵活性高,路径可自定义,适合生产环境
  • 包管理器安装:操作简单,自动处理依赖,适合快速部署

5.2 系统优化最佳实践

风哥提示:系统优化应根据实际硬件配置和业务负载进行调整,避免过度优化。

5.3 常见问题与排查

  • 启动失败:检查日志文件,确认权限和配置
  • 性能问题:使用mytop、show processlist等工具监控
  • 内存不足:调整innodb_buffer_pool_size参数
  • 连接数限制:调整max_connections参数
from MariaDB视频:www.itpux.com

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

联系我们

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

微信号:itpux-com

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