实时迁移 如何确保业务数据库的全部业务已经停止 业务切换时可通过如下方法确保业务数据库的全部业务已经停止: 步骤 1 在源数据库端执行如下语句,查看当前是否还存在有业务连接。 show processlist; 图 查看是否存在业务连接 步骤 2 可选: 如果源数据库有业务连接,则通过结果中Host列的值来查找对应的业务进程并将其停止。 步骤 3 在源库执行如下语句,查看binlog位置并记录该值(file列取值:position列取值 ),此处将该值记为ckpt1。 show master status; 图 查看binlog位置 步骤 4 等待30s以上,在源库执行如下语句,查看binlog位置并记录该值(file列取值:position列取值 ),此处将该值记为ckpt2。ckpt1ckpt2时,表示源数据库业务已基本停写。 show master status; 使用定时启动任务失败,迁移日志提示can not get agency token 使用定时启动任务功能时,如果使用的是子账号,需要使用“账户委托”,否则任务启动失败,迁移日志报:can not get agency token。 解决方案 目前针对该情况,分别提供如下解决方案: 方法一:使用主账号重新创建任务,启动方式选择“定时启动”。 方法二:使用主账号在子账号所在的用户组添加Security Administrator权限后,重新创建任务,启动方式选择“定时启动”。 方法三:重新创建任务,启动方式选择“立即启动”。 RDS for MySQL不支持MyISAM引擎表,迁移时MyISAM如何处理 基于以下原因,RDS for MySQL目前不支持MyISAM引擎。 MyISAM引擎表不支持事务,仅支持表级别锁,导致读写操作相互冲突。 MyISAM对数据完整性的保护存在缺陷,且这些缺陷会导致数据库数据的损坏甚至丢失。 MyISAM在出现数据损害情况下,很多都需要手动修复,无法通过产品服务提供的恢复功能进行数据恢复。 MyISAM向InnoDB的迁移透明,大多数情况不需要改动建表的代码,云数据库自动转换InnoDB即可完成迁移。 DRS在迁移过程中,会自动将MyISAM转换为InnoDB。针对MyISAM引擎表不支持事务这一特点,为了确保MyISAM表的数据一致性, DRS会借助主键来实现最终数据的一致。如果需要迁移没有主键的MyISAM表,建议选择无业务期启动迁移任务,以确保数据的一致性。