Start-VEPSQLInstanceInstantRecovery

Short Description

Performs instant recovery of a backed-up PostgreSQL instance.

Applies to

Veeam Backup & Replication

Product Edition: Enterprise, Enterprise Plus, Veeam Universal License

Syntax

Start-VEPSQLInstanceInstantRecovery [-Instance] <VEPSQLInstance> [[-ToPointInTimeUTC] <DateTime>] [-LinuxCredentials <VEPSQLLinuxCredential>] [-ServerName <String>] [-DataDirectory <String>] [-SshPort <Int32>] [-Force <SwitchParameter>] [-TablespacePath <String[]>] [-Tablespace <VEPSQLTableSpace[]>] [-Port <Int32>] -SwitchOverOptions <VEPSQLIRSwitchOverOptions> [<CommonParameters>]

Detailed Description

This cmdlet performs instant recovery of a backed-up PostgreSQL instance. You can restore instances to the original location or to another location. For details, see the Instant Recovery section of the Veeam Explorers User Guide.

Parameters

Parameter

Description

Type

Required

Position

Accept Pipeline Input

Instance

Specifies a PostgreSQL instance. The cmdlet will start an instant recovery session for this instance.

Accepts the VEPSQLInstance type. To get this object, run the Get-VEPSQLInstance cmdlet.

True

0

True (ByValue)

ToPointInTimeUTC

Specifies the point in time in the UTC format within a restore interval of the PostgreSQL instance. The cmdlet will restore the instance to the state of the specified point in time.

Note: If you do not use this parameter, the cmdlet will restore the instance to the time of the restore point used to start the restore session.

DateTime

False

1

False

DataDirectory

Specifies a path to the data directory for the recovered PostgreSQL instance. The cmdlet will restore the specified instance to the specified data directory.

String

False

Named

False

Force

Defines that the cmdlet will replace the target PostgreSQL instance with the instance from the backup.

Note: The cmdlet will show no prompt before executing the command.

SwitchParameter

False

Named

False

LinuxCredentials

Specifies Linux credentials. The cmdlet will use these credentials to connect to the target PostgreSQL server.

Accepts the VEPSQLLinuxCredential type. To get this object, run the New-VEPSQLLinuxCredential cmdlet.

False

Named

True (ByValue)

Port

Specifies a port for the published PostgreSQL instance.

Note: The specified port must be free, otherwise the instance cannot be published to the target server.

Int32

False

Named

False

ServerName

Specifies the name of the target server to which the instance will be published.

String

False

Named

False

SshPort

Specifies the SSH port number. The cmdlet will use that port to connect to the Linux machine.

Int32

False

Named

False

SwitchOverOptions

Specifies a switchover option: Auto, Manual or Scheduled.

Accepts the VEPSQLIRSwitchOverOptions type. To get this object, run the New-VEPSQLIRSwitchOverOptions cmdlet.

True

Named

True (ByValue)

Tablespace

Specifies an array of tablespace names for the recovered PostgreSQL instance. The cmdlet will restore tablespaces specified in this array.

Consider the following:

  • For every PostgreSQL tablespace, you must assign a specific tablespace path.
  • This parameter must be used together with the TablespacePath parameter.

Accepts the VEPSQLTableSpace[] type. To get this object, run the Get-VEPSQLTablespace cmdlet.

False

Named

False

TablespacePath

Specifies an array of tablespace paths for the recovered PostgreSQL instance. The cmdlet will restore PostgreSQL tablespaces to locations specified in this array.

Note: This parameter must be used together with the Tablespace parameter.

String[]

False

Named

False

<CommonParameters>

This cmdlet supports Microsoft PowerShell common parameters. For more information on common parameters, see the About CommonParameters section of Microsoft Docs.

Output Object

The cmdlet returns the VEPSQLInstanceInstantRecovery object that contains information about the PostgreSQL instance published within the instant recovery session.

Examples

Start-VEPSQLInstanceInstantRecoveryExample 1. Performing Instant Recovery of PostgreSQL Instance to Original Location with Scheduled Switchover

This example shows how to perform instant recovery of an instance to the original location using the scheduled switchover option. The cmdlet will perform switchover at 13:00:00 on 2023-11-24 in the timezone of the backup server. The cmdlet will recover the instance to its latest state on the backup file.

$time = Get-Date -Date "2023-11-24 13:00:00"

$timeutc = $time.ToUniversalTime()

$scheduledswitch = New-VEPSQLIRSwitchOverOptions -Scheduled -SwitchingTimeUtc $timeutc

$session = Get-VEPSQLRestoreSession

$instance = Get-VEPSQLInstance -Session $session[0]

