![使用 AWS Blue/Green 部署,如何修改暂存数据库?](https://linux22.com/image/784714/%E4%BD%BF%E7%94%A8%20AWS%20Blue%2FGreen%20%E9%83%A8%E7%BD%B2%EF%BC%8C%E5%A6%82%E4%BD%95%E4%BF%AE%E6%94%B9%E6%9A%82%E5%AD%98%E6%95%B0%E6%8D%AE%E5%BA%93%EF%BC%9F.png)
AWS 推出了针对 RDS 的蓝/绿部署功能,允许您创建与生产(蓝色)数据库并行的暂存(绿色)数据库。他们的文档明确指出,您可以进行更改并进行测试,但是:
- 默认情况下是只读的
- 它有复制功能,将绿色与蓝色同步
- 我无法创建超级用户来禁用只读模式或禁用复制。
我理解他们为什么默认使用那些,更改可能会搞乱复制,如果没有复制,您将丢失数据,除非您手动复制数据的方式与您对绿色所做的任何更改兼容。我愿意管理这一点,但实际上无法弄清楚如何修改数据库!没有超级用户我无法运行:
STOP REPLICA;
set GLOBAL read_only = false;
显然,AWS RDS 不允许超级用户,并且无法在控制台中禁用这两者。
我遗漏了什么?绿色/蓝色是否仅允许您升级 MySQL 版本?这似乎是一个很大的限制,并没有在任何地方明确说明。
答案1
我可以确认绿色部署主端点默认是只读的。
如果您的用例要求您进行写入操作或架构更改,则需要将新的 DB 参数组应用到主实例,并将read_only
参数设置为0
。
(该read_only
参数是动态参数,因此应用时无需重新启动。)
以下是应用新参数组的一些常规步骤:
- 创建一个新的参数组或克隆现有的参数组。
- 创建参数组后,修改参数
read_only
并将值从默认值设置{TrueIfReplica}
为0
。 - 选择绿色部署主实例,然后通过附加配置部分从下拉菜单中将数据库参数组修改为新组。
- 数据库参数组更新完成后,在计划修改中选择“立即应用”,点击修改数据库实例。
确认:
MySQL [(none)]> CREATE DATABASE menagerie;
Query OK, 1 row affected (0.148 sec)
MySQL [(none)]> show variables where variable_name='innodb_read_only';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| innodb_read_only | OFF |
+------------------+-------+