简体   繁体   中英

Create instance from backup on google cloud sql

I would have two questions related to cloud sql backups:

  1. Are backups removed together with instance or maybe they are left for some days?
  2. If no, is it possible to create new instance from backup of already gone instance?

I would expect it possible but looks like backups are only listable under the specific instance and there is no option to start new instance from existing backup.

Extracted from Google Cloud SQL - Backups and recovery

Restoring from a backup restores to the instance from which the backup was taken.

So the answer to (1) is they're gone and with regards to (2) if you didn't export a copy of the DB to your Cloud Storage, then No, you can't recover your deleted Cloud sQL instance content .

Regarding to (2): It's actually possible to recover them if you are quick enough. They should still be there, even when Google says they're deleted.

If you know the name of the deleted DB run the following command to check if they are still there

gcloud sql backups list --instance=deleted-db-name --project your-project-name

If you can see any results, you are lucky. Restore them ASAP!

gcloud sql backups restore <backup-ID> --restore-instance=new-db-from-scratch-name --project your-project

And that's it!

Further info: https://geko.cloud/gcp-cloud-sql-how-to-recover-an-accidentally-deleted-database/

I noticed a change in this behavior recently (July 28, 2022). Part of our application update process was to run an on-demand backup on the existing deployment, tear down our stack, create a new stack, and then populate the NEW database from the contents of the backup.

Until now, this worked perfectly.

However, as of today, I'm unable to restore from the backup since the original database ( dummy-db-19e2df4f ) was deleted when we destroyed the old stack. Obviously the workaround is to not delete our original database until the new one has been populated, but this apparent change in behavior was unexpected.

Since the backup is listed, it seems like there are some "mixed messages" below.

List the backups for my old instance:

$ gcloud sql backups list --instance=- | grep dummy-db-19e2df4f
1659019144744  2022-07-28T14:39:04.744+00:00  -      SUCCESSFUL  dummy-db-19e2df4f
1658959200000  2022-07-27T22:00:00.000+00:00  -      SUCCESSFUL  dummy-db-19e2df4f
1658872800000  2022-07-26T22:00:00.000+00:00  -      SUCCESSFUL  dummy-db-19e2df4f
1658786400000  2022-07-25T22:00:00.000+00:00  -      SUCCESSFUL  dummy-db-19e2df4f

Attempt a restore to a new instance (that is, replacing the contents of new-db-13d63593 with that of the backup/snapshot 1659019144744 ). Until now this worked :

$ gcloud sql backups restore 1659019144744 --restore-instance=new-db-13d63593
All current data on the instance will be lost when the backup is 
restored.

Do you want to continue (Y/n)?  y

ERROR: (gcloud.sql.backups.restore) HTTPError 400: Invalid request: Backup run does not exist..

(uh oh...)

Out of curiosity, ask it to describe the backup:

$ gcloud sql backups describe 1659019144744 --instance=dummy-db-19e2df4f
ERROR: (gcloud.sql.backups.describe) HTTPError 400: Invalid request: Invalid request since instance is deleted.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM