存档

2016年5月 的存档

阿里云ESC本地数据库迁移至RDS数据服务过程总结

2016年5月14日 2 条评论

阿里云ESC本地数据库迁移至RDS数据服务过程总结:
简单说分为以下三步:
1、购买RDS服务,创建数据库账号,创建数据库,(这里的RDS容量请至少为你数据库占用空间的2倍多一点;下面会解释为什么);
2、在本地数据库中创建迁移帐号,给迁移帐号授权,开启本地数据库的 binlog;
3、创建数据迁移任务(就是购买数据传输服务),付费!
4、配置迁移信息:填写本地和RDS数据信息,开始迁移,等待完成;
基本思路就是这样,详细教程可以参考阿里云官方教程https://help.aliyun.com/document_detail/26132.html这里就不复制粘贴了。

主要记录一下遇到的问题:
1、错误1:错误:获取迁移结构失败,原因[连接超时,请检查您的防火墙设置;
这个问题,需要本地通过公网或者通过第三方工具测试连接服务器的3306端口,如果不能连接,也是不行的,注意检查一下端口监听;主要还是防火墙的问题,我的3306在防火墙禁止外网访问,需要开通一下,用到下面两个命令:
将所有iptables以序号标记显示,执行命令查看3306的序号:
iptables -L -n –line-numbers
比如要删除INPUT里3306的规则的序号为8,执行:
iptables -D INPUT 8
#允许访问3306端口
iptables -A INPUT -p tcp –dport 3306 -j ACCEPT
这里我没有保存规则,因为service iptables save 保存不了啊啊啊啊,CentOS7.0的貌似改了防火墙的命令还是什么的,反正暂时3306是可以外网访问了;重启之后访问不了也无所谓,本地的mysql在转移完数据之后还是要停掉的。
2、错误2:请先到RDS控制台的数据库管理页面中,创建满足rds规范的数据库 ,将读写权限赋给迁;
在RDS创建数据库的时候,需要与本地ESC准备迁移的数据库名称一致,且数据库名只能以字母开头,否则无法完成迁移;我的源数据库名是数字开头的,还修改了一下才可以;
3、错误3:源库binlog format 不是row
这个是比较折腾我的,本地数据库的binlog问题,官方教程的配置参数binlog_format=row,但是我用的lnmp环境默认是binlog_format=mixed;按照官方给的配置修改为binlog_format=row;mysql就会启动不了,恢复binlog_format=mixed;之后可以正常启动mysql;
后来看到官方有个检测工具提示让直接在mysql中执行set global binlog_format=ROW;然后就好了,说实话没理解什么原因,反正就能用了;

当看到开始转移的时候,还是很激动的,给老廖发了成功开始的截图,因为这几天都是他一直不厌其烦的回答我各种问题,感谢老廖;

阿里云RDS使用DTS数据迁移

阿里云RDS使用DTS数据迁移


数据大概5个G,给老廖发第一个截图的时候进度是9%,20分钟之后就60%了,还是不错的。
阿里云RDS数据迁移过程

阿里云RDS数据迁移过程


然后增量备份的时候出问题了,因为我当时买的是RDS容量是10G,以为可以放下5G多的数据,但是当DTS数据完成结构迁移、全量迁移之后,系统产生了备份,导致我的数据库占用空间为11.09G,然后RDS数据库就被锁死导致无法完成增量备份。所以在开始时候建议要使用这个在线迁移功能的,RDS容量请至少为你数据库占用空间的2倍多一点。

遗留问题:binlog_format=row为什么启动不了mysql?service iptables save在Centos7中咋就不能用了呢?增量备份时候被锁死了,然后升级了容量也没有自动继续,不知道啥原因?