Skip to content

Latest commit

 

History

History
186 lines (155 loc) · 6.07 KB

terraform-use-restore-resource.md

File metadata and controls

186 lines (155 loc) · 6.07 KB
title summary
Use Restore Resource
Learn how to use restore resource.

Use Restore Resource

You can learn how to create a restore task with the tidbcloud_restore resource in this document. The restore task will create a restored cluster according to your backup.

Prerequisites

  • Get TiDB Cloud Terraform Provider.
  • The backup and restore feature is unavailable for Serverless Tier clusters. To use restore resources, make sure that you have created a Dedicated Tier cluster.

Create a restore task with the restore resource

After creating a backup of a cluster, you can restore the cluster by creating a restore task with the tidbcloud_restore resource.

Note:

You can only restore data from a smaller node size to the same or larger node size.

  1. Create a directory for the restore and enter it.

  2. Create a restore.tf file.

    For example:

    terraform {
     required_providers {
       tidbcloud = {
         source = "tidbcloud/tidbcloud"
         version = "~> 0.0.1"
       }
     }
     required_version = ">= 1.0.0"
    }
    
    provider "tidbcloud" {
     public_key = "fake_public_key"
     private_key = "fake_private_key"
    }
    resource "tidbcloud_restore" "example_restore" {
      project_id = tidbcloud_cluster.example_cluster.project_id
      backup_id  = tidbcloud_backup.example_backup.id
      name       = "restoreCluster"
      config = {
        root_password = "Your_root_password1."
        port          = 4000
        components = {
          tidb = {
            node_size : "8C16G"
            node_quantity : 2
          }
          tikv = {
            node_size : "8C32G"
            storage_size_gib : 500
            node_quantity : 6
          }
          tiflash = {
            node_size : "8C64G"
            storage_size_gib : 500
            node_quantity : 2
          }
        }
      }
    }
    
  3. Run the terraform apply command and type yes for confirmation:

    $ terraform apply
    tidbcloud_cluster.example_cluster: Refreshing state... [id=1379661944630234067]
    tidbcloud_backup.example_backup: Refreshing state... [id=1350048]
    
    Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
      + create
    
    Terraform will perform the following actions:
    
      # tidbcloud_restore.example_restore will be created
      + resource "tidbcloud_restore" "example_restore" {
          + backup_id        = "1350048"
          + cluster          = {
              + id     = (known after apply)
              + name   = (known after apply)
              + status = (known after apply)
            }
          + cluster_id       = (known after apply)
          + config           = {
              + components    = {
                  + tidb    = {
                      + node_quantity = 2
                      + node_size     = "8C16G"
                    }
                  + tiflash = {
                      + node_quantity    = 2
                      + node_size        = "8C64G"
                      + storage_size_gib = 500
                    }
                  + tikv    = {
                      + node_quantity    = 6
                      + node_size        = "8C32G"
                      + storage_size_gib = 500
                    }
                }
              + port          = 4000
              + root_password = "Your_root_password1."
            }
          + create_timestamp = (known after apply)
          + error_message    = (known after apply)
          + id               = (known after apply)
          + name             = "restoreCluster"
          + project_id       = "1372813089189561287"
          + status           = (known after apply)
        }
    
    Plan: 1 to add, 0 to change, 0 to destroy.
    
    Do you want to perform these actions?
      Terraform will perform the actions described above.
      Only 'yes' will be accepted to approve.
    
      Enter a value: yes
    
    tidbcloud_restore.example_restore: Creating...
    tidbcloud_restore.example_restore: Creation complete after 1s [id=780114]
    
    Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
    
  4. Use the terraform state show tidbcloud_restore.${resource-name} command to check the status of the restore task:

    $ terraform state show tidbcloud_restore.example_restore
    
    # tidbcloud_restore.example_restore:
    resource "tidbcloud_restore" "example_restore" {
        backup_id        = "1350048"
        cluster          = {
            id     = "1379661944630264072"
            name   = "restoreCluster"
            status = "INITIALIZING"
        }
        cluster_id       = "1379661944630234067"
        config           = {
            components    = {
                tidb    = {
                    node_quantity = 2
                    node_size     = "8C16G"
                }
                tiflash = {
                    node_quantity    = 2
                    node_size        = "8C64G"
                    storage_size_gib = 500
                }
                tikv    = {
                    node_quantity    = 6
                    node_size        = "8C32G"
                    storage_size_gib = 500
                }
            }
            port          = 4000
            root_password = "Your_root_password1."
        }
        create_timestamp = "2022-08-26T08:16:33Z"
        id               = "780114"
        name             = "restoreCluster"
        project_id       = "1372813089189561287"
        status           = "PENDING"
    }
    

    You can see the restore task's status is PENDING and the cluster's status is INITIALIZING.

  5. Wait for some minutes. Then use terraform refersh to update the status.

  6. After the cluster status changes to AVAILABLE, the restore task will be RUNNING and turn to SUCCESS at last.

Note that the restored cluster is not managed by Terraform. You can manage the restored cluster by importing it.

Delete a restore task

Restore tasks cannot be deleted.