Home > RDS > 迁移到RDS–在线迁移

迁移到RDS–在线迁移

在用户的日常迁移中常常采用以下的方法来完成迁移(以MYSQL为例):

  1. 将用户数据库变为只读;
  2. 全量dump MySQL成文本;
  3. 将MySQL数据远程load到RDS;
  4. 将用户的数据库连接地址改为RDS提供的连接地址;

该方案比较简单,易于维持数据一致性,但当用户的数据量达到一个数量级别后(假设以50G数据为标准),逻辑迁移的速度已经明显的不能满足用户的要求,影响了所有用户的写入,并且时间过长。

那么如何能够做到对客户应用的透明,实现在线迁移喃?常用的手段可以通过日志同步的方法:

  1.  全量dump某个时间点之前的数据,并记录全量dump完成后数据库日志的位置;
  2. 将全量的备份load到RDS;
  3. 从刚才全量完成dump后的日志开始,通过解析日志为可执行的sql,远程load到RDS;
  4. 通过不断的应用log,使得RDS慢慢追上用户数据库;;
  5. 将用户的数据库设置为只读,继续apply日志到RDS,直到完全同步;
  6. 切用户应用到RDS,完成切换;

有了原理,就有了很行的方法,RDS开发了一种mysql的在线迁移工具,首先通过mydumper完成一次全量的备份,然后记录用户数据库binlog的位置,然后在通过rds的连接地址,使用myloader将备份数据load到RDS中,整个过程可以使用并发dump和load的方式完成;完成全量后,在通过mysqlbinlog将用户在全量备份后的日志位置开始进行binlog文件的解析,解析成为被数据库执行的语句,接着在远程连接到RDS,将这些数据load到RDS数据库中,这样一步步将RDS数据库追赶上用户数据库,用于可以将binlog的解析放在中间服务器上,对用户的数据库的影响会降低许多;

Categories: RDS Tags:
  1. No comments yet.
  1. No trackbacks yet.
You must be logged in to post a comment.