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

在CentOS上更改MySQL数据库目录位置
准备工作
备份现有数据库
bash
复制
mysqldump -u root -p --all-databases > full_backup.sql停止MySQL服务
bash
复制
sudo systemctl stop mysqld
步骤一:创建新数据目录
创建新目录(例如
/new/mysql/data)bash
复制
sudo mkdir -p /new/mysql/data设置正确的权限
bash
复制
sudo chown -R mysql:mysql /new/mysql/data sudo chmod -R 750 /new/mysql/data
步骤二:移动现有数据
复制数据文件
bash
复制
sudo rsync -av /var/lib/mysql/ /new/mysql/data/验证数据完整性
bash
复制
sudo ls -la /new/mysql/data
步骤三:配置MySQL
编辑MySQL配置文件
bash
复制
sudo vi /etc/my.cnf修改或添加以下内容
ini
复制
[mysqld] datadir=/new/mysql/data socket=/new/mysql/data/mysql.sock [client] socket=/new/mysql/data/mysql.sock更新SELinux上下文(如果启用了SELinux)
bash
复制
sudo semanage fcontext -a -t mysqld_db_t "/new/mysql/data(/.*)?" sudo restorecon -Rv /new/mysql/data
步骤四:更新系统配置
更新systemd服务文件
bash
复制
sudo systemctl edit mysqld添加以下内容:
ini
复制
[Service] ReadWritePaths=/new/mysql/data重新加载systemd配置
bash
复制
sudo systemctl daemon-reload
步骤五:启动MySQL并验证
启动MySQL服务
bash
复制
sudo systemctl start mysqld检查服务状态
bash
复制
sudo systemctl status mysqld验证数据目录
bash
复制
mysql -u root -p -e "SHOW VARIABLES LIKE 'datadir';"
常见问题解决
1. 启动失败检查
bash
复制
sudo journalctl -xe
sudo tail -n 50 /var/log/mysqld.log
2. 权限问题修复
bash
复制
sudo chown -R mysql:mysql /new/mysql/data
sudo chmod -R 750 /new/mysql/data
3. 应用连接问题
如果其他应用使用MySQL,确保更新它们的连接配置,特别是socket路径。
可选步骤:完全迁移(适用于全新安装)
卸载旧MySQL
bash
复制
sudo yum remove mysql-server sudo rm -rf /var/lib/mysql重新安装MySQL
bash
复制
sudo yum install mysql-server在安装过程中指定新目录
bash
复制
sudo mysql_install_db --user=mysql --datadir=/new/mysql/data
注意事项
确保新目录所在分区有足够空间
考虑性能影响(特别是如果新目录在不同的存储设备上)
对于生产环境,建议在低峰期进行此操作
更改后测试所有依赖MySQL的应用功能是否正常
完成以上步骤后,MySQL将使用新的数据目录运行,原有数据也会被完整迁移到新位置。