$irinstance = Start-VEPSQLInstanceInstantRecovery -Instance $instance[0] -SwitchOverOptions $scheduledswitch

Perform the following steps:

  1. Run the Get-Date cmdlet and specify the date and time when the switchover must be performed. Save the result to the $time variable.
  2. Convert the scheduled time to the UTC format using the ToUniversalTime() method. Save the result to the $timeutc variable.
  3. Run the New-VEPSQLIRSwitchOverOptions cmdlet. Provide the Scheduled parameter and specify the SwitchingTimeUtc parameter value. Save the result to the $scheduledswitch variable.
  4. Run the Get-VEPSQLRestoreSession cmdlet. Save the result to the $session variable.

The cmdlet will return an array of restore sessions. Note the ordinal number of the necessary restore session. In our example, it is the first restore session in the array.

  1. Run the Get-VEPSQLInstance cmdlet. Set the $session variable as the Session parameter value and select the necessary instance.
  2. Run the Start-VEPSQLInstanceInstantRecovery cmdlet. Set the $instance variable as the Instance parameter value and select the necessary instance. Set the $ScheduledSwitch variable as the SwitchOverOptions parameter value. Save the result to the $irinstance variable to be able to use it with other cmdlets.

Start-VEPSQLInstanceInstantRecoveryExample 2. Performing Instant Recovery of PostgreSQL Instance to Another Server and Switching Over Manually

This example shows how to perform instant recovery of an instance to another server using the manual switchover option. With this switchover option, you can perform manual switchover with the Switch-VEPSQLInstanceInstantRecovery cmdlet. The cmdlet will recover the instance to a point in time state on the backup file.

$time = Get-Date -Date "2023-9-24 15:00:00"

$timeutc = $time.ToUniversalTime()

$securepassword = Read-Host -Prompt "Enter password" -AsSecureString

$creds = New-VEPSQLLinuxCredential -Account "root" -Password $securepassword

$manualswitch = New-VEPSQLIRSwitchOverOptions -Manual

$session = Get-VEPSQLRestoreSession

$instance = Get-VEPSQLInstance -Session $session[0]

$tbsp = @("/var/lib/pgsql/tablespace","/var/lib/pgsql/tablespace2", "/var/lib/pgsql/tablespace3")

$tbsplist = Get-VEPSQLTablespace -Instance $instance[0]

$irinstance = Start-VEPSQLInstanceInstantRecovery -Instance $instance[0] -ToPointInTimeUTC $timeutc -DataDirectory "/var/lib/pgsql/13/data" -LinuxCredentials $creds -SshPort 22 -Port 5555 -SwitchOverOptions $manualswitch

Perform the following steps:

  1. Run the Get-Date cmdlet. Specify the Date parameter value to set the point in time to which the instance must be recovered. Save the result to the $time variable.
  2. Convert the scheduled time to the UTC format using the ToUniversalTime() method. Save the result to the $timeutc variable.
  1. Run the Read-Host cmdlet. Specify the Prompt parameter value. Provide the AsSecureString parameter. Save the result to the $securepassword variable.
  2. Run the New-VEPSQLLinuxCredential cmdlet. Specify the Account parameter value. Set the $securepassword variable as the Password parameter value. Save the result to the $creds variable.
  3. Run the New-VEPSQLIRSwitchOverOptions cmdlet. Provide the Manual parameter. Save the result in the $ManualSwitch variable.
  4. Run the Get-VEPSQLRestoreSession cmdlet. Save the result to the $session variable.

The cmdlet will return an array of restore sessions. Note the ordinal number of the necessary restore session. In our example, it is the first restore session in the array.

  1. Run the Get-VEPSQLInstance cmdlet. Set the $session variable as the Session parameter value. Save the result to the $instance variable.
  2. Declare the $tbsp variable. Assign to this variable an array of tablespace paths for the recovered PostgreSQL instance.
  3. Run the Get-VEPSQLTablespace cmdlet to get the list of tablespace names for the recovered PostgreSQL instance. Set the $instance variable as the Instance parameter value. Save the result to the $tbsplist variable.
  1. Run the Start-VEPSQLInstanceInstantRecovery cmdlet. Specify the following options:
  • Set the $instance variable as the Instance parameter value and select the necessary instance. In our example, it is the first instance in the array.
  • Specify the DataDirectory parameter value.
  • Set the $creds variable as the LinuxCredentials parameter value.
  • Specify the SshPort parameter value.
  • Specify the Port parameter value.
  • Set the $ManualSwitch variable as the SwitchOverOptions parameter value.
  • Set the $timeutc variable as the ToPointInTimeUTC parameter value.

Save the result to the $irinstance variable to use it with other cmdlets.

Related Commands