修改数据库根目录(数据存储位置)是高级操作,涉及系统安全和数据完整性。务必在操作前备份数据,并在测试环境验证后再应用于生产环境,以下是主流数据库的修改方法:
修改前的关键准备
-
备份数据
使用官方工具(如mysqldump
、pg_dump
)或控制台导出完整数据。 -
停止数据库服务
避免数据损坏,执行命令:# MySQL/MariaDB sudo systemctl stop mysql # PostgreSQL sudo systemctl stop postgresql # MongoDB sudo systemctl stop mongod
-
迁移数据文件
将原目录(如/var/lib/mysql
)复制到新位置(如/new/data/path
):sudo rsync -av /var/lib/mysql /new/data/path
不同数据库的根目录修改步骤
MySQL / MariaDB
步骤:
- 编辑配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
修改以下参数:
[mysqld] datadir = /new/data/path/mysql # 新目录路径 socket = /new/data/path/mysql/mysql.sock # 同步更新socket路径
- 更新AppArmor/SELinux权限(Linux系统):
sudo nano /etc/apparmor.d/tunables/alias 添加:`alias /var/lib/mysql/ -> /new/data/path/mysql/,` sudo systemctl restart apparmor
- 启动服务:
sudo systemctl start mysql
PostgreSQL
步骤:
- 修改配置文件:
sudo nano /etc/postgresql/14/main/postgresql.conf
更新参数:
data_directory = '/new/data/path/postgresql'
- 更新目录所有权:
sudo chown -R postgres:postgres /new/data/path/postgresql
- 启动服务:
sudo systemctl start postgresql
MongoDB
步骤:
- 编辑配置文件:
sudo nano /etc/mongod.conf
修改路径:
storage: dbPath: /new/data/path/mongodb
- 更新目录权限:
sudo chown -R mongodb:mongodb /new/data/path/mongodb
- 启动服务:
sudo systemctl start mongod
SQL Server (Linux)
步骤:
- 停止服务:
sudo systemctl stop mssql-server
- 迁移数据文件:
sudo mv /var/opt/mssql/data /new/data/path
- 修改配置:
sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /new/data/path/data sudo /opt/mssql/bin/mssql-conf set filelocation.defaultlogdir /new/data/path/log
- 启动服务:
sudo systemctl start mssql-server
常见问题解决
- 权限错误:
确保新目录所有权归属数据库用户(如mysql
、postgres
)。 - 服务启动失败:
检查日志定位原因:journalctl -u mysql -xe # MySQL示例
- 磁盘空间不足:
用df -h
确认新目录所在分区的可用空间。 - 路径引用错误:
配置文件中所有路径(如日志、socket)需同步更新。
操作后验证
- 检查服务状态:
systemctl status mysql # 替换为你的数据库服务名
- 登录数据库执行查询:
SHOW DATABASES; -- MySQL示例
- 确认数据完整性:
- 检查关键表记录是否完整。
- 比对备份文件与新目录文件大小。
重要警告
- 生产环境谨慎操作:错误修改可能导致数据丢失或服务瘫痪。
- 测试环境先行:首次操作应在非生产服务器验证。
- 备份重于一切:迁移前必须备份,迁移后立即验证备份可恢复性。
引用说明:本文参考官方文档最佳实践,包括 MySQL 8.0 File System、PostgreSQL File Locations、MongoDB Storage Configuration,操作命令基于 Ubuntu 20.04 LTS 验证,其他系统请查阅对应文档。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/22347.html