微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我可以创建一个钩子或以其他方式对 CloudSQL 只读副本进行响应吗?

如何解决我可以创建一个钩子或以其他方式对 CloudSQL 只读副本进行响应吗?

我有一个带有谷歌 Cloudsql Postgres 实例的实时生产系统。该应用程序将很快进行长期运行的数据库架构修改,以适应业务运营方式的变化。我们有一个部署计划,允许业务在架构更改期间继续运营,这实际上会暂停复制到我们的只读副本,并将 API 请求排队,这些请求会在架构更改完成后改变数据库以进行重播。部署完成后,最后一步是取消暂停复制。但是,当只读副本正在追赶时,架构更改将锁定表,从而导致大量失败的读取请求。因此,在我们取消暂停读取复制之前,我们要将所有 API 数据库查询转移到刚刚完成架构更改的主实例。到目前为止一切顺利,但我找不到一种方法来以编程方式判断只读副本何时完成追赶,因此我们可以将我们的数据库查询拆分为写入到主实例和读取到副本。

是否有我们的应用程序可以订阅的 PubSub 主题或指标流,它们会在复制赶上时触发吗?我也很高兴报告应用程序可以接收的复制延迟事务计数(或时间),并且当跟踪平均值低于阈值时,它会再次切换到从副本读取。最不理想但仍然可行的选项是持续轮询 API 或指标流。

我知道我可以通过查询副本数据库本身的复制状态来直接做到这一点,但这意味着我们必须在我们的应用程序中实现自定义流量定向。目前我们使用的框架允许我们在配置中路由数据库流量。我知道应该有 Cloudsql 提供的指标,但我找不到它们。

解决方法

我知道它不能完全回答您的问题,但也许您可以使用它。似乎您可能对 Cloud Monitoring 和指标感兴趣:

database/mysql/replication/seconds_behind_master

根据reference,它反映了副本落后于主副本的滞后。

那个或 database/replication/replica_lag 应该可以工作。我不认为你可以通过 pub/sub 登上这个。无论如何,您应该查看参考,因为它包含所有指标。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。