买了个腾讯云的云MYSQL数据库,业务不断发展,数据库上塞的项目越来越多了,性能逐渐顶不住,但是提配又太贵,刚好有台Windows系统的CVM云服务器,就想着在上面装个MYSQL数据库,把云数据库里面没那么重要的项目库迁过来。

看起来没什么难度,实际做起来还是有不少细节没有考虑到,折腾了三天,在这分享下整个过程。

几个特殊点:

1.有个项目数据库里有存放图片base64格式数据,数据长度很长,无法直接通过navicat进行传输;

2.云数据库仅内网可访问,且由于线上正在使用,无法关停操作;

首先想到几个方案:

1.在云服务器上,装个navicat,分别连接云数据库和本地数据库,直接数据传输,但是失败了,有个库里面数据长度比较大。

2.在云数据库上,把data文件直接搞下来,拷贝到服务器的数据库data目录中,但是由于云数据库只能内网访问,且无法关停,实际上只能在腾讯云控制台下载数据库备份文件(.xb文件)

3.通过mysql命令行操作转移

第一个方案折腾了下直接pass掉,数据丢失严重;第二个方案,.xb文件的提取仅支持在linux系统的服务器下通过xb工具操作,我的服务器是windows,也pass了;

就剩下第三个方案了,也就是mysql命令行操作转移,参考腾讯云的操作文档:云数据库 MySQL 离线迁移数据-操作指南-文档中心-腾讯云

简单的导出导入操作,实际上操作却不顺利,导出的话参考MySQL :: MySQL 5.6 Reference Manual :: 4.5.4 mysqldump — A Database Backup Program

mysqldump -h 原主机地址 -P 端口 -u 用户名 -p 密码 --databases 数据库名 > C:/data.sql

一步到位了,sql文件导出成功,但是在目标数据库导入就不行了,

第一个报错:@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_MODE = ON

这个原因是原数据库开了gtid,需要在导出语句上加:--set-gtid-purged=OFF(看到网上一大堆文章写的是ON,基本都是互抄也不知道怎么想的),导出时把导出脚本里的gtid关闭,接着在导入语句上加个参数:-f。

于是导出命令改为:mysqldump -h 主机地址 -P 端口 -u 用户名 -p 密码 --set-gtid-purged=OFF --databases 数据库名 > C:/data.sql ,重新导出一份。然后导入命令:mysql -u  用户名 -p 密码 -f < C:/data.sql。

第二个报错:ERROR at line : Unknown command ‘\‘‘.

编码规则的问题,也是找了好几个办法尝试,包括修改character变量等,依旧不行,最终解决是在导入命令上加了一句: --default-character-set=utf8mb4 搞定,于是导入命令改为:mysql -u  用户名 -p 密码 --default-character-set=utf8mb4 -f < C:/data.sql。

第三个报错:Error 2020: Got packet bigger than ‘max_allowed_packet’ bytes when dumping table

这个报错最终确定是导出的数据库里有字段值长度很长,且表里数据长度也很长,单个SQL修改的数据产生的binlog超过了max_allowed_packet参数。这个解决方法也简单,直接修改my.ini里面的max_allowed_packet参数,然后导出语句加:--max-allowed-packet=512M就行(这里的大小不一定要是512M)

mysqldump -h 主机地址 -P 端口 -u 用户名 -p 密码 --set-gtid-purged=OFF --max-allowed-packet=512M --databases 数据库名 > C:/data.sql

第四个报错:MySQL server has gone away

这个报错其实和第三个报错是一个问题,sql语句太长了,修改完max_allowed_packet还不够,最终我这边是修改了my.ini2个变量,提高超时时间:

wait_timeout=2880000

interactive_timeout = 2880000

第五个报错:innodb_log_file_size大小不够,具体报错信息就不找了,总之就是innodb_log_file_size不够大,5.6版mysql的默认是48M,之前版本是5M,具体概念参考:MySQL :: MySQL 5.6 Reference Manual :: 14.8.1 InnoDB Startup Configuration

用命令改是不行的,这个参数是只读权限的,好在5.6和5.6以后的mysql,可以直接在my.ini里面修改这个参数值,我改成256M了,innodb_log_file_size=256M。

然后就可以成功导入导出了,完整的数据库迁移。

数据库导出语句:

mysqldump -h 主机地址 -P 端口 -u 用户名 -p 密码 --set-gtid-purged=OFF --max-allowed-packet=512M --databases 数据库名 > C:/data.sql

数据库导入语句:

mysql -u  用户名 -p 密码 --default-character-set=utf8mb4 -f < C:/data.sql

注意:1.my.ini文件路径不要搞错了,我在改配置的过程中就改错了,搞半天参数不生效,吐血。

2.在修改配置文件前关闭mysql服务,修改完后重启

