注意:以下文档只适用于TOP接口,请谨慎使用!

文档中心 > 聚石塔

MySQL数据迁移

更新时间:2015/09/18 访问次数:51162

将您的MySQL数据库迁移至云数据库有两种方案。一种是利用MySQLdump工具将数据导入导出;第二种是利用我们提供的MySQL迁移工具进行迁移。

采用MySQLdump工具迁移

该方案优点是简单,容易手上;缺点是停机时间较长。因此它适用于数据量不大,或者允许停机的时间较长,并且在这个时间范围内能够完成。

由于RDS提供的关系数据库服务与原生的数据库服务是完全兼容的,所以对于用户来说,从原有数据库迁移到RDS数据的过程,与从一个mysql服务器迁移到另外一台mysql服务器的过程基本类似。具体的迁移流程如下:

    1.开通云服务器服务。

    2.开通RDS服务,如果开通成功,会返回给用户连接地址和端口,比如example.mysql.aliyun.com3306

    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.com3306中。例如:

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.对于任何错误或提示信息,将被打印至变量tmpdirmigrate.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.05.15.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/tmpmigrate.log文件位于该目录,请务必保证该目录有足够空间(要大于全量数据大小)。

 

 

FAQ

关于此文档暂时还没有FAQ
返回
顶部