Updated on 2023-10-23 GMT+08:00

Backup and Restoration Control Functions

Backup Control Functions

Backup control functions help with online backup.

  • pg_create_restore_point(name text)

    Description: Creates a named point for performing the restoration operation (restricted to the system administrator).

    Return type: text

    Note: pg_create_restore_point creates a named transaction log record that can be used as a restoration target, and returns the corresponding transaction log location. The given name can then be used with recovery_target_name to specify the point up to which restoration will proceed. Avoid creating multiple restoration points with the same name, since restoration will stop at the first one whose name matches the restoration target.

  • pg_current_xlog_location()

    Description: Obtains the write position of the current transaction log.

    Return type: text

    Note: pg_current_xlog_location displays the write position of the current transaction log in the same format as those of the previous functions. Read-only operations do not require permissions of the system administrator.

  • pg_current_xlog_insert_location()

    Description: Obtains the insert position of the current transaction log.

    Return type: text

    Note: pg_current_xlog_insert_location displays the insert position of the current transaction log. The insertion point is the logical end of the transaction log at any instant, while the write location is the end of what has been written out from the server's internal buffers. The write position is the end that can be detected externally from the server. This operation can be performed to archive only some of completed transaction log files. The insert position is mainly used for commissioning the server. Read-only operations do not require permissions of the system administrator.

  • gs_current_xlog_insert_end_location()

    Description: Obtains the insert position of the current transaction log.

    Return type: text

    Note: gs_current_xlog_insert_end_location displays the insert position of the current transaction log.

  • pg_start_backup(label text, is_full_backup boolean)

    Description: Starts to perform online backup. (You need to enable operate_mode as an administrator, replication role, or O&M administrator.) Label strings starting with gs_roach are reserved and can be used only by the internal backup tool GaussRoach.

    Return type: text

    Note: pg_start_backup receives a user-defined backup label (usually the name of the position where the backup dump file is stored). This function writes a backup label file to the data directory of the database cluster and then returns the starting position of backed up transaction logs in text mode.

    1
    2
    3
    4
    5
    openGauss=# SELECT pg_start_backup('label_goes_here',true);
     pg_start_backup
    -----------------
     0/3000020
    (1 row)
    
  • pg_stop_backup()

    Description: Completes online backup You need to execute this function as the system administrator or a replication role.

    Return type: text

    Note: pg_stop_backup deletes the label file created by pg_start_backup and creates a backup history file in the transaction log archive area. The history file includes the label given to pg_start_backup, the start and end transaction log locations for the backup, and the start and end time of the backup. The return value is the backup's ending transaction log location. After the end position is calculated, the insert position of the current transaction log automatically goes ahead to the next transaction log file. In this way, the ended transaction log file can be immediately archived so that backup is complete.

  • pg_switch_xlog()

    Description: Switches to a new transaction log file You need to enable operation_mode as the administrator or O&M administrator.

    Return type: text

    Note: pg_switch_xlog moves to the next transaction log file so that the current log file can be archived (if continuous archive is used). The return value is the ending transaction log location + 1 within the just-completed transaction log file. If there has been no transaction log activity since the last transaction log switchover, pg_switch_xlog will do nothing but return the start location of the transaction log file currently in use.

  • pg_xlogfile_name(location text)

    Description: Converts the position string in a transaction log to a file name.

    Return type: text

    Note: pg_xlogfile_name extracts only the transaction log file name. If the given transaction log position is the transaction log file border, a transaction log file name will be returned for both the two functions. This is usually the desired behavior for managing transaction log archiving, since the preceding file is the last one that currently needs to be archived.

  • pg_xlogfile_name_offset(location text)

    Description: Converts the position string in a transaction log to a file name and returns the byte offset in the file.

    Return type: text, integer

    Note: pg_xlogfile_name_offset can extract transaction log file names and byte offsets from the returned results of the preceding functions. Example:

    1
    2
    3
    4
    5
    6
    7
    openGauss=# SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup());
    NOTICE:  pg_stop_backup cleanup done, waiting for required WAL segments to be archived
    NOTICE:  pg_stop_backup complete, all required WAL segments have been archived
            file_name         | file_offset 
    --------------------------+-------------
    000000010000000000000003  |         272
    (1 row)
    
  • pg_xlog_location_diff(location text, location text)

    Description: Calculates the difference in bytes between two transaction log locations.

    Return type: numeric

  • pg_cbm_tracked_location()

    Description: Queries the LSN location parsed by CBM.

    Return type: text

  • pg_cbm_get_merged_file(startLSNArg text, endLSNArg text)

    Description: Combines CBM files within the specified LSN range into one and returns the name of the combined file.

    Return type: text

    Note: Only the system administrator or O&M administrator can obtain the CBM combination file.

  • pg_cbm_get_changed_block(startLSNArg text, endLSNArg text)

    Description: Combines CBM files within the specified LSN range into a table and return records of this table.

    Return type: record

    Note: The table columns include the start LSN, end LSN, tablespace OID, database OID, table relfilenode, table fork number, whether the table is deleted, whether the table is created, whether the table is truncated, number of pages in the truncated table, number of modified pages, and list of modified page numbers.

  • pg_cbm_recycle_file(targetLSNArg text)

    Description: Deletes the CBM files that are no longer used and returns the first LSN after the deletion.

    Return type: text

  • pg_cbm_force_track(targetLSNArg text,timeOut int)

    Description: Forcibly executes the CBM trace to the specified Xlog position and returns the Xlog position of the actual trace end point.

    Return type: text

  • pg_enable_delay_ddl_recycle()

    Description: Enables DDL delay and returns the Xlog position of the enabling point. You need to enable operation_mode as the administrator or O&M administrator.

    Return type: text

  • pg_disable_delay_ddl_recycle(barrierLSNArg text, isForce bool)

    Description: Disables DDL delay and returns the Xlog range where DDL delay takes effect. You need to enable operation_mode as the administrator or O&M administrator.

    Return type: record

  • pg_enable_delay_xlog_recycle()

    Description: Enables the Xlog recycling delay function for CN recovery. You need to enable operation_mode as the administrator or O&M administrator.

    Return type: void

  • pg_disable_delay_xlog_recycle()

    Description: Disables the Xlog recycling delay function for CN recovery. You need to enable operation_mode as the administrator or O&M administrator.

    Return type: void

  • pg_cbm_rotate_file(rotate_lsn text)

    Description: Forcibly switches the file after the CBM parses rotate_lsn. This function is called during the build process.

    Return type: void

  • gs_roach_stop_backup(backupid text)

    Description: Stops a backup started by the internal backup tool GaussRoach. It is similar to the pg_stop_backup system function but is more lightweight.

    Return type: text. The content is the insertion position of the current log.

  • gs_roach_enable_delay_ddl_recycle(backupid name)

    Description: Enables DDL delay and returns the log location of the enabling point. It is similar to the pg_enable_delay_ddl_recycle system function but is more lightweight. In addition, different backupid values can be used to concurrently open DDL statements with delay.

    Return type: text. The content is the log location of the start point.

  • gs_roach_disable_delay_ddl_recycle(backupid text)

    Description: Disables DDL delay, returns the range of logs on which DDL delay takes effect, and deletes the physical files of column-store tables that are deleted by users within this range. It is similar to the pg_enable_delay_ddl_recycle system function but is more lightweight. In addition, the DDL delay function can be disabled concurrently by specifying different backupid values.

    Return type: record. The content is the range of logs for which DDL is delayed to take effect.

  • gs_roach_switch_xlog(request_ckpt bool)

    Description: Switches the currently used log segment file and triggers a full checkpoint if request_ckpt is true.

    Return type: text. The content is the location of the segment log.

  • gs_block_dw_io(timeout int, identifier text)

    Description: Blocks dual-write page flushing.

    Parameter description:

    • timeout

      Block duration.

      Value range: [0,3600] (s). The value 0 indicates that the block duration is 0s.

    • identifier

      ID of the operation.

      Value range: a string, supporting only uppercase letters, lowercase letters, digits, and underscores (_).

    Return type: Boolean

    Note: To call this function, the user must have the SYSADMIN or OPRADMIN permission, and operate_mode must be enabled for the O&M administrator role.

  • gs_is_dw_io_blocked()

    Description: Checks whether disk flushing on the current dual-write page is blocked. If disk flushing is blocked, true is returned.

    Return type: Boolean

    Note: To call this function, the user must have the SYSADMIN or OPRADMIN permission, and operate_mode must be enabled for the O&M administrator role.

