【问题标题】:Google Cloud SQL instance always in Maintenance status & Binary logs issueGoogle Cloud SQL 实例始终处于维护状态和二进制日志问题
【发布时间】:2018-08-31 15:46:48
【问题描述】:

我有一些具有故障转移复制功能的 Google Cloud SQL MySQL 2nd Gen 5.7 实例。最近我注意到其中一个实例因存储过载而过载,并且由于某种原因未删除旧的二进制日志。 我尝试重新启动此实例,但它不会从 3 月 17 日开始。

在其他服务器上有二进制日志的正常进程:

问题服务器。 Binlogs 未清除且服务器无法启动,并且始终在 gcloud 控制台中进行维护。

我还创建了另一台具有相同配置的服务器,而不是永远不会清除的 binlog。我这里已经有 5326 个二进制日志,而在普通服务器上我有 1273 个二进制日志并且它们每天都在清除。

我对问题服务器的尝试: 1 - 从谷歌云平台前端删除它。响应:实例 ID 当前不可用。 2 - 使用 gcloud 命令重新启动它。响应:错误:(gcloud.sql.instances.restart)HTTPError 409:实例或操作未处于处理请求的适当状态。对我使用 gcloud 发送的任何其他命令的相同响应。

我也尝试使用expire_logs_days 选项来解决binlogs 配置的问题,但谷歌云sql 实例似乎不支持此选项。

【问题讨论】:

    标签: mysql google-cloud-platform google-cloud-sql


    【解决方案1】:

    经过 3 天的挖掘,我找到了解决方案。 Binlogs 必须在 7 天后自动清除。在 8 天内它必须清除 binlogs。对我来说它仍然没有被删除,并且存储量仍在攀升,但我相信它必须很快清除(我猜是今天)

    正如我所说 - SQL 实例始终处于维护状态,无法从 gcloud 控制台命令或前端中删除。但这很有趣,因为我仍然可以使用mysql -u root -p -h 123.123.123.123 之类的 mysql 命令连接到实例。所以,我只是连接到实例,删除了未使用的数据库(或者我们可以使用 mysqldump 来保存当前的实时数据库),然后我就删除了它。在 mysql 日志中(我为此使用 Stackdriver)我收到了很多这样的消息:2018-03-25T09:28:06.033206Z 25 [ERROR] Disk is full writing '/mysql/binlog/mysql-bin.034311' (Errcode: -255699248 - No space left on device). Waiting for someone to free space...。让我成为这个“某人”。

    当我删除数据库时,它会重新启动,然后再启动。中提琴。现在我们有了实时实例。现在我们可以删除它/恢复它的数据库/更改它的存储。

    【讨论】:

    • public docs 指定 Google Cloud SQL 将保留过去 7 次备份的日志。如果由于某种原因您的实例被困在维护中并且您最终无能为力,您可以寻求支持或创建Public Issue Tracker。在设置半同步复制时,慢速从属可能会影响主控的性能,因此您可以考虑使用与主控相同类型的实例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 2018-11-21
    相关资源
    最近更新 更多