MariaDB数据库安装配置与性能优化实践
1. MariaDB 服务器概述MariaDB 是一个开源的关系型数据库管理系统RDBMS作为 MySQL 的一个分支而诞生。它由 MySQL 的原始开发者 Michael Monty Widenius 创建旨在保持与 MySQL 的高度兼容性同时提供更多功能和改进。MariaDB 的名称来源于 Monty 的小女儿 Maria 的名字。在实际生产环境中MariaDB 因其稳定性、性能和丰富的功能集而广受欢迎。许多大型科技公司如 Google、Wikipedia 和 Red Hat 都已将 MariaDB 作为其数据库解决方案。与 MySQL 相比MariaDB 提供了更多的存储引擎选择如 Aria、ColumnStore 等改进了查询优化器并包含了更多安全特性。提示虽然 MariaDB 与 MySQL 高度兼容但在某些特定功能和语法上仍存在差异迁移时需要注意兼容性问题。2. MariaDB 服务器安装与配置2.1 系统环境准备在安装 MariaDB 前需要确保系统满足基本要求。对于 Linux 系统以 Ubuntu 为例建议使用至少 2GB 内存和 20GB 磁盘空间的生产环境配置。以下是在 Ubuntu 20.04 LTS 上的安装步骤# 更新软件包列表 sudo apt update # 安装 MariaDB 服务器 sudo apt install mariadb-server # 安全配置向导 sudo mysql_secure_installation安装过程中安全配置向导会提示设置 root 密码、移除匿名用户、禁止远程 root 登录等安全选项。建议全部选择 Y 以增强安全性。2.2 配置文件详解MariaDB 的主要配置文件位于/etc/mysql/mariadb.conf.d/50-server.cnf。关键配置项包括[mysqld] datadir /var/lib/mysql socket /var/run/mysqld/mysqld.sock # 内存配置 key_buffer_size 256M max_allowed_packet 64M thread_stack 192K thread_cache_size 8 # 连接设置 max_connections 100 connect_timeout 10 wait_timeout 28800 # 日志配置 log_error /var/log/mysql/error.log slow_query_log 1 slow_query_log_file /var/log/mysql/mysql-slow.log long_query_time 2配置完成后需要重启服务使更改生效sudo systemctl restart mariadb3. MariaDB 常见问题解决方案3.1 错误 2059认证插件问题当客户端尝试连接 MariaDB 10.4 版本时可能会遇到错误 2059Authentication plugin caching_sha2_password cannot be loaded。这是因为新版 MariaDB 默认使用了更安全的认证插件。解决方案有两种修改用户认证方式推荐ALTER USER usernamehost IDENTIFIED WITH mysql_native_password BY password; FLUSH PRIVILEGES;或者在配置文件中强制使用旧版认证方式不推荐安全性降低[mysqld] default_authentication_plugin mysql_native_password3.2 UniDAC 连接失败问题使用 UniDAC 组件连接 MariaDB 时可能会遇到兼容性问题。解决方法包括确保使用最新版本的 UniDAC 组件在连接字符串中明确指定协议版本ProtocolmpMySQL;Serverlocalhost;Databasetestdb;UserIDuser;Passwordpass;Port3306检查防火墙设置确保 3306 端口开放3.3 群晖 NAS 连接配置在群晖 NAS 上配置 MariaDB 连接时需要注意确保 MariaDB 10 套件已安装并启动设置适当的权限GRANT ALL PRIVILEGES ON *.* TO username% IDENTIFIED BY password; FLUSH PRIVILEGES;在群晖控制面板 安全性 防火墙中允许 3306 端口如果使用 Docker 版 MariaDB确保正确映射端口4. MariaDB 与 Spring Boot 集成4.1 基本配置在 Spring Boot 项目中使用 MariaDB 非常简单。首先在 pom.xml 中添加依赖dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-data-jpa/artifactId /dependency dependency groupIdorg.mariadb.jdbc/groupId artifactIdmariadb-java-client/artifactId version3.0.6/version /dependency然后在 application.properties 中配置数据源spring.datasource.urljdbc:mariadb://localhost:3306/dbname spring.datasource.usernameuser spring.datasource.passwordpass spring.datasource.driver-class-nameorg.mariadb.jdbc.Driver spring.jpa.hibernate.ddl-autoupdate spring.jpa.show-sqltrue4.2 MyBatis-Plus 支持MyBatis-Plus 完全支持 MariaDB。配置示例Configuration MapperScan(com.example.mapper) public class MybatisPlusConfig { Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MARIADB)); return interceptor; } }实体类映射示例Data TableName(user) public class User { TableId(type IdType.AUTO) private Long id; private String name; private Integer age; private String email; }Mapper 接口示例public interface UserMapper extends BaseMapperUser { // 自定义方法 Select(SELECT * FROM user WHERE age #{age}) ListUser selectUsersOlderThan(Integer age); }5. MariaDB 性能优化实践5.1 查询优化技巧索引优化为 WHERE、JOIN 和 ORDER BY 子句中的列创建索引避免过度索引每个额外的索引都会降低写入性能使用复合索引时遵循最左前缀原则EXPLAIN 分析EXPLAIN SELECT * FROM orders WHERE customer_id 100 AND status shipped;分析结果中的 type 列应尽量为 ref 或 eq_ref避免 ALL全表扫描**避免 SELECT *** 只查询需要的列减少数据传输量5.2 服务器参数调优根据服务器配置调整以下参数# InnoDB 缓冲池建议为系统内存的 50-70% innodb_buffer_pool_size 4G # 日志文件大小建议每个 256M-2G innodb_log_file_size 512M # 并发连接处理 innodb_thread_concurrency 0 # 0表示无限制 innodb_read_io_threads 8 innodb_write_io_threads 8 # 查询缓存MariaDB 10.1.7 已移除使用其他缓存方案5.3 分表与分区策略对于大型表考虑使用分区提高查询性能CREATE TABLE sales ( id INT NOT NULL AUTO_INCREMENT, region VARCHAR(50) NOT NULL, amount DECIMAL(10,2) NOT NULL, sale_date DATE NOT NULL, PRIMARY KEY (id, sale_date) ) PARTITION BY RANGE (YEAR(sale_date)) ( PARTITION p2020 VALUES LESS THAN (2021), PARTITION p2021 VALUES LESS THAN (2022), PARTITION p2022 VALUES LESS THAN (2023), PARTITION pmax VALUES LESS THAN MAXVALUE );6. MariaDB 高可用与备份方案6.1 主从复制配置主服务器配置/etc/mysql/mariadb.conf.d/50-server.cnf[mysqld] server-id 1 log_bin /var/log/mysql/mariadb-bin binlog_format ROW binlog_row_image FULL expire_logs_days 10创建复制用户CREATE USER replicator% IDENTIFIED BY password; GRANT REPLICATION SLAVE ON *.* TO replicator%; FLUSH PRIVILEGES;从服务器配置[mysqld] server-id 2 relay_log /var/log/mysql/mariadb-relay-bin read_only ON启动复制CHANGE MASTER TO MASTER_HOSTmaster_ip, MASTER_USERreplicator, MASTER_PASSWORDpassword, MASTER_LOG_FILEmariadb-bin.000001, MASTER_LOG_POS328; START SLAVE;6.2 备份与恢复策略mysqldump 备份mysqldump -u root -p --all-databases --single-transaction --master-data2 full_backup.sql物理备份Percona XtraBackupxtrabackup --backup --target-dir/backups/full --userroot --passwordpassword xtrabackup --prepare --target-dir/backups/full自动化备份脚本示例#!/bin/bash BACKUP_DIR/backups/mysql DATE$(date %Y%m%d_%H%M%S) LOGFILE/var/log/mysql_backup.log echo $(date) - Starting backup $LOGFILE mysqldump -u backup_user -ppassword --all-databases --single-transaction | gzip $BACKUP_DIR/full_$DATE.sql.gz # 保留最近7天备份 find $BACKUP_DIR -name *.sql.gz -mtime 7 -exec rm {} \; echo $(date) - Backup completed $LOGFILE7. MariaDB 监控与维护7.1 性能监控工具内置命令SHOW STATUS- 查看服务器状态变量SHOW PROCESSLIST- 查看当前连接和查询SHOW ENGINE INNODB STATUS- InnoDB 详细状态第三方工具Prometheus Grafana可视化监控Percona Monitoring and Management (PMM)专业数据库监控mytop类似 top 的命令行监控工具7.2 定期维护任务表维护ANALYZE TABLE table_name; -- 更新统计信息 OPTIMIZE TABLE table_name; -- 优化表存储日志轮转 配置 logrotate 自动轮转 MySQL 日志/var/log/mysql/mysql.log { daily rotate 7 missingok compress delaycompress notifempty create 640 mysql adm postrotate test -x /usr/bin/mysqladmin /usr/bin/mysqladmin flush-logs endscript }用户权限审计-- 列出所有用户及其权限 SELECT user, host FROM mysql.user; SHOW GRANTS FOR usernamehost; -- 定期检查并移除不必要的权限 REVOKE ALL PRIVILEGES ON *.* FROM usernamehost;在实际使用 MariaDB 的过程中我发现定期检查慢查询日志和优化长期存在的性能问题比一次性的大规模调优更有效。对于生产环境建议至少每周进行一次完整的备份验证确保在需要时能够成功恢复。

