注意:以下文档只适用于TOP接口,请谨慎使用!
将您的MySQL数据库迁移至云数据库有两种方案。一种是利用MySQLdump工具将数据导入导出;第二种是利用我们提供的MySQL迁移工具进行迁移。
该方案优点是简单,容易手上;缺点是停机时间较长。因此它适用于数据量不大,或者允许停机的时间较长,并且在这个时间范围内能够完成。
由于RDS提供的关系数据库服务与原生的数据库服务是完全兼容的,所以对于用户来说,从原有数据库迁移到RDS数据的过程,与从一个mysql服务器迁移到另外一台mysql服务器的过程基本类似。具体的迁移流程如下:
1.开通云服务器服务。
2.开通RDS服务,如果开通成功,会返回给用户连接地址和端口,比如example.mysql.aliyun.com:3306
3.先停止业务,使用MySQLdump的数据导出工具,将原有数据库数据导出为数据文件。例如:
mysqldump -h cloudcc.mysql.aliyun.com -u user_name -p --opt --default-character-set=utf8 --triggers --hex-blob db_name > /tmp/db_name.sql
其中user_name以您真实的数据库用户代替
db_name以您真实的数据库名代替。 /tmp/db_name.sql是文件名,由您自己随意填写。
4.将数据文件使用ftp工具上传到已经购买的云服务器中。
5.远程登录到云服务器,将刚才上传的数据文件导入到example.mysql.aliyun.com:3306中。例如:
mysql -h cloudcc.mysql.aliyun.com -u user_name -p db_name < /tmp/db_name.sql
数据迁移完毕,可以对RDS正常使用。用户可使用数据库客户端工具(如MySQL-Front)或第三方数据库管理工具(如phpmyadmin)以及程序的方式,通过域名和端口号连接数据库,在输入正确的用户名和密码后即可登陆DB进行操作和开发。
这个迁移工具是我们自己开发的工具。它的优点是迁移过程停业务的时间较短,缺点是相对复杂。它适用于数据量大,或者不想长时间停止业务。
本工具提供以下功能或特征:
1.本工具支持MySQL 5.0 5.1数据迁移
2.本工具提供Row模式及Statement模式的迁移支持
3.可以匹配数据库,用以选择需要迁移的数据库列表
4.可以提供不匹配数据库列表,用以过滤不需要同步的数据库
5.提供基于中间层的数据迁移方案,本工具必须部署在可以访问用户数据库及RDS数据库的Linux服务器上,实现数据同步
6.本工具支持断点续迁功能,当程序或主机异常退出后,可继续打开迁移工具,继续断点迁移
7.支持业务快速切换至RDS
8.对于任何错误或提示信息,将被打印至变量tmpdir下migrate.log文件中
9.可以查询migrate.log得到差异量及是否已经同步完成
10.通过查询migrate.log,确定是否同步完成,可以开始切换业务至RDS
11.支持重复全量迁移(重复全量迁移将会覆盖早期所有迁移数据)
本工具有以下限制:
1.本工具必须部署在可以访问用户数据库及RDS数据库的Linux服务器上,实现数据同步
2.对于5.1.5以下版本迁移,跨库更新(插入,删除,更新统一称为更新),且更新对象不在MATCH RULES或存在于IGNORE RULES中时,该事务或语句同步将以错误日志形式输出到配置文件中的tmpdir变量所指向的目录中migrate.log文件中,且迁移程序将继续执行
3.用户MySQL数据库必须设置binlog(即log_bin=on),并且尽可能将binlog模式设置为row模式(即binlog_format=row)。
4.仅支持5.0及5.1,5.5 没有正式迁移支持,但用户可以尝试迁移
5.实现全量迁移,MATCH RULES中指定的数据库,将导致RDS数据库被覆盖
6.对于MyISAM表迁移,由于MyISAM不支持事务,迁移过程中可能会出现表损坏,建议用户将所有表转换成Innodb,然后迁移
7.不提供一致性校验,用户需要确认迁移过程中是否有异常,可通过查看migrate.log查找出问题
8.迁移服务器必须为Linux,且满足运行工具包中所有工具所需要的系统环境
9.用户端迁移帐号必须支持锁表权限,且有数据Load权限,复制账户权限
10.用户必须实现在RDS中建立好需要迁移的数据库名,并为数据库授权
11.本工具由一系列工具组成将在迁移服务器上部署迁移环境
12.全量迁移过程中,会对MyISAM表进行锁定,锁定期间,该表不可访问,建议用户将所有MyISAM表转换为Innodb引擎!
13.迁移过程中,将在迁移服务器产生零时文件,请务必保证迁移服务器有足够的空间容纳全量迁移(要大于全量数据大小)
使用方法
1.下解并解压工具,下载地址:http://dl.open.taobao.com/RDS MySQL Migrate.zip
2.配置解压目录下面的RDS.conf配置文件,参见配置文件解释
3.执行sh RDS.sh -i & 重复全量迁移,并继续增量迁移
4.执行sh RDS.sh & 正常迁移,如果用户没有过全量迁移,会自动做全量迁移,并增量迁移
5.判断数据同步是否已经OK,如果migrate.log中最后出现“Already sync up successfully , sleep 300 seconds”这样的信息,表示同步已经完成(可以tail –f migrate.log查看)
6.数据同步已完成后,请停止业务,等待(5分钟左右)migrate.log中再次出现“Already sync up successfully , sleep 300 seconds” (可以tail –f migrate.log查看)
7.切换应用程至RDS数据库
配置文件解释
所有包含don't edit this line 信息行,请不要删除或清理
### MATCH RULES: don't edit this line ###
# Add match rules if you want to use the match filter, and don't set rule for INGORE any more
# match rules for database level, one databas for each line, such as:
#product_saler
ItemCenter
#test
mytestdb
此处添加需要迁移的数据库,每个数据库一行
### IGNORE RULES: don't edit this line ###
# Add ignore rules if you want to use the ignore filter, and don't set rule for MATCH any more
# ignore rules for database level, one databas for each line, such as:
#test
#mysql
#sbtest
此处添加不需要同步的数据库,每个数据库一行
### SOURCE DB CONNECTION INFORMATION: don't edit this line ###
s_host=""
s_user=""
s_pass=""
s_port=""
此处填写用户数据库信息,包括数据库地址,用户名,密码,端口
### DESTINATION DB CONNECTION INFORMATIO: don't edit this line ###
d_host=""
d_user=""
d_pass=""
d_port=""
此处填写RDS信息,包括数据库地址,用户名,密码,端口
### TEMP DIR FOR TRANSFER DATA: don't edit this line ###
tmpdir="/var/tmp"
此处指定迁移临时目录位置,默认为/var/tmp,migrate.log文件位于该目录,请务必保证该目录有足够空间(要大于全量数据大小)。