【MySQL】数据目录迁移

一、使用场景

使用该方法一般是数据目录所在磁盘不支持扩展,只能通过新加磁盘来扩展数据目录磁盘空间。通常是Windows服务器,或者是Linux服务器的mysql数据目录的磁盘没有使用lvm。

二、准备工作

  1. 新磁盘初始化,达到可使用状态

  2. 需要自己预估时间,迁移期间需要停止mysql服务,停服的时间在于数据量的大小,主要在拷贝文件上

  3. 梳理关联的业务系统

  4. 告知你的用户,要停服务了,就可以开始操作了。

三、迁移工作

1. 停止MySQL服务

windows服务器:打开【服务】,找到mysql的服务,右键停止。

Linux服务器:

bash 复制代码
二选一:
mysqladmin 直接与 MySQL 服务器通信并请求关闭,而 systemctl 则是通过操作系统层面来停止服务。


1.通过 MySQL 的 mysqladmin 工具停止服务

mysqladmin -uroot -p shutdown 



2.通过 systemd 系统和服务管理器来停止 MySQL 服务

rhel/centos 7命令

systemctl start mysqld

rhel/centos 6命令

service mysqld start

2. 修改配置文件

【非常重要】

1. 修改配置前,将原配置复制一份副本作备份。

2. 确认mysql的配置文件:通过mysql查询得到datadir的值与配置中datadir值相同,则说明这个配置文件就是这个mysql的。

查询mysql的datadir参数:

bash 复制代码
 sql> show variables like 'datadir';

关于配置文件的位置,Linux一般是/mec/my.cnf或mysql程序文件目录下;Windows一般在mysql程序文件目录下的my.ini。

修改datadir参数,改成新磁盘位置,例如:

bash 复制代码
[mysqld]

......

#mysql数据目录
datadir=D:/mydata/data

3. 迁移数据目录文件

bash 复制代码
Windows:用复制粘贴迁移,将数据目录下所有文件复制到新磁盘。

Linux:cp -r 旧的数据文件目录 新的数据文件目录

例如:cp -r /mydata/data /myNewData/data

4. 启动MySQL

bash 复制代码
Windows还是通过"服务"来启动

Linux:

centos7/rhel7

systemctl start mysqld

centos7/rhel6

service mysqld start

5. 确认datadir是否是新位置

bash 复制代码
sql> show variables like 'datadir';

6. 验证你自己的业务系统

7. 清理原数据目录文件【非必要】

数据目录迁移后确认mysql和业务系统正常后,可以清理原数据目录的数据释放磁盘空间,当然怕出问题,保一手也可以先留一段时间。

四、回退方案

如果迁移后,mysql或业务系统出现故障不可用,需要快速进行回退。则:

  1. 将备份的mysql配置文件退换现在的配置文件。

  2. 启动mysql完成回退。

相关推荐
瑞克-桑切斯1 小时前
企业生产环境:https部署+nginx高可用(业务不中断)
linux·服务器·数据库
zyseo89 小时前
谷歌SEO 准首页词挖掘脚本:找出排在第 8-20 名的隐藏流量
大数据·数据库·人工智能
xiaogai_gai11 小时前
仅查询策略实战:从金蝶云·星空旗舰版定时拉取收料通知单
大数据·数据库·python
数据工匠老o11 小时前
异构数据库DDL同步:260条链路的结构变更自动适配方案
数据库·架构
L00112 小时前
MySQL5.7 DATE 字段无法设置默认日期?用触发器搞定|个人任务清单项目实战
mysql
这个DBA有点耶12 小时前
银行业市占率最高的国产数据库是谁?先搞清楚“市占率”的四种口径
数据库·程序员·架构
用户62799471826213 小时前
南大通用GBase 8a之基于审计日志的冷温热数据分析
数据库
数据库小学妹13 小时前
数据库运维五级成熟度:监控、备份、高可用怎么串起来
运维·数据库·监控
一个天蝎座的程序猿13 小时前
为了给报表提速,我把金仓KES的列存储折腾了个遍:聊聊KES的技术能力
数据库
飞越未来云城的霓虹飞猪13 小时前
AI 数据库地图:从 PostgreSQL 到向量数据库,一次看懂 AI 时代的数据底座
数据库