腾讯云mysql数据库迁移至CVM自建数据库相关推荐

  1. 远程连接腾讯云MySQL数据库

    远程连接腾讯云MySQL数据库 默认情况下,Centos系统的Mysql数据库是不允许被远程访问的 所以我们需要开启 输入mysql -uroot -p,使用Mysql 使用mysql数据库,Mysq ...

  2. 如何选择及管理腾讯云 MySQL 数据库

    如何选择及管理腾讯云 MySQL 数据库?有了腾讯云计算作为基础,我们可以把这些复杂的底层操作交给云计算去完成,而我们只要集中精力去实现业务就可以了. 先去完成腾讯云个人账号实名认证,才能选择云数据库 ...

  3. 大学生如何白嫖并使用腾讯云mysql云数据库

    大学生如何白嫖并使用腾讯云mysql数据库 一.注册腾讯云账号 二.进行高校学生认证(非高校用户请略过) 1.进行云+校园的认证 2.进行腾讯云高校俱乐部学生认证 三.申请学生云数据库(非高校用户请略 ...

  4. MySQL与CVM自建数据库优势_UCloud云数据库MySQL产品优势及与自建数据库对比

    前文,我们了解过UCloudy优刻得云数据库活动<云数据库有什么用?UCloud海外MySQL云数据库促销最低5折>,以及产品介绍<什么是云数据库?云数据库机型版本和产品架构介绍&g ...

  5. 腾讯云 + MySQL

    腾讯云 + MySQL 作为初学者,难免遇到 mysql 安装的各种问题,为了快速的进入学习状态.建议直接买(不会装就去买,不丢人:不懂就去问:写不来,就百度!). 声明: 0.价格:36元/年 1. ...

  6. 腾讯云mysql服务cpu毛刺问题

    腾讯云mysql服务,解决cpu毛刺问题. 有些sql语句没有使用索引,执行全表扫描,但是因为mysql性能很好,查询返回速度也很快,所以没有达到慢查询的阈值,在慢查询监控中看不到,但是会产生cpu毛 ...

  7. UCloud云数据库MySQL产品优势及与自建数据库对比

    UCloud云数据库MySQL产品优势及与自建数据库对比 前文,我们了解过UCloudy优刻得云数据库活动<云数据库有什么用?UCloud海外MySQL云数据库促销最低5折>,以及产品介绍 ...

  8. EF mysql 数据迁移_EF Code First Migrations数据库迁移

    1.EF Code First创建数据库 新建控制台应用程序Portal,通过程序包管理器控制台添加EntityFramework. 在程序包管理器控制台中执行以下语句,安装EntityFramewo ...

  9. 腾讯云 mysql 数据库名_腾讯云数据库MySQL如何选择配置

    MySQL实例配置最佳实践概述 该部分主要从[MySQL RDS 套餐选择](#MySQL RDS 套餐选择最佳实践)和MySQL数据库参数设置两个方面来为用户提供一些套餐选择和参数配置建议,帮助用户 ...

最新文章

  1. 源码安装、rpm安装 图
  2. golang go get命令 一键获取代码、编译并安装
  3. 【Java】Java中的异常处理:何时抛出异常,何时捕获异常?
  4. 彻底理解JVM常考题之分级引用模型
  5. JSR303常见参数
  6. Google Home其实是个错误
  7. 医库软件-珍立拍 成功晋级黑马大赛总决赛
  8. 有限元法 matlab,MATLAB有限元分析与应用.pdf
  9. 2019年任正非给全体华为员工的信
  10. EXCEL文件转换PDF文件
  11. 什么是实人认证?需要用到哪些api接口
  12. java(jdk 1.8 64位)连接中控考勤机
  13. 原来Python自带了数据库,用起来真方便
  14. php jwt设置有效期,07-如何设置JWT的过期时间
  15. 邬贺铨院士:5G技术影响智联网的关键点
  16. Windows+CPU only+VS2013安装caffe以及配置Python接口
  17. 阅读笔记——软件工程的瀑布、教堂和集市
  18. 抖音如何查看访客记录,丨国仁网络
  19. 以枯草芽孢杆菌孢子制造出新冠口服疫苗,香港科研团队重大生物技术突破
  20. 这 25 个开源机器学习项目,一般人我不告诉 Ta

热门文章

  1. 网络推广团队介绍3个网站文章的图片优化技巧!
  2. JSONArray遍历
  3. HashMap实现原理深入理解(精华)
  4. java 获取permgen_java permgen内存泄漏问题处理
  5. 请给我写信——教你使用简洁漂亮的网易邮件接口
  6. 数智洞见 | 你买基金了吗?聊聊标签画像在基金行业的应用
  7. Structure-Preserving Super Resolution with Gradient Guidance 译文SPSR
  8. Excel基础—文件菜单之设置信息
  9. 又是新的一年,做一个新的新年计划!
  10. 邻接表的实现(有向邻接表)、(无向邻接表),基于C++