相关新闻

WeTextProcessing路线图:未来发展方向与新功能预告

WeTextProcessing路线图:未来发展方向与新功能预告

WeTextProcessing路线图:未来发展方向与新功能预告 【免费下载链接】WeTextProcessing Text Normalization & Inverse Text Normalization 项目地址: https://gitcode.com/gh_mirrors/we/WeTextProcessing WeTextProcessing作为一款专注于文本规范化&…

2026/8/6 20:23:42 阅读更多 →
通感一体卫星组网:自动驾驶与机器人的天基感知革命

通感一体卫星组网:自动驾驶与机器人的天基感知革命

1. 天基超视距感知:自动驾驶与机器人的"上帝视角"在重庆山城的复杂立交桥上,一辆自动驾驶测试车突然遭遇GPS信号丢失。与此同时,300公里外新疆戈壁滩的勘探机器人因地形遮挡与指挥中心失联——这类场景揭示了地面感知系统的致命短板…

2026/8/6 20:23:42 阅读更多 →
2万亿 tokens训练的秘密:ModernBERT-base预训练数据与训练策略深度剖析

2万亿 tokens训练的秘密:ModernBERT-base预训练数据与训练策略深度剖析

2万亿 tokens训练的秘密:ModernBERT-base预训练数据与训练策略深度剖析 【免费下载链接】ModernBERT-base 项目地址: https://ai.gitcode.com/hf_mirrors/answerdotai/ModernBERT-base ModernBERT-base是一款基于2万亿tokens海量数据训练的先进语言模型&…

