昨天遇到一个现场问题,实施人员把mysql的data放在C盘,用过一阵以后C盘快满了。
于是准备做数据迁移,想到如下几种方案(均需要先把mysql服务停掉):
1.转储SQL文件
但是问题是,想要迁移的库占了1.5T,是T啊,不是G,光生成SQL文件就需要N多天了,还不说这种方式对于大容量库容易出问题,果断放弃
2.使用软链接
还想到一个方式是软链接:把data复制到别的盘,C盘的data注释掉(原文件最好先别删),然后C盘原路径下使用一个名为data的软链接mklink到刚才转移到其他盘符的data上,mysql.ini配置里的路径保持不变(就是用了一个名字和原名称data一样的影子指到了别的盘,数据存储在其他盘,但是路径仍在C盘,点开C盘的data,上方的路径显示为C盘路径,不像快捷方式那样:点击快捷方式后跳转到目标位置,路径也变成别的盘符)。
理论上再启动mysql就ok了,然鹅呢,重启数据库失败,error1067,查了N多个1067的解决方案,均无果。放弃!
(此方式其实可以使用,后文再说)
3.迁移data文件夹,更改mysql.ini路径
步骤:1)拷贝data文件夹到其他盘符
2)更改my.ini中datadir的路径为新data路径(不用将路径中的\改成/)
3)重启mysql
咦???还是error1067!!!
后来发现一个帖子说道:需要把新data目录下除了文件夹以外的其余文件全部删掉,然后把mysql的服务属性中的登录身份改成本地:
重启mysql服务,咦,竟然起来了!
然鹅,使用时发现,打开表的时候提示该表丢失???什么鬼???
又多方查找,发现新data目录下的ibdata1文件不能删,把原data下的ibdata1拷贝到新data下,重启mysql,成功!完美!
咦?是不是想到了什么?对!第二种方法中也是error1067,是不是同样的问题呢?
照着第三种方案试一下:删掉除了ibdata1以外的文件,更改mysql登录属性,重启,成功!
当初看帖子时,以及老员工说不要随便更改路径,容易出问题,于是才先想的第二种方案。现在看来,并没有什么大的影响。
------------------------
好,问题解决,以下详细介绍步骤:
方案2、3均需要的步骤:
1)先停止mysql服务
2)拷贝C:\ProgramData\MySQL\MySQL Server 5.6\路径下的data文件夹到其他盘符,比如放到D:\mysqldata\下
3)新data目录下除了文件夹以及ibdata1这个文件,全部删掉
4)更改mysql的服务属性,将登陆身份改成本地(后来发现这一步不是必须的,如果除了这一步还是不能启动mysql再改)
方案2、3单独剩余的单独步骤,:
方案2:
回到旧的data目录上一层C:\ProgramData\MySQL\MySQL Server 5.6\,data文件夹改个名字(不改名字不能创建同名的软链接),然后在此处打开命令行(按住shift点击右键),输入:mklink /D data "D:\mysqldata\data\"即可,然后重启mysql
方案3:
更改C:\ProgramData\MySQL\MySQL Server 5.6\下my.ini中datadir路径为新data路径
重启mysql
-------------------------------------
终极方案
出现这种情况的根本原因在于安装mysql时没有出现更改data路径的页面(本人使用的是mysql5.6,安装时选的server only),这就很尴尬了啊,那么怎么办呢,卸掉重装!
然后你会发现,咦?为什么这次可以修改data路径了?别问为什么了,赶紧选个最大的盘放data吧!
————————————————
版权声明:本文为CSDN博主「小西几zzZ」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/a123gsfd/article/details/79999838
来源:CSDN
作者:jingfeng0311
链接:https://blog.csdn.net/weixin_42392186/article/details/103792061