Linux CentOS 更改MySQL数据库目录位置

2025-04-28 17:33:19 0点赞 0收藏 0评论
Linux CentOS 更改MySQL数据库目录位置

在 CentOS 系统上迁移 MySQL/MariaDB 数据目录的完整操作流程如下:

一、前期准备

确认当前数据目录‌

bash

Copy Code

mysql -e "SHOW VARIABLES LIKE 'datadir';" | grep datadir

# 默认路径通常为 /var/lib/mysql

创建新数据目录‌

bash

Copy Code

sudo mkdir -p /new/data/path # 例如 /data/mysql

sudo chown -R mysql:mysql /new/data/path

sudo chmod 750 /new/data/path

停止数据库服务‌

bash

Copy Code

sudo systemctl stop mysqld # MySQL 官方版

sudo systemctl stop mariadb # MariaDB

二、数据迁移操作

复制数据库文件(保持权限)‌

bash

Copy Code

sudo rsync -av /var/lib/mysql/ /new/data/path/

# 比 cp 命令更安全的替代方案,保留权限和符号链接

备份原数据目录‌

bash

Copy Code

sudo mv /var/lib/mysql /var/lib/mysql.bak

三、配置修改

修改主配置文件‌

bash

Copy Code

sudo vim /etc/my.cnf

修改或添加以下配置项:

ini

Copy Code

[mysqld]

datadir=/new/data/path

socket=/new/data/path/mysql.sock # 同步修改 socket 路径

[client]

socket=/new/data/path/mysql.sock

更新 AppArmor/SELinux 策略(CentOS 7+)‌

bash

Copy Code

# 修改 SELinux 上下文

sudo semanage fcontext -a -t mysqld_db_t "/new/data/path(/.*)?"

sudo restorecon -Rv /new/data/path

四、服务重启与验证

启动数据库服务‌

bash

Copy Code

sudo systemctl start mysqld

检查服务状态‌

bash

Copy Code

sudo systemctl status mysqld

journalctl -u mysqld -b --no-pager | grep -i error

验证数据目录‌

bash

Copy Code

mysql -e "SHOW VARIABLES LIKE 'datadir';"

五、后续清理

删除备份目录(确认服务正常后)‌

bash

Copy Code

sudo rm -rf /var/lib/mysql.bak

调整防火墙规则(如有必要)‌

bash

Copy Code

sudo firewall-cmd --permanent --add-service=mysql

sudo firewall-cmd --reload

六、故障排查要点

权限问题修复‌

bash

Copy Code

sudo chown -R mysql:mysql /new/data/path

sudo chcon -R -t mysqld_db_t /new/data/path

日志分析‌

bash

Copy Code

sudo tail -50 /var/log/mysqld.log # MySQL 官方版日志

sudo tail -50 /var/log/mariadb/mariadb.log

应急回滚方案‌

bash

Copy Code

sudo systemctl stop mysqld

sudo rm -rf /var/lib/mysql

sudo mv /var/lib/mysql.bak /var/lib/mysql

sudo systemctl start mysqld

附:不同存储引擎注意事项

InnoDB 引擎补充配置‌

ini

Copy Code

innodb_data_home_dir = /new/data/path

innodb_log_group_home_dir = /new/data/path

MyISAM 表维护‌

bash

Copy Code

mysqlcheck -u root -p --all-databases

通过以上步骤可安全完成数据目录迁移。建议在生产环境操作前进行完整备份 (mysqldump -A > full_backup.sql),并选择业务低峰期执行操作。

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
0
扫一下,分享更方便,购买更轻松