2026/8/6 20:22:42 阅读更多 →

最新新闻

纳瓦尔宝典:构建心智模型与杠杆思维,重塑财富与幸福认知

纳瓦尔宝典:构建心智模型与杠杆思维,重塑财富与幸福认知

1. 项目概述:为什么我们需要一本“现代财富与幸福指南” 最近几年,关于“搞钱”和“幸福”的讨论热度一直居高不下。市面上有无数教你如何投资、如何自律、如何成功的书籍,但读完之后,很多人依然感到迷茫:道理都懂&…

2026/8/7 4:04:19 阅读更多 →
Unity与Vuforia AR开发实战:从零构建图像识别AR应用

Unity与Vuforia AR开发实战:从零构建图像识别AR应用

1. 项目概述:从零到一,用Unity和Vuforia打开AR世界的大门几年前,我第一次接触AR(增强现实)时,被那种将虚拟物体“钉”在现实世界中的魔法感深深吸引。当时觉得这技术门槛一定很高,直到我遇到了U…

2026/8/7 4:04:19 阅读更多 →
AI Agent如何革新社区活动运营:从传统表单到智能对话的实践

AI Agent如何革新社区活动运营:从传统表单到智能对话的实践

1. 从“填表”到“对话”:得物社区活动运营的痛点与AI机遇 如果你在社区运营或者活动策划的岗位上待过,哪怕只有几个月,你大概率会对“表单”这个东西又爱又恨。爱它,是因为它结构清晰,收集信息高效,是活动…

2026/8/7 4:04:19 阅读更多 →
Gemini 3.5生态工具链缺失:从RAG评测到Agent编排的工程化实践

Gemini 3.5生态工具链缺失:从RAG评测到Agent编排的工程化实践

1. 项目概述:当我们在谈论Gemini 3.5的“生态缺失”时,到底在说什么? 最近和几个做AI应用落地的朋友聊天,话题总绕不开Google的Gemini 3.5。大家的一致感受是:模型本身的能力,特别是推理和长上下文&#xf…

2026/8/7 4:04:19 阅读更多 →
自动驾驶半实物仿真平台:从概念到实战的架构解析与平台选型

自动驾驶半实物仿真平台:从概念到实战的架构解析与平台选型

1. 从概念到现实:半实物仿真平台的本质 如果你在自动驾驶、机器人或者航空航天领域工作,一定对“仿真”这个词不陌生。但纯软件的仿真跑得再溜,总感觉和真实世界隔着一层纱,数据再漂亮,心里也没底。这就是为什么“半实…

2026/8/7 4:04:19 阅读更多 →
从身份认知到任务执行:构建实用AI助手的技术架构与工程实践

从身份认知到任务执行:构建实用AI助手的技术架构与工程实践

1. 从“我是谁”到“帮我干活”:一个AI助手的进化之路 最近在折腾一个叫WorkBuddy的AI助手项目,核心目标很明确:让它从一个只会回答“我是谁”的自我介绍机器人,进化成一个能真正“帮我干活”的得力伙伴。这听起来像是一个简单的功…

2026/8/7 4:03:19 阅读更多 →

日新闻

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy 想要将Android手机屏幕完美投射到电脑上,享受大屏操作的自…

2026/8/7 0:00:19 阅读更多 →
如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南 【免费下载链接】tom-select Tom Select is a lightweight (~16kb gzipped) hybrid of a textbox and select box. Forked from selectize.js to provide a framework agnostic autocomplete widget wi…

2026/8/7 0:00:19 阅读更多 →
5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件 【免费下载链接】nsz NSZ - Homebrew compatible NSP/XCI compressor/decompressor 项目地址: https://gitcode.com/gh_mirrors/ns/nsz 你是否在为Nintendo Switch游戏文件占用大量存储…

2026/8/7 0:00:19 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/6 22:02:27 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/6 22:02:28 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →