用于停止云 SQL 数据库的云计划程序
2022/11/12 2:23:56
本文主要是介绍用于停止云 SQL 数据库的云计划程序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
我们在 mkdev 拥有的应用程序之一是 Claimora 我们用它来跟踪时间。当我们想要部署Claimora时,我们有两个环境,暂存和生产,在每个环境中,我们都有一个Postgres数据库启动并运行。当我们不在环境中工作时,我们希望省钱,为此,我们将在工作时间结束时停止数据库。让我们看看我们能做什么。
为了能够在Google Cloud中调度某些内容,我们首先需要一个调度程序。此调度程序作业将向发布/订阅主题发送一条消息,告知需要执行的操作。在我们的例子中,我们要做的是停止或启动一个特定的数据库。此发布/订阅主题将调用云函数,并且停止或启动数据库的将是此云函数。
让我们从最后开始,从我们要停止或启动的数据库开始。正如您在屏幕上看到的那样,我们在Claimora中有一个被调用的数据库。我们已经启动并运行了这个数据库超过30天,大多数时候这个Postgres甚至不是真正需要的。claimora-database-staging
因此,应用我们的练习并遵循我们刚刚展示的场景,我们需要一个云函数。我们需要创建一个将调用的云函数。下一步是选择 pub/sub 作为触发器,并创建一个我们将调用的主题。sql-up-down
Europe-west1
database-up-down
如果我们单击下一步并选择使用 1.13 作为运行时,我们可以粘贴代码:
package p import ( "context" "encoding/json" "log" "golang.org/x/oauth2/google" sqladmin "google.golang.org/api/sqladmin/v1beta4" ) type PubSubMessage struct { Data []byte `json:"data"` } type MessagePayload struct { Instance string Project string Action string } func ProcessPubSub(ctx context.Context, m PubSubMessage) error { var psData MessagePayload err := json.Unmarshal(m.Data, &psData) if err != nil { log.Println(err) } log.Printf("Request received for Cloud SQL instance %s action: %s, %s", psData.Action, psData.Instance, psData.Project) hc, err := google.DefaultClient(ctx, sqladmin.CloudPlatformScope) if err != nil { return err } service, err := sqladmin.New(hc) if err != nil { return err } action := "UNDEFINED" switch psData.Action { case "start": action = "ALWAYS" case "stop": action = "NEVER" default: log.Fatal("No valid action provided.") } // See more examples at: // https://cloud.google.com/sql/docs/sql... rb := &sqladmin.DatabaseInstance{ Settings: &sqladmin.Settings{ ActivationPolicy: action, }, } resp, err := service.Instances.Patch(psData.Project, psData.Instance, rb).Context(ctx).Do() if err != nil { log.Fatal(err) } log.Printf("%#v\n", resp) return nil }
下一步是授予云函数权限,以便能够停止和启动数据库。为此,我们转到IAM,选择服务帐户并授予作为云SQL管理员的权限。claimora-staging@appspot.gserviceaccount.com
现在我们只需要测试我们的主题是否调用 step 函数并停止或启动数据库。为此,我们需要转到我们的发布/订阅主题,单击消息,然后发布一条消息,例如您可以在屏幕上看到的消息。
这篇关于用于停止云 SQL 数据库的云计划程序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27数据结构与算法面试题详解及练习
- 2024-12-27网络请求面试题详解与实战
- 2024-12-27数据结构和算法面试真题详解与实战教程
- 2024-12-27网络请求面试真题解析与实战教程
- 2024-12-27数据结构和算法大厂面试真题详解与实战指南
- 2024-12-27TS大厂面试真题解析与应对策略
- 2024-12-27TS大厂面试真题详解与解析
- 2024-12-27网站安全入门:如何识别和修复漏洞
- 2024-12-27SQL注入基础教程
- 2024-12-27初学者指南:理解和修复跨域漏洞