备份恢复控制函数
备份控制函数
备份控制函数可帮助进行在线备份。
- pg_create_restore_point(name text)
返回值类型:text
备注:pg_create_restore_point创建了一个可以用作恢复目的、有命名的事务日志记录,并返回相应的事务日志位置。在恢复过程中,recovery_target_name可以通过这个名称定位对应的日志恢复点,并从此处开始执行恢复操作。避免使用相同的名称创建多个恢复点,因为恢复操作将在第一个匹配(恢复目标)的名称上停止。
- pg_current_xlog_location()
返回值类型:text
备注:pg_current_xlog_location使用与前面那些函数相同的格式显示当前事务日志的写入位置。如果是只读操作,不需要系统管理员权限。
- pg_current_xlog_insert_location()
返回值类型:text
备注:pg_current_xlog_insert_location显示当前事务日志的插入位置。插入点是事务日志在某个瞬间的“逻辑终点”,而实际的写入位置则是从服务器内部缓冲区写出时的终点。写入位置是可以从服务器外部检测到的终点,如果要归档部分完成事务日志文件,则该操作即可实现。插入点主要用于服务器调试目的。如果是只读操作,不需要系统管理员权限。
- pg_start_backup(label text [, fast boolean ])
返回值类型:text
备注:pg_start_backup接受一个用户定义的备份标签(通常这是备份转储文件存放地点的名字)。这个函数向数据库集群的数据目录写入一个备份标签文件,然后以文本方式返回备份的事务日志起始位置。
1 2 3 4 5
SELECT pg_start_backup('label_goes_here'); pg_start_backup ----------------- 0/3000020 (1 row)
- pg_stop_backup()
返回值类型:text
备注:pg_stop_backup删除pg_start_backup创建的标签文件,并且在事务日志归档区里创建一个备份历史文件。这个历史文件包含给予pg_start_backup的标签、备份的事务日志起始与终止位置、备份的起始和终止时间。返回值是备份的事务日志终止位置。计算出中止位置后,当前事务日志的插入点将自动前进到下一个事务日志文件,这样,结束的事务日志文件可以被立即归档从而完成备份。
- pg_switch_xlog()
返回值类型:text
备注:pg_switch_xlog移动到下一个事务日志文件,以允许将当前日志文件归档(假定使用连续归档)。返回值是刚完成的事务日志文件的事务日志结束位置+1。如果从最后一次事务日志切换以来没有活动的事务日志,则pg_switch_xlog什么事也不做,直接返回当前事务日志文件的开始位置。
- pg_xlogfile_name(location text)
返回值类型:text
备注:pg_xlogfile_name仅抽取事务日志文件名称。如果给定的事务日志位置恰好位于事务日志文件的交界上,这两个函数都返回前一个事务日志文件的名字。这对于管理事务日志归档来说是非常有利的,因为前一个文件是当前最后一个需要归档的文件。
- pg_xlogfile_name_offset(location text)
描述:将事务日志的位置字符串转换为文件名并返回在文件中的字节偏移量。
返回值类型:text,integer
备注:可以使用pg_xlogfile_name_offset从前述函数的返回结果中抽取相应的事务日志文件名称和字节偏移量。例如:
1 2 3 4 5 6 7
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)
返回值类型:numeric
- pg_cbm_tracked_location()
返回值类型:text
- pg_cbm_get_merged_file(startLSNArg text, endLSNArg text)
描述:用于将指定lsn范围之内的cbm文件合并成一个cbm文件,并返回合并完的cbm文件名。
返回值类型:text
- pg_cbm_get_changed_block(startLSNArg text, endLSNArg text)
描述:用于将指定lsn范围之内的cbm文件合并成一个表,并返回表的各行记录。
返回值类型:record
备注:pg_cbm_get_changed_block返回的表字段包含:合并起始的lsn,合并截止的lsn, 表空间oid,库oid,表的relfilenode,表的fork number,表是否被删除,表是否被创建,表是否被截断,表被截断后的页面数,有多少页被修改以及被修改的页号的列表。
- pg_cbm_recycle_file(slotName name, targetLSNArg text)
描述:删除不再使用的cbm文件,并返回删除后的第一条lsn。其中,slotName为空字符串时,将直接使用targetLSNArg作为回收点;在备份和容灾时,因为并行因素,需要指定相应的slotName,首先记录该任务的targetLSNArg到该slot中,然后遍历所有的backup slots,找到最小的lsn作为回收点。
返回值类型:text
- pg_cbm_force_track(targetLSNArg text,timeOut int)
描述:强制执行一次cbm追踪到指定的xlog位置,并返回实际追踪结束点的xlog位置。
返回值类型:text
- pg_enable_delay_ddl_recycle()
返回值类型:text
- pg_disable_delay_ddl_recycle(barrierLSNArg text, isForce bool)
描述:关闭延迟DDL功能,并返回本次延迟DDL生效的xlog范围。
返回值类型:record
- pg_enable_delay_xlog_recycle()
返回值类型:void
- pg_disable_delay_xlog_recycle()
返回值类型:void
- pgxc_get_senders_catchup_time()
返回值类型:record
函数返回信息如下:
表1 pgxc_get_senders_catchup_time()字段 名称
类型
描述
node_name
text
节点名称。
lwpid
integer
当前sender的lwpid。
local_role
text
本地的角色。
peer_role
text
对端的角色。
state
text
当前sender的复制状态。
sender
text
当前sender的类型。
catchup_start
timestamp with time zone
catchup启动的时间。
catchup_end
timestamp with time zone
catchup结束的时间。
catchup_type
text
catchup方式为全量还是增量。
catchup_bcm_filename
text
catchup当前执行到的bcm文件
catchup_bcm_finished
integer
catchup已经操作完成的bcm文件数量。
catchup_bcm_total
integer
catchup总共需要操作的bcm文件数量。
catchup_percent
text
catchup已经操作完成的百分比。
catchup_remaining_time
text
catchup预估剩余时间。
恢复控制函数
恢复信息函数提供了当前备机状态的信息。这些函数可能在恢复期间或正常运行中执行。
- pg_is_in_recovery()
返回值类型:bool
- pg_last_xlog_receive_location()
描述:获取最后接收事务日志的位置并通过流媒体复制同步到磁盘。在流复制仍在进行,事务日志将持续递增。如果恢复已完成,则这个值将保持最后接收事务记录的状态并在恢复期间同步到磁盘。如果不能用流复制,或还没有开始,这个函数返回NULL。
返回值类型:text
- pg_last_xlog_replay_location()
描述:获取最后一个事务日志在恢复时重放的位置。如果恢复仍在进行,事务日志将持续递增。如果已经完成恢复,则将保持在恢复期间最后接收WAL记录的值。如果未进行恢复但服务器正常启动时,则这个函数返回NULL。
返回值类型:text
- pg_last_xact_replay_timestamp()
描述:获取最后一个事务在恢复时重放的时间戳。这是为在主节点上生成事务提交或终止WAL记录的时间。如果在恢复时没有事务重放,则这个函数返回NULL。否则,如果恢复仍在进行,则事务日志将持续递增。如果恢复已经完成,则将保持在恢复期间最后接收WAL记录的值。如果服务器无需恢复就已正常启动,则这个函数返回NULL。
返回值类型:timestamp with time zone
恢复控制函数控制恢复的进程。这些函数可能只在恢复时被执行。
- pg_is_xlog_replay_paused()
返回值类型:bool
- pg_xlog_replay_pause()
返回值类型:void
- pg_xlog_replay_resume()
返回值类型:void
当恢复暂停时,没有发生数据库更改。如果是在热备里,所有新的查询将看到一致的数据库快照,并且不会有进一步的查询冲突产生,直到恢复继续。
如果不能使用流复制,则暂停状态将无限的延续。当流复制正在进行时,将连续接收WAL记录,最终将填满可用磁盘空间,这个进度取决于暂停的持续时间,WAL生成的速度和可用的磁盘空间。
- pg_xlog_replay_completion()
返回值类型:record
函数返回信息如下:
表2 pg_xlog_replay_completion()字段 名称
类型
描述
replay_start
integer
Xlog Redo的起始LSN
replay_current
integer
Xlog Redo的当前replay的LSN
replay_end
integer
最大的需要Xlog Redo的LSN
replay_percent
integer
Xlog Redo的当前完成的百分比
- pg_data_sync_from_dummy_completion()
描述:显示当前DN上Failover过程中数据页文件同步的进度信息。
返回值类型:record
函数返回信息如下:
表3 pg_data_sync_from_dummy_completion()字段 名称
类型
描述
start_index
integer
数据页文件同步的起始编号
current_index
integer
数据页文件同步的当前编号
total_index
integer
数据页文件同步的最大编号
sync_percent
integer
数据页文件当前完成的百分比
- gs_roach_stop_backup(backupid text)
描述:停止一个内部备份工具GaussRoach开启的备份,返回当前日志的插入位置。与pg_stop_backup系统函数类似,但更轻量。
返回值类型:text
- gs_roach_enable_delay_ddl_recycle(backupid name)
描述:开启延迟DDL功能,并返回开启点的日志位置。与pg_enable_delay_ddl_recycle系统函数类似,但更轻量。且通过传入不同的backupid,可支持并发打开延迟DDL。
返回值类型:text
- gs_roach_disable_delay_ddl_recycle(backupid text)
描述:关闭延迟DDL功能,并返回本次延迟DDL生效的日志范围,并删除该范围内被用户删除的列存表物理文件。与pg_enable_delay_ddl_recycle系统函数类似,但更轻量。且通过传入不同的backupid,可支持并发关闭延迟DDL功能。
返回值类型:record
- gs_roach_switch_xlog(request_ckpt bool)
描述:切换当前使用的日志段文件,返回切段日志的位置。且如果request_ckpt为true,则触发一个全量检查点。
返回值类型:text
- pg_resume_bkp_flag(backupid name)
描述:用于备份恢复获取delay xlog标志,并返回start_backup_flag boolean, to_delay boolean,ddl_delay_recycle_ptr text, rewind_time text。
返回值类型:record