通过AWS DMS将Amazon RDS MySQL 5.6迁移到Amazon Aurora MySQL 5.7的用户迁移方案咨询
最优零停机解决方案
方案核心逻辑
依托RDS MySQL转Aurora只读副本能力,配合用户权限增量同步,全程无业务停机,仅最后切换流量时有秒级闪断。
- 第一步:先给源RDS MySQL实例创建Aurora只读副本,等待副本同步延迟降至秒级以内。这个过程源库完全对外提供服务,不需要停机。
- 第二步:在副本完成基础数据同步后,手动导出源库的用户、权限数据:
执行命令导出用户及权限:mysql -u root -p -N -B -e "SELECT CONCAT('SHOW GRANTS FOR ''', user, '''@''', host, ''';') FROM mysql.user WHERE user NOT IN ('mysql.sys', 'rdsadmin', 'rdsrepladmin')" | mysql -u root -p | sed 's/$/;/g' > user_grants.sql
注意过滤掉RDS内置的系统账号,避免后续导入报错。 - 第三步:将导出的权限脚本在Aurora副本端执行导入,之后验证所有业务账号的权限是否和源库一致。
- 第四步:待只读副本的同步延迟保持在1s以内时,暂停源库的写入操作(仅需暂停数秒),确认最后一笔数据同步到Aurora后,将Aurora副本提升为独立集群,修改业务侧的数据库连接配置指向新集群,恢复业务写入即可。
- 第五步:如果需要后续持续同步权限,可在源库配置触发器,监控mysql.user、mysql.db等权限表的变更,将变更语句实时同步到目标Aurora集群,全程无需停机。
备选短停机方案
如果已经通过DMS完成了主体数据迁移,不想再重新搭建只读副本,可采用如下方案,停机时间不超过5分钟:
- 先在业务低峰期预导出一次全量用户权限,导入到目标Aurora集群,验证可用性。
- 正式切换前,再次导出源库最新的用户权限,和预导出的版本做对比,仅导入增量变更的权限数据,确认无误后切换流量即可。
注意事项:导出用户权限时不要直接导出mysql库的物理表数据,跨版本迁移时可能存在表结构不一致的问题,用SHOW GRANTS导出逻辑语句兼容性最高。
内容的提问来源于stack exchange,提问作者jarral rajput
相关产品推荐
相关产品推荐

