MariaDB支持多种存储引擎,不同引擎针对不同场景设计,选择合适的引擎是存储管理的核心。
数据目录是MariaDB存储数据文件(表、索引、日志等)的核心路径,需合理配置和管理。
通过SQL命令确认数据目录位置:
mysql -u root -p -e "SHOW VARIABLES LIKE 'datadir';"
默认路径通常为/var/lib/mysql
(CentOS/RHEL)或/usr/local/mysql/data
(源码编译安装)。
若需更改数据目录(如扩展磁盘空间),需按以下步骤操作:
sudo systemctl stop mariadb
(避免数据损坏)。sudo mkdir -p /new/mysql/data
(如/new/mysql/data
)。sudo chown -R mysql:mysql /new/mysql/data
(确保MariaDB用户mysql
拥有所有权);sudo chmod 750 /new/mysql/data
(限制其他用户访问)。rsync
(推荐,保留权限)或cp
命令复制数据:sudo rsync -av /var/lib/mysql/ /new/mysql/data/
。/etc/my.cnf
(或/etc/mysql/my.cnf
),在[mysqld]
部分修改datadir
:[mysqld]
datadir=/new/mysql/data
socket=/new/mysql/data/mysql.sock # 可选:同步更新socket路径
sudo semanage fcontext -a -t mysqld_db_t "/new/mysql/data(/.*)?"
sudo restorecon -Rv /new/mysql/data
sudo systemctl start mariadb
,并通过SHOW VARIABLES LIKE 'datadir';
验证是否生效。内存是MariaDB性能的关键,合理分配内存参数可显著提升存储和处理效率。
当磁盘空间不足时,需及时清理和优化,避免服务中断。
sudo apt-get autoclean
(清理旧deb包)、sudo apt-get clean
(清理所有deb包)、sudo apt-get autoremove
(删除无用软件包)。sudo rm -rf /var/log/mysql/*.log
(删除MariaDB日志)、sudo du -sh /var/log/* | sort -rh
(查找大日志文件)。sudo find / -type f -size +100M -exec ls -lh {} \;
(查找大于100M的文件)。fdisk
、parted
)新增分区并挂载。GParted
图形工具)。lvextend
扩展逻辑卷,再调整文件系统大小(resize2fs
)。INT
代替BIGINT
、VARCHAR(50)
代替TEXT
(减少存储空间)。PARTITION BY RANGE (YEAR(create_time))
),提高查询效率。OPTIMIZE TABLE
命令(如OPTIMIZE TABLE large_table;
),整理碎片、回收空间(对InnoDB表需注意:会锁表,建议在低峰期执行)。mysql
用户和组(sudo chown -R mysql:mysql /data/mysql
),避免权限过高导致数据被篡改。750
(所有者可读写执行,组用户可读执行,其他用户无权限),避免其他用户访问敏感数据。rsync
或mysqldump
),防止数据丢失(如磁盘故障、误操作)。