Reference documentation and code samples for the Cloud Spanner API class Google::Cloud::Spanner::Backup.
Backup
NOTE: From google-cloud-spanner/v2.11.0 onwards, new features for mananging backups will only be available through the google-cloud-spanner-admin-database-v1 client. See the README for further details.
A backup is a representation of Cloud Spanner database backup.
See Instance#backups, Instance#backup, and Database#create_backup.
Admin::Database#database_admin instead.
Inherits
- Object
Example
require "google/cloud" spanner = Google::Cloud::Spanner.new database = spanner.database "my-instance", "my-database" expire_time = Time.now + 36000 job = database.create_backup "my-backup", expire_time job.done? #=> false job.reload! # API call job.done? #=> true if job.error? status = job.error else backup = job.backup end
Methods
#backup_id
def backup_id() -> StringThe unique identifier for the backup.
- (String)
#create_time
def create_time() -> TimeCreate time is approximately the time when the backup request was received.
- (Time)
#creating?
def creating?() -> BooleanThe backup is still being created. A backup is not yet available for the database restore operation.
- (Boolean)
#database_id
def database_id() -> StringName of the database from which this backup was created.
- (String)
#delete
def delete() -> BooleanPermanently deletes the backup.
- (Boolean) — Returns
trueif the backup was deleted.
require "google/cloud/spanner" spanner = Google::Cloud::Spanner.new instance = spanner.instance "my-instance" backup = instance.backup "my-backup" backup.delete # true
#encryption_info
def encryption_info() -> Google::Cloud::Spanner::Admin::Database::V1::EncryptionInfo, nilEncryption information for a given resource.
- (Google::Cloud::Spanner::Admin::Database::V1::EncryptionInfo, nil)
#expire_time
def expire_time() -> TimeThe expiration time of the backup, with microseconds granularity.
- (Time)
#expire_time=
def expire_time=(time)Update backup expiration time.
Set expiration time of the backup, with microseconds granularity that must be at least 6 hours and at most 366 days from the time the request is received. Once the expire_time has passed, Cloud Spanner will delete the backup and free the resources used by the backup.
- time (Time) — Backup expiration time.
- (Google::Cloud::Error) — if expire time is in past or update call is aborted.
require "google/cloud/spanner" spanner = Google::Cloud::Spanner.new instance = spanner.instance "my-instance" backup = instance.backup "my-backup" backup.expire_time = Time.now + 36000 puts backup.expire_time
#instance_id
def instance_id() -> StringThe unique identifier for the instance.
- (String)
#path
def path() -> StringThe full path for the backup. Values are of the form projects/<project>/instances/<instance>/backups/<backup_id>.
- (String)
#project_id
def project_id() -> StringThe unique identifier for the project.
- (String)
#ready?
def ready?() -> BooleanThe backup is created and can be used to restore a database.
- (Boolean)
#referencing_databases
def referencing_databases() -> Array<Google::Cloud::Spanner::Database>The instances of the restored databases that reference the backup. Referencing databases may exist in different instances. The existence of any referencing database prevents the backup from being deleted. When a restored database from the backup enters the READY state, the reference to the backup is removed.
- (Array<Google::Cloud::Spanner::Database>) — Returns list of referencing database instances.
spanner = Google::Cloud::Spanner.new instance = spanner.instance "my-instance" backup = instance.backup "my-backup" backup.referencing_databases.each do |database| puts database.database_id end
#restore
def restore(database_id, instance_id: nil, encryption_config: nil) -> DatabaseRestores deleted database from the backup.
@raise [ArgumentError] if :CUSTOMER_MANAGED_ENCRYPTION specified without customer managed kms key.
- database_id (String) — The unique identifier for the database, which cannot be changed after the database is created. Values are of the form
[a-z][a-z0-9_\-]*[a-z0-9]and must be between 2 and 30 characters in length. Required. - instance_id (String) (defaults to: nil) — The name of the instance in which to create the restored database. This instance must be in the same project and have the same instance configuration as the instance containing the source backup. Optional. Default value is same as a backup instance.
- encryption_config (Hash) (defaults to: nil) —
An encryption configuration describing the encryption type and key resources in Cloud KMS used to encrypt/decrypt the database to restore to. If this field is not specified, the restored database will use the same encryption configuration as the backup by default. Optional. The following settings can be provided:
:kms_key_name(String) The name of KMS key to use which should be the full path, e.g.,projects/<project>/locations/<location>\ /keyRings/<key_ring>/cryptoKeys/<kms_key_name>This field should be set only when encryption type:CUSTOMER_MANAGED_ENCRYPTION.:encryption_type(Symbol) The encryption type of the backup. Valid values are::USE_CONFIG_DEFAULT_OR_BACKUP_ENCRYPTION- This is the default option when config is not specified.:GOOGLE_DEFAULT_ENCRYPTION- Google default encryption.:CUSTOMER_MANAGED_ENCRYPTION- Use customer managed encryption. If specified,:kms_key_namemust contain a valid Cloud KMS key.
- (Database) — Restored database.
require "google/cloud/spanner" spanner = Google::Cloud::Spanner.new instance = spanner.instance "my-instance" backup = instance.backup "my-backup" job = backup.restore "my-restored-database" job.done? #=> false job.reload! # API call job.done? #=> true if job.error? status = job.error else database = job.database end
Restore database in provided instance id
require "google/cloud/spanner" spanner = Google::Cloud::Spanner.new instance = spanner.instance "my-instance" backup = instance.backup "my-backup" job = backup.restore( "my-restored-database", instance_id: "other-instance" ) job.done? #=> false job.reload! # API call job.done? #=> true if job.error? status = job.error else database = job.database end
Restore database with encryption config
require "google/cloud/spanner" spanner = Google::Cloud::Spanner.new instance = spanner.instance "my-instance" backup = instance.backup "my-backup" kms_key_name = "projects/<project>/locations/<location>/keyRings/<key_ring>/cryptoKeys/<kms_key_name>" encryption_config = { kms_key_name: kms_key_name, encryption_type: :CUSTOMER_MANAGED_ENCRYPTION } job = backup.restore( "my-restored-database", encryption_config: encryption_config ) job.done? #=> false job.reload! # API call job.done? #=> true if job.error? status = job.error else database = job.database end
#size_in_bytes
def size_in_bytes() -> IntegerSize of the backup in bytes.
- (Integer)
#state
def state() -> SymbolThe current backup state. Possible values are :CREATING and :READY.
- (Symbol)
#version_time
def version_time() -> TimeThe timestamp when a consistent copy of the database for the backup was taken. The version time has microseconds granularity.
- (Time)