我们目前有一个AWS Aurora Master复制到本地MySQL从站。
我们希望有一个过程将MySQL从服务器提升为主服务器,并将Aurora主服务器降级为从服务器。
如果我们使用的是MySQL主服务器和MySQL从服务器,则过程将是:
- 防止写入主机(带有读取锁定的FLUSH本地表)
- 确保从属设备与主设备保持最新状态
- 记下binlog文件/位置
- 停止从属服务器上的复制,然后告诉所有客户端(而不是旧的主服务器)连接到该服务
- 重新启动旧的主服务器(这样就可以不执行任何客户端连接,并且可以在执行读取锁定后不执行任何查询),并使用CHANGE MASTER从指定的binlog文件/位置进行复制。
但是,使用Aurora主服务器和MySQL从服务器:
- 无法执行第1步:即使对于root用户,“带有读取锁的冲洗本地表”也被拒绝。
- 第5步不可行:停止Aurora需要几分钟,我们必须(并且可以)在一分钟之内使用MySQL主服务器和MySQL从服务器执行升级。
我们考虑为每个单独的表使用“ LOCK TABLES”,但是该锁将传播到从属服务器(不理想!),并且一旦释放该锁,便会执行任何其他客户端查询。
我们现在正在考虑阻止与Aurora的所有新连接,并终止任何活动的连接/运行中的查询(并让我们的应用程序处理这些失败),并且实际上不执行任何读取锁定。
所以我们的问题是:
- 是否有办法在AWS Aurora(MySQL)中运行“带读取锁定的本地表”?
- 有什么方法可以在MySQL DB上运行“ LOCK TABLES”,但是可以阻止将锁写入二进制日志/复制到从属服务器?
- 阻止所有与Aurora的新连接(使用SG更新)并杀死所有活动的Aurora连接(除了rdsadmin进行的那些我们认为不应杀死的连接)会带来什么风险?
- 我们应该采用哪种/更好的促销方式?