【问题标题】:Can I create a hook or react in some other way to a CloudSQL read replica cathing up?我可以创建一个钩子或以其他方式对 Cloud SQL 只读副本赶上来做出反应吗?
【发布时间】:2021-02-26 12:53:47
【问题描述】:

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

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

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

【问题讨论】:

    标签: google-cloud-platform monitoring google-cloud-sql database-replication


    【解决方案1】:

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

    database/mysql/replication/seconds_behind_master

    根据reference,它反映了副本落后于master。

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

    【讨论】:

    • 谢谢! database/replication/replica_lag 正是我要找的。​​span>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-08
    • 2012-02-14
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多