Mysql 直接拷贝数据库文件导致表不显示的问题

前言:

最近有一个需求,需要迁移数据库中的其中一个库,需要迁移的那个数据库占用了700多G的空间,所以采用直接拷贝数据库文件的方式,拷贝到另一台服务器后发现表不显示,记录本次问题。

注:两个服务器版本需要一致,本次迁移数据库版本位Mysql 5.7.4,不一致可能会导致某种未知问题。

 

1.找到目标所在服务器,进入需要迁移的数据库目录,使用SCP命令向目标服务器拷贝数据库文件。

scp -r ./* root@192.168.1.16:/home/mysql/data/test/

  

2.迁移完成后重启数据库

docker restart mysql

  

打开Navicat发现目标数据库表为空

 

 

 

但是实际上是有表的,只是没有显示出来,

3.进入容器后,发现是文件的权限问题不对,直接复制后的文件权限属于root,mysql数据库所需要的权限属于mysql,修改下文件权限

chown -R mysql:mysql .

  

修改完成查看文件权限已经修改位mysql

4.在Navicat导入表

alter table sys_logging import tablespace;

  

导入一张表进行测试,查看Navicat发现表已经恢复,如果是多张表需要多次导入,表的数据量多可能需要一定的时间才会导入完成,至此问题解决。

 

本文参考链接:

https://cloud.tencent.com/developer/article/1482804

https://www.cnblogs.com/yhnet/articles/16607408.html

如果还是没有显示表。尝试复制下原来mysql安装目录data里的 ibdata1;

并修改下文件权限。

 

posted @ 2022-11-28 10:19  看不见的黑夜  阅读(2852)  评论(0)    收藏  举报