【发布时间】:2021-02-26 12:53:47
【问题描述】:
我有一个带有 google CloudSQL Postgres 实例的实时生产系统。该应用程序将很快进行长期运行的数据库模式修改,以适应业务运营方式的变化。我们制定了一个部署计划,允许业务在架构更改期间继续运营,这实质上会暂停复制到我们的只读副本,并排队 API 请求,这些请求会在架构更改完成后对数据库进行重放。部署完成后,最后一步是取消暂停复制。但是,当只读副本赶上来时,架构更改将锁定表,从而导致许多失败的读取请求。因此,在我们取消暂停读取复制之前,我们将所有 API 数据库查询转移到刚刚完成模式更改的主实例。到目前为止一切都很好,但我找不到以编程方式判断只读副本何时赶上的方法,因此我们可以将数据库查询拆分为写入主实例和读取副本。
是否存在我们的应用程序可以订阅的 PubSub 主题或指标流,当复制赶上时会触发它们?我也会对报告应用程序可以接收的复制滞后事务计数(或时间)的东西感到满意,并且当追踪平均值低于阈值时,它会再次切换到从副本读取。最不理想但仍然可以的选项是持续轮询 API 或指标流。
我知道我可以通过查询副本数据库本身的复制状态来直接做到这一点,但这意味着我们必须在我们的应用程序中实现自定义流量定向。目前我们使用的框架允许我们在配置中路由数据库流量。我知道 CloudSQL 应该有可用的指标,但我找不到它们。
【问题讨论】:
标签: google-cloud-platform monitoring google-cloud-sql database-replication