Restoring an instance

This page describes how to restore your instance from a backup.

For information, best practices, and requirements for restore operations, see Overview of restoring an instance.

Restoring an instance from a backup

You can use a backup to restore the same instance the backup was taken from, or you can use a backup to restore a different instance in the same project.

Restoring to the same instance

When you restore from a backup to the same instance, you return the data on that instance to its state when you took the backup. For information about restoring an instance, see General tips about performing a restore.

Console

  1. Go to the Cloud SQL Instances page in the Google Cloud Console.

    Go to the Cloud SQL Instances page

  2. If the target instance has any read replicas, use the more actions menu More actions icon. at the far right side to delete them.
  3. Click the instance you want to restore to open its Instance details page.
  4. Click the Backups tab.
  5. Find the backup you want to use and select Restore from its more actions menu More actions icon..
  6. In the Restore instance from backup dialog box, click OK to start the restore process.

    The default target instance is the same instance from which the backup was created.

    The restore backup dialog box.

  7. You can check the status of the restore operation by going to the Operations page of the instance.
  8. After the restore operation completes, recreate any replicas you deleted in the first step.

    You cannot reuse instance names for up to a week after an instance is deleted.

gcloud

  1. Describe the instance to see whether it has any replicas:
    gcloud sql instances describe [INSTANCE_NAME]
    

    Note any instances listed under replicaNames.

  2. Delete all replicas:
    gcloud sql instances delete [REPLICA_NAME]
    

    Repeat for all replicas.

  3. List the backups for the instance:
    gcloud sql backups list --instance [INSTANCE_NAME]
    
  4. Find the backup you want to use and record its ID value.
    Be sure to select a backup that is marked as `SUCCESSFUL`.
  5. Restore the instance from the specified backup:
    gcloud sql backups restore [BACKUP_ID] --restore-instance=[INSTANCE_NAME]
  6. After the restore operation completes, recreate any replicas you deleted in the first step.

    You cannot reuse instance names for up to a week after an instance is deleted.

REST

  1. List the backups for the instance to get the id of the backup you want to use.

    Before using any of the request data below, make the following replacements:

    • project-id: The project ID
    • instance-id: The instance ID

    HTTP method and URL:

    GET https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/backupRuns

    To send your request, expand one of these options:

    You should receive a JSON response similar to the following:

  2. Restore the instance from the backup.

    Before using any of the request data below, make the following replacements:

    • project-id: The project ID
    • instance-id: The instance ID
    • backup-id The backup ID

    HTTP method and URL:

    POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/restoreBackup

    Request JSON body:

    {
      "restoreBackupContext":
      {
        "backupRunId": "backup-id",
      }
    }
    

    To send your request, expand one of these options:

    You should receive a JSON response similar to the following:

  3. After the restore operation completes, recreate any replicas you deleted previously.

    You cannot reuse instance names for up to a week after an instance is deleted.

Restoring to a different instance

When you restore from a backup to a different instance, you update the data on the target instance to the state of the source instance when you took the backup. For more information, see General tips about performing a restore and Tips and requirements for restoring to a different instance.

Console

  1. Go to the Cloud SQL Instances page in the Google Cloud Console.

    Go to the Cloud SQL Instances page

  2. If the target instance has any read replicas, use the more actions menu More actions icon. on the far right side to delete them.
  3. Click the source instance to open its Instance details page and select the Backups tab.
  4. Find the backup you want to restore from and select Restore from the more actions menu More actions icon..
  5. In the Restore instance from backup dialog, select the Target instance and click OK.

    The restore backup dialog box with a different target selected.

  6. You can check the status of the restore operation by going to the Operations tab of the target instance.
  7. After the restore operation completes, recreate any replicas you deleted previously.

    You cannot reuse instance names for up to a week after an instance is deleted.

gcloud

  1. Describe the target instance to see whether it has any replicas:
    gcloud sql instances describe [TARGET_INSTANCE_NAME]
    

    Note any instances listed under replicaNames.

  2. Delete all replicas:
    gcloud sql instances delete [REPLICA_NAME]
    

    Repeat for each replica.

  3. List the backups for the source instance:
    gcloud sql backups list --instance [SOURCE_INSTANCE_NAME]
    
  4. Find the backup you want to use and record its ID value.
    Be sure to select a backup that is marked as `SUCCESSFUL`.
  5. Restore from the specified backup to the target instance:
    gcloud sql backups restore [BACKUP_ID] --restore-instance=[TARGET_INSTANCE_NAME] \
                                              --backup-instance=[SOURCE_INSTANCE_NAME]
        
  6. After the restore completes, recreate any replicas you deleted previously.

    You cannot reuse instance names for up to a week after an instance is deleted.

REST

  1. List all replicas for the target instance.

    Before using any of the request data below, make the following replacements:

    • project-id: The project ID
    • instance-id: The instance ID

    HTTP method and URL:

    GET https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id?fields=replicaNames

    To send your request, expand one of these options:

    You should receive a JSON response similar to the following:

  2. Delete all replicas.

    Before using any of the request data below, make the following replacements:

    • project-id: The project ID
    • replica-id: The replica ID

    HTTP method and URL:

    DELETE https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-id

    To send your request, expand one of these options:

    You should receive a JSON response similar to the following:

    Repeat for each replica.

  3. List the backups for the source instance to get the id of the backup you want to use.

    Before using any of the request data below, make the following replacements:

    • project-id: The project ID
    • instance-id: The instance ID

    HTTP method and URL:

    GET https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/backupRuns

    To send your request, expand one of these options:

    You should receive a JSON response similar to the following:

  4. Restore the target instance from the backup.

    Before using any of the request data below, make the following replacements:

    • project-id: The project ID
    • target-instance-id: The target instance ID
    • source-instance-id: The source instance ID
    • backup-id The backup ID

    HTTP method and URL:

    POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/target-instance-id/restoreBackup

    Request JSON body:

    {
      "restoreBackupContext":
      {
        "backupRunId": "backup-id",
        "instanceId": "source-instance-id"
      }
    }
    

    To send your request, expand one of these options:

    You should receive a JSON response similar to the following:

  5. After the restore operation completes, recreate any replicas you deleted previously.

    You cannot reuse instance names for up to a week after an instance is deleted.

Restoring to an instance in another project

You can use the project parameter to restore data to an instance in a different project than the one where the backup was taken. When using the project parameter, call restoreBackup in the project and on the instance you want to restore data to. When you restore from a backup to a different instance, you update the data on the target instance to the state of the source instance when you took the backup.

To restore data to an instance in a different project:

REST

To obtain the backupId, run the following.

Before using any of the request data below, make the following replacements:

  • project-id: The project ID
  • instance-id: The instance ID

HTTP method and URL:

GET https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/backupRuns

To send your request, expand one of these options:

You should receive a JSON response similar to the following:

Restore the backup to an instance in a different project:

Before using any of the request data below, make the following replacements:

  • source-project-id: The source project ID
  • target-project-id: The target project ID
  • target-instance-id: The target instance ID
  • source-instance-id: The source instance ID
  • backup-id The backup ID

HTTP method and URL:

POST https://www.googleapis.com/sql/v1beta4/projects/target-project-id/instances/target-instance-id/restoreBackup

Request JSON body:

{
  "restoreBackupContext":
  {
    "backupRunId": "backup-id",
    "project": "source-project-id",
    "instanceId": "source-instance-id"
  }
}

To send your request, expand one of these options:

You should receive a JSON response similar to the following:

For more information about the `project` property, see restoreBackup

What's next