Restoration Control Functions

Restoration control functions provide information about the status of standby nodes. These functions may be executed both during restoration and in normal running.

  • pg_is_in_recovery()

    Description: Returns true if restoration is still in progress.

    Return type: Boolean

  • pg_last_xlog_receive_location()

    Description: Obtains the last transaction log location received and synchronized to disk by streaming replication. While streaming replication is in progress, this will increase monotonically. If restoration has been completed, then this value will remain static at the value of the last WAL record received and synchronized to disk during restoration. If streaming replication is disabled or if it has not yet started, the function returns a null value.

    Return type: text

  • pg_last_xlog_replay_location()

    Description: Obtains last transaction log location replayed during restoration. If restoration is still in progress, this will increase monotonically. If restoration has been completed, then this value will remain static at the value of the last WAL record received during that restoration. When the server has been started normally without restoration, the function returns a null value.

    Return type: text

  • pg_last_xact_replay_timestamp()

    Description: Obtains the timestamp of last transaction replayed during restoration. This is the time to commit a transaction or abort a WAL record on the primary node. If no transactions have been replayed during restoration, this function will return a null value. If restoration is still in progress, this will increase monotonically. If restoration has been completed, then this value will remain static at the value of the last WAL record received during that restoration. If the server normally starts without manual intervention, this function will return a null value.

    Return type: timestamp with time zone

