Datenbanken werden über die in rest.Rest eingebettete Schnittstelle Databases bereitgestellt. Sie sind in den Plänen Standard, Pro und Enterprise verfügbar.
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()
api := rest.New(client)
Eine Datenbank erstellen
api.CreateDatabase(opts) stellt eine neue Datenbank aus einer squarecloud.DatabaseCreateOptions bereit.
created, err := api.CreateDatabase(squarecloud.DatabaseCreateOptions{
Name: "my-mongo",
Memory: 1024,
Type: squarecloud.DatabaseTypeMongo,
Version: "8",
})
if err != nil {
panic(err)
}
fmt.Println(created.ID)
fmt.Println(created.ConnectionURL) // ready to use — password already embedded
fmt.Println(created.Password) // shown once — store securely
fmt.Println(created.Certificate) // shown once — only for engines that issue a TLS cert
| Feld | Typ | Beschreibung |
|---|
Name | string | Anzeigename, 1–32 Zeichen |
Memory | int | Zugewiesener Speicher in MB |
Type | squarecloud.DatabaseType | Engine: DatabaseTypeMongo, DatabaseTypeMySQL, DatabaseTypeRedis oder DatabaseTypePostgres (Slugs mongo, mysql, redis, postgres) |
Version | string | Engine-Version |
Password (und Certificate, sofern zutreffend) erscheinen nur in der Erstellungsantwort und können später nicht wiederhergestellt werden — speichere sie jetzt. ConnectionURL kommt einsatzbereit mit eingebettetem Passwort.
Ein nicht unterstützter Typ schlägt mit INVALID_DATABASE_TYPE fehl; zu wenig Speicher für den Plan schlägt mit INSUFFICIENT_MEMORY fehl; ein Fehler während der Bereitstellung schlägt mit DATABASE_CREATION_FAILED fehl.
Deine Datenbanken auflisten
api.GetDatabases() listet jede Datenbank, die dir gehört, als kompakte squarecloud.UserDatabase-Deskriptoren auf:
dbs, err := api.GetDatabases()
if err != nil {
panic(err)
}
for _, db := range dbs {
fmt.Printf("%s (%s)\n", db.Name, db.ID)
}
Eine einzelne Datenbank abrufen
db, err := api.GetDatabase("abc123def456abc123def456")
if err != nil {
panic(err)
}
fmt.Println(db.ID, db.Name, db.Type, db.RAM, db.Cluster, db.CreatedAt)
Lebenszyklus
err := api.StartDatabase("abc123def456abc123def456")
if err != nil {
panic(err)
}
err = api.StopDatabase("abc123def456abc123def456")
Status und Metriken
Die Status- und Metrik-Endpoints der Datenbanken teilen dieselben Formen wie die der Anwendungen (es sind Typ-Aliase) — siehe Anwendungen verwalten für die Aufschlüsselung Feld für Feld.
status, err := api.GetDatabaseStatus("abc123def456abc123def456")
if err != nil {
panic(err)
}
fmt.Println(status.Status, status.CPU, status.RAM) // formatted strings
raw, err := api.GetDatabaseStatusRaw("abc123def456abc123def456") // numeric values
if err != nil {
panic(err)
}
metrics, err := api.GetDatabaseMetrics("abc123def456abc123def456")
if err != nil {
panic(err)
}
fmt.Println(len(metrics), "metric points (up to 288 over 24h)")
Zusammenfassender Status für jede Datenbank
list, err := api.GetDatabaseListStatus()
if err != nil {
panic(err)
}
for _, summary := range list {
fmt.Printf("%s → running=%v\n", summary.ID, summary.Running)
}
Aktualisieren
api.UpdateDatabase(dbID, opts) ändert den Anzeigenamen und/oder die Speicherzuweisung. Mindestens ein Feld muss angegeben werden.
err := api.UpdateDatabase("abc123def456abc123def456", squarecloud.DatabaseUpdateOptions{
Name: "primary-db",
RAM: 1024,
})
if err != nil {
panic(err)
}
Zugangsdaten
api.GetDatabaseCertificate(dbID) gibt das TLS-Zertifikat zurück (base64-kodiertes PEM):
cert, err := api.GetDatabaseCertificate("abc123def456abc123def456")
if err != nil {
panic(err)
}
fmt.Println("certificate length:", len(cert))
api.ResetDatabaseCredentials(dbID, reset) rotiert entweder das Passwort oder das Zertifikat, unter Verwendung der squarecloud.DatabaseReset*-Konstanten:
// Rotate the password — the new value is shown only once
result, err := api.ResetDatabaseCredentials("abc123def456abc123def456", squarecloud.DatabaseResetPassword)
if err != nil {
panic(err)
}
fmt.Println("new password:", result.Password)
// Rotate the certificate — fetch the new one via GetDatabaseCertificate
_, err = api.ResetDatabaseCredentials("abc123def456abc123def456", squarecloud.DatabaseResetCertificate)
Das neue Passwort wird nur in der Antwort des Passwort-Resets zurückgegeben und ein einziges Mal angezeigt — speichere es sofort.
Snapshots
Datenbank-Snapshots spiegeln die Snapshot-API der Anwendungen wider — siehe Snapshots.
snapshots, err := api.GetDatabaseSnapshots("abc123def456abc123def456")
if err != nil {
panic(err)
}
created, err := api.CreateDatabaseSnapshot("abc123def456abc123def456")
if err != nil {
panic(err)
}
fmt.Println("download URL:", created.URL)
Eine Datenbank löschen
Das Löschen einer Datenbank ist unwiderruflich. Stelle sicher, dass du einen aktuellen Snapshot hast, falls du die Daten wiederherstellen musst.
err := api.DeleteDatabase("abc123def456abc123def456")
if err != nil {
panic(err)
}