MySQL:修改数据库默认存储目录与数据迁移

目录

简述

一、数据备份

[方法 1:使用 mysqldump 导出数据](#方法 1:使用 mysqldump 导出数据)

[方法 2:直接复制数据目录](#方法 2:直接复制数据目录)

[二、修改 MySQL 默认数据库位置](#二、修改 MySQL 默认数据库位置)

[步骤 1:停止 MySQL 服务](#步骤 1:停止 MySQL 服务)

[步骤 2:修改配置文件](#步骤 2:修改配置文件)

[步骤 3:迁移数据到新目录](#步骤 3:迁移数据到新目录)

[步骤 4:设置新目录权限](#步骤 4:设置新目录权限)

[步骤 5:启动 MySQL 服务](#步骤 5:启动 MySQL 服务)

三、验证数据迁移成功

[登录 MySQL](#登录 MySQL)

查看新数据目录

检查数据库完整性

五、总结


简述

MySQL 默认将数据存储在系统盘(如 C:\ProgramData\MySQL\...),但随着数据量增长,系统盘可能面临空间不足的问题。此外,出于性能优化或安全性的考虑,用户可能需要将数据目录迁移到其他磁盘。

本文将详细介绍如何在 Windows 系统下修改 MySQL 的默认数据库位置,并确保数据安全备份与无缝迁移。

相关阅读: MySQL 安装过程记录以及安装选项详解


一、数据备份

方法 1:使用 mysqldump 导出数据

打开命令提示符(管理员权限),执行以下命令备份所有数据库:

bash 复制代码
mysqldump -u root -p --all-databases > "D:\MySQL_Backup\full_backup.sql"
  • -u root:以 root 用户登录。
  • -p:提示输入密码。
  • --all-databases:备份所有数据库。

方法 2:直接复制数据目录

停止 MySQL 服务(后续步骤会详细说明)。

将默认数据目录(如 C:\ProgramData\MySQL\MySQL Server 8.0\data)完整复制到安全位置。


二、修改 MySQL 默认数据库位置

步骤 1:停止 MySQL 服务

在Windows系统中,可以通过服务管理器找到MySQL服务并停止它。


**步骤 2:**修改配置文件

找到并修改MySQL的配置文件以指定新的数据库路径。配置文件通常位于C:\ProgramData\MySQL\MySQL Server 8.0

在配置文件中找到 datadir:

修改为非系统路径:(建议使用VSCode修改)

bash 复制代码
datadir=D:/MySQL Server 8.0\Data

确保新的数据目录路径是正确的。


步骤 3:迁移数据到新目录

将当前MySQL数据目录(C:\ProgramData\MySQL\MySQL Server 8.0\Data)中的数据复制到D:\MySQL Server 8.0\data 中。为防止出错,建议将原数据目录重命名备份,将原 data 目录重命名为 data_backup。


步骤 4:设置新目录权限

MySQL 服务需要对新目录有完全控制权,右键点击新目录(如 D:\MySQL Server 8.0\data),选择 属性 > 安全 > 编辑。

添加用户或组:输入 NETWORK SERVICE(MySQL 默认服务账户)。

赋予 完全控制 权限。

如果使用自定义服务账户,需选择对应账户。


步骤 5:启动 MySQL 服务

如果不将旧的数据复制到新的路径下,会报如下错误:

复制数据后,启动MySQL服务,没有报错就OK了。


三、验证数据迁移成功

登录 MySQL

打开MySQL命令行工具,输入密码进行登录。

查看新数据目录

bash 复制代码
SHOW VARIABLES LIKE 'datadir';

检查数据库完整性

bash 复制代码
SHOW DATABASES;

五、总结

通过以上步骤,已成功将 MySQL 的默认数据目录迁移到新位置。关键注意事项包括:

  1. 操作前备份数据:避免意外导致数据丢失。
  2. 配置文件与权限:确保 my.ini 的路径正确,且 MySQL 服务账户有权限访问新目录。
  3. 验证与日志排查:通过日志快速定位问题。

无论是为了释放系统盘空间,还是优化数据库性能,合理规划数据存储位置都是运维中的重要一环。

相关推荐
欧先生^_^1 小时前
Linux内核可配置的参数
linux·服务器·数据库
问道飞鱼1 小时前
【数据库知识】Mysql进阶-高可用MHA(Master High Availability)方案
数据库·mysql·adb·高可用·mha
tiging1 小时前
centos7.x下,使用宝塔进行主从复制的原理和实践
数据库·mysql·adb·主从复制
wangcheng86992 小时前
Oracle常用函数-日期时间类型
数据库·sql·oracle
zizisuo2 小时前
面试篇:Spring Security
网络·数据库·安全
一只fish2 小时前
MySQL 8.0 OCP 1Z0-908 题目解析(2)
数据库·mysql
StarRocks_labs2 小时前
从InfluxDB到StarRocks:Grab实现Spark监控平台10倍性能提升
大数据·数据库·starrocks·分布式·spark·iris·物化视图
搞不懂语言的程序员2 小时前
Redis的Pipeline和Lua脚本适用场景是什么?使用时需要注意什么?
数据库·redis·lua
王RuaRua3 小时前
[数据结构]5. 栈-Stack
linux·数据结构·数据库·链表
大学生小郑4 小时前
Go语言八股之Mysql基础详解
mysql·面试