Restoration control functions control restoration processes. These functions may be executed only during restoration.

  • pg_is_xlog_replay_paused()

    Description: Returns true if restoration is paused.

    Return type: Boolean

  • pg_xlog_replay_pause()

    Description: Pauses restoration immediately.

    Return type: void

  • pg_xlog_replay_resume()

    Description: Restarts restoration if it was paused.

    Return type: void

  • gs_get_active_archiving_standby()

    Description: Queries information about archive standby nodes in the same shard. The standby node name, archive location, and number of archived logs are returned.

    Return type: text, text, int

  • gs_pitr_get_warning_for_xlog_force_recycle()

    Description: Checks whether logs are recycled because a large number of logs are stacked in the archive slot after archiving is enabled.

    Return type: Boolean

  • gs_pitr_clean_history_global_barriers(stop_barrier_timestamp cstring)

    Description: Clears all barrier records generated before the specified time. The earliest barrier record is returned. The input parameter is of the cstring type and is a Linux timestamp. You need to perform this operation as the administrator or O&M administrator.

    Return type: text

  • gs_pitr_archive_slot_force_advance(stop_barrier_timestamp cstring)

    Description: Forcibly pushes the archive slot and clears unnecessary barrier records. The new archive slot location is returned. The input parameter is of the cstring type and is a Linux timestamp. You need to perform this operation as the administrator or O&M administrator.

    Return type: text

While restoration is paused, no further database changes are applied. In hot standby mode, all new queries will see the same consistent snapshot of the database, and no further query conflicts will be generated until restoration is resumed.

If streaming replication is disabled, the paused state may continue indefinitely without problem. While streaming replication is in progress, WAL records will continue to be received, which will eventually fill available disk space. This progress depends on the duration of the pause, the rate of WAL generation, and available disk space.