Mysql 直接拷贝数据库文件导致表不显示的问题
前言:
最近有一个需求,需要迁移数据库中的其中一个库,需要迁移的那个数据库占用了700多G的空间,所以采用直接拷贝数据库文件的方式,拷贝到另一台服务器后发现表不显示,记录本次问题。
注:两个服务器版本需要一致,本次迁移数据库版本位Mysql 5.7.4,不一致可能会导致某种未知问题。
1.找到目标所在服务器,进入需要迁移的数据库目录,使用SCP命令向目标服务器拷贝数据库文件。
1 | scp -r ./* root@192.168.1.16:/home/mysql/data/test/ |
2.迁移完成后重启数据库
1 | docker restart mysql |
打开Navicat发现目标数据库表为空
但是实际上是有表的,只是没有显示出来,
3.进入容器后,发现是文件的权限问题不对,直接复制后的文件权限属于root,mysql数据库所需要的权限属于mysql,修改下文件权限
1 | chown -R mysql:mysql . |
修改完成查看文件权限已经修改位mysql
4.在Navicat导入表
1 | 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;
并修改下文件权限。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!