MariaDB 10.5.4 二进制包安装:CentOS 7 下 3 步配置逻辑卷与数据目录迁移

📅 2026/7/5 23:24:51
MariaDB 10.5.4 二进制包安装:CentOS 7 下 3 步配置逻辑卷与数据目录迁移
MariaDB 10.5.4 生产级二进制部署逻辑卷管理与数据目录迁移实战指南为什么生产环境需要特别关注存储架构在数据库系统的生命周期中数据存储架构的决策往往决定了后期运维的灵活性和扩展性上限。与测试环境不同生产环境的MariaDB部署必须考虑三个核心要素存储性能的可扩展性、数据安全的保障机制以及运维操作的便捷性。传统直接使用磁盘分区的方式在面对数据增长时往往需要停机扩容而逻辑卷管理LVM则提供了在线扩容的可能性。逻辑卷管理的优势不仅体现在空间扩展上更在于其快照功能为备份策略提供了原子性保障。当配合XFS文件系统使用时可实现近乎实时的备份且对性能影响极小——这对需要7×24小时运行的业务系统至关重要。以下表格对比了不同存储方案的特性特性原始分区LVM常规模式LVMXFS在线扩容不支持支持支持快照备份不可用支持但性能下降高性能支持最大文件系统尺寸16TB8EB8EB碎片化风险中等中等极低环境准备与依赖检查在CentOS 7系统上部署前需确保环境符合以下条件硬件要求至少2GB空闲内存实测InnoDB缓冲池低于1GB时性能下降明显独立的存储设备建议SSD或高性能SAS硬盘根分区剩余空间≥5GB用于存放二进制包和临时文件系统配置检查# 关闭SELinux需重启生效 sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config setenforce 0 # 关闭防火墙或放行3306端口 systemctl stop firewalld systemctl disable firewalld # 检查关键依赖 rpm -q libaio numactl用户与目录规划# 创建专用用户组和用户 groupadd -g 300 mysql useradd -u 300 -g mysql -s /sbin/nologin -d /nonexistent mysql # 创建临时工作目录 mkdir /tmp/mariadb_install cd /tmp/mariadb_install逻辑卷配置全流程1. 存储设备识别与初始化当服务器连接新存储设备后本例使用/dev/sdb需执行以下操作# 扫描新添加的磁盘设备 echo - - - /sys/class/scsi_host/host0/scan lsblk # 创建物理卷 pvcreate /dev/sdb pvdisplay # 创建卷组建议保留5%空间用于紧急情况 vgcreate -s 32M vg_mysql /dev/sdb vgdisplay注意卷组物理扩展块PE Size设置为32MB可在空间分配时获得更好的灵活性特别是在后期需要做快照时。2. 逻辑卷创建与文件系统格式化针对MariaDB的I/O特性建议单独创建日志和数据逻辑卷# 创建专用逻辑卷建议分配比例日志卷10%数据卷90% lvcreate -n lv_mariadb_data -L 180G vg_mysql lvcreate -n lv_mariadb_log -L 20G vg_mysql # 使用XFS文件系统必须加-f参数强制创建 mkfs.xfs -f /dev/vg_mysql/lv_mariadb_data mkfs.xfs -f /dev/vg_mysql/lv_mariadb_logXFS的以下特性特别适合数据库场景动态inode分配避免传统文件系统的inode耗尽问题延迟分配机制提升写入性能碎片化概率远低于ext43. 持久化挂载配置编辑/etc/fstab前需获取准确的UUID# 获取逻辑卷UUID blkid /dev/vg_mysql/lv_mariadb_data | awk {print $2} | sed s///g blkid /dev/vg_mysql/lv_mariadb_log | awk {print $2} | sed s///g # 编辑fstab文件加入以下内容 UUIDdata_uuid /data/mariadb xfs defaults,noatime,nodiratime,allocsize4m 0 0 UUIDlog_uuid /log/mariadb xfs defaults,noatime,nodiratime,allocsize4m 0 0挂载并验证mkdir -p /data/mariadb /log/mariadb mount -a df -hTMariaDB二进制部署详解1. 软件包获取与校验推荐从国内镜像站下载并验证完整性wget https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-10.5.4/bintar-linux-systemd-x86_64/mariadb-10.5.4-linux-systemd-x86_64.tar.gz wget https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-10.5.4/bintar-linux-systemd-x86_64/mariadb-10.5.4-linux-systemd-x86_64.tar.gz.sha256 sha256sum -c mariadb-10.5.4-linux-systemd-x86_64.tar.gz.sha2562. 解压与目录准备tar zxvf mariadb-10.5.4-linux-systemd-x86_64.tar.gz -C /usr/local/ cd /usr/local ln -s mariadb-10.5.4-linux-systemd-x86_64 mysql chown -R root:mysql mysql/3. 环境变量配置创建mysql.sh配置文件cat /etc/profile.d/mysql.sh EOF export PATH/usr/local/mysql/bin:\$PATH export LD_LIBRARY_PATH/usr/local/mysql/lib:\$LD_LIBRARY_PATH EOF source /etc/profile.d/mysql.sh数据目录迁移关键步骤1. 权限与目录结构调整mkdir -p /data/mariadb/{data,tmp} mkdir -p /log/mariadb/{binlog,slowlog,errorlog} chown -R mysql:mysql /data/mariadb /log/mariadb chmod 750 /data/mariadb /log/mariadb2. 数据库初始化/usr/local/mysql/scripts/mysql_install_db \ --usermysql \ --basedir/usr/local/mysql \ --datadir/data/mariadb/data初始化完成后检查关键文件ls -l /data/mariadb/data/mysql3. 配置文件优化/etc/my.cnf应包含以下核心参数[client] port 3306 socket /data/mariadb/tmp/mysql.sock [mysqld] # 基础配置 user mysql port 3306 basedir /usr/local/mysql datadir /data/mariadb/data socket /data/mariadb/tmp/mysql.sock tmpdir /data/mariadb/tmp # 内存配置 innodb_buffer_pool_size 4G innodb_log_buffer_size 64M key_buffer_size 256M # 日志配置 log-error /log/mariadb/errorlog/mysql-error.log slow_query_log 1 slow_query_log_file /log/mariadb/slowlog/slow-queries.log log_bin /log/mariadb/binlog/mysql-bin binlog_format ROW # InnoDB优化 innodb_file_per_table 1 innodb_flush_log_at_trx_commit 1 innodb_support_xa 14. Systemd服务配置创建服务单元文件/etc/systemd/system/mariadb.service[Unit] DescriptionMariaDB Database Server Aftersyslog.target network.target [Service] Typesimple Usermysql Groupmysql ExecStart/usr/local/mysql/bin/mysqld --defaults-file/etc/my.cnf LimitNOFILE65535 Restarton-failure RestartSec5s [Install] WantedBymulti-user.target启用并启动服务systemctl daemon-reload systemctl enable mariadb systemctl start mariadb生产环境验证清单完成部署后请逐项检查以下内容存储验证# 确认逻辑卷挂载状态 lvs df -h # 测试写入性能应≥200MB/s dd if/dev/zero of/data/mariadb/test bs1G count1 oflagdirect数据库功能验证-- 检查存储引擎状态 SHOW ENGINES; -- 创建测试数据库 CREATE DATABASE lvm_test; USE lvm_test; CREATE TABLE test_lvm(id INT PRIMARY KEY AUTO_INCREMENT, data VARCHAR(255)); INSERT INTO test_lvm(data) VALUES(REPEAT(X,200));备份测试# 创建LVM快照 lvcreate -s -n mariadb_snap -L 5G /dev/vg_mysql/lv_mariadb_data # 挂载快照验证 mkdir /mnt/snap mount /dev/vg_mysql/mariadb_snap /mnt/snap ls /mnt/snap/data/mariadb/data/lvm_test性能调优建议根据服务器配置调整以下参数内存相关innodb_buffer_pool_size 物理内存的50-70% innodb_buffer_pool_instances CPU核心数IO相关innodb_io_capacity 2000 # SSD建议值 innodb_flush_neighbors 0 # SSD建议禁用连接控制max_connections 300 thread_cache_size 50实际项目中曾遇到一个电商平台在双11期间因连接数暴增导致服务不可用的情况。通过提前设置连接限制和启用连接池有效避免了资源耗尽的问题。关键配置如下[mysqld] max_connections 500 wait_timeout 60 max_user_connections 100故障排查技巧当服务无法启动时按以下顺序检查查看错误日志tail -n 50 /log/mariadb/errorlog/mysql-error.log检查socket文件权限ls -l /data/mariadb/tmp/验证端口占用ss -tlnp | grep 3306测试配置文件语法/usr/local/mysql/bin/mysqld --defaults-file/etc/my.cnf --validate-config典型问题解决方案错误1InnoDB: Operating system error number 13 in a file operation原因SELinux限制解决chcon -R -t mysqld_db_t /data/mariadb错误2Cant create/write to file /data/mariadb/tmp/ibXXXXX原因tmp目录权限问题解决chmod 1777 /data/mariadb/tmp