mysql大数据迁移

在使用Docker搭建环境时,分别创建多个容器,mysql,redis,web等。所有容器启动后发现web容器连接不上mysql容器,返回ERROR 2002。无论如何重建容器也不能解决,但如果只是重启mysql容器,web容器就可以连接上,不过数据库中缺少大量表,所以怀疑是sql文件过大导致Docker假死,连接失败。经尝试后发现的确是sql文件过大的原因,sql文件有6万4千多行,整个迁移过程大约20左右。

大sql文件的导入方法

  • 连接数据库
mysql -uroot -psecret -hmysqlhost 
  • 修改配置
set global net_buffer_length=1000000; --Set network buffer length to a large byte number
set global max_allowed_packet=1000000000; --Set maximum allowed packet size to a large byte number
set foreign_key_checks = 0; --Disable foreign key checking to avoid delays,errors and unwanted behaviour
  • 导入文件
use dbname;
source path/to/bak.sql;
  • 恢复配置
set foreign_key_checks = 1;
  • 可能遇见的问题与解决方法
Tablespace for table '`dbname`.`tablename`' exists. Please DISCARD the tablespace before IMPORT.
//导入到大概100个表左右时可能会出现ERROR,导入过程中断
//解决方案:删除mysql对应表缓存,一般位于/var/lib/mysql/数据库名/表名,移除他再执行剩下的迁移即可。
//对较大的迁移文件可分割为多个小文件后再迁移
新建一个all.sql
vim all.sql
在里面写入:
source 1.sql
source 2.sql
......
source 53.sql
source 54.sql
然后只要
mysql> source all.sql

少量数据快速迁移

mysql -uroot -psecret -hmysqlhost dbname < /path/to/bak.sql
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容