一、使用场景
使用该方法一般是数据目录所在磁盘不支持扩展,只能通过新加磁盘来扩展数据目录磁盘空间。通常是Windows服务器,或者是Linux服务器的mysql数据目录的磁盘没有使用lvm。
二、准备工作
-
新磁盘初始化,达到可使用状态
-
需要自己预估时间,迁移期间需要停止mysql服务,停服的时间在于数据量的大小,主要在拷贝文件上
-
梳理关联的业务系统
-
告知你的用户,要停服务了,就可以开始操作了。
三、迁移工作
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或业务系统出现故障不可用,需要快速进行回退。则:
-
将备份的mysql配置文件退换现在的配置文件。
-
启动mysql完成回退。