Linux下迁移Mysql数据目录
最初架构设计,mysql的数据目录被放在系统盘里面,随着数据的不断增长,系统盘必须随着数据不断扩容,才能满足服务的正常运行。当系统盘扩容到1T的时候出现了瓶颈,系统盘最高支持扩容到1T。这使得不能不面临mysql数据目录迁移到数据盘问题。
一.迁移时需要考虑的事项
- 尽可能少的迁移改动,防止在数据迁移时出错
- 需要考虑到目前服务还在使用,所以迁移应该尽可能快的完成。
- 迁移尽量不影响多源复制,如果复制中断,修复起来比较麻烦,而且还影响微信端的正常使用。
- 系统盘不能缩容,需要考虑剩余的系统盘空间怎么办
二.迁移步骤
在中央业务库中暂停迁移学校的多源复制
1
stop slave for channel "school47";
暂停学校服务
1
pm2 stop 1
停止mysql服务
1
systemctl stop mysqld.service
复制原数据目录的数据到将要迁移的数据目录
1
2
3
41.进入挂载的数据盘目录
cd /mnt/sse/
2.将原数据目录下的文件复制到将要迁移的目录,注意这里cp要加 -a,需要保留原文件属性
cp -a -r /var/lib/mysql/ ./修改/etc/my.cnf文件中的配置。
1
2
3
4
5
6
7[mysqld]
skip-log-bin
datadir=/mnt/sse/mysql
socket=/mnt/sse/mysql/mysql.sock
[client]
如果不设置这句的话,登录数据库的时候会报:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
socket=/mnt/sse/mysql/mysql.sock开启mysql
1
2这里一定需要使用start,不能用restart,否则会出现问题
systemctl start mysqld