云数据库 GAUSSDB-备份恢复控制函数:恢复控制函数

时间:2024-04-26 16:14:38

恢复控制函数

恢复信息函数提供了当前备机状态的信息。这些函数可能在恢复期间或正常运行中执行。

  • pg_is_in_recovery()

    描述:如果恢复仍然在进行中则返回true。

    返回值类型:Boolean

  • pg_last_xlog_receive_location()

    描述:获取最后接收事务日志的位置并通过流复制将其同步到磁盘。当流复制正在进行时,事务日志将持续递增。如果恢复已完成,则最后一次获取的WAL记录会被静态保持并在恢复过程中同步到磁盘。如果流复制不可用,或还没有开始,这个函数返回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()

    描述:如果恢复暂停则返回true。

    返回值类型:Boolean

  • pg_xlog_replay_pause()

    描述:立即暂停恢复。

    返回值类型:void

  • pg_xlog_replay_resume()

    描述:如果恢复处于暂停状态,则重新启动。

    返回值类型:void

  • gs_get_active_archiving_standby()

    描述:查询同一分片内归档备机的信息。返回备机名,备机归档位置和已归档日志个数。

    返回值类型:text,int

  • gs_pitr_get_warning_for_xlog_force_recycle()

    描述:查询开启归档后是否因归档槽不推进日志大量堆积导致日志被回收。

    返回值类型:bool

  • gs_pitr_clean_history_global_barriers(stop_barrier_timestamp cstring)

    描述:清理指定时间之前所有barrier记录。返回最老的barrier记录。入参为cstring类型,linux时间戳。需要管理员角色或运维管理员角色执行。

    返回值类型:text

  • gs_pitr_archive_slot_force_advance(stop_barrier_timestamp cstring)

    描述:强制推进归档槽,并清理不需要的barrier记录。返回新的归档槽位置。入参为cstring类型,linux时间戳。需要管理员角色或运维管理员角色执行。

    返回值类型:text

当恢复暂停时,没有发生数据库更改。如果是在热备里,所有新的查询将看到一致的数据库快照,并且不会有进一步的查询冲突产生,直到恢复继续。

如果不能使用流复制,则暂停状态将无限的延续。当流复制正在进行时,将连续接收WAL记录,最终将填满可用磁盘空间,这个进度取决于暂停的持续时间,WAL生成的速度和可用的磁盘空间。

  • gs_recent_barrier_buffer_info(start_time text, end_time text)

    描述:根据用户输入的时间范围,进行相应的barrier信息查询,获取time_stamp、 CS N、LSN和standard_time。

    返回值类型:records

    说明:调用该函数的用户需要具有SYSADMIN权限或具有OPRADMIN权限。输入参数start_time和end_time采用“年-月-日 时间”格式,其中时间采用clock格式。查询最大时间跨度为1天,超出跨度约束,根据查询起始时间将结束时间自动转换为极限边界进行查询。例如:
    gaussdb=# SELECT * FROM gs_recent_barrier_buffer_info('2024-01-15 23:27:50', '2024-01-15 23:28:00');
     timestamp  |        lsn        |   csn    |    standard_time    
    ------------+-------------------+----------+---------------------
     1705332470 | 00000000/15FFBBA0 | 41020421 | 2024-01-15 23:27:50
     1705332471 | 00000000/15FFBDF0 | 41020422 | 2024-01-15 23:27:51
     1705332472 | 00000000/15FFC058 | 41020423 | 2024-01-15 23:27:52
     1705332472 | 00000000/15FFC0F8 | 41020424 | 2024-01-15 23:27:52
     1705332473 | 00000000/15FFC348 | 41020425 | 2024-01-15 23:27:53
     1705332474 | 00000000/15FFC598 | 41020426 | 2024-01-15 23:27:54
     1705332475 | 00000000/15FFC638 | 41020427 | 2024-01-15 23:27:55
     1705332476 | 00000000/15FFC888 | 41020428 | 2024-01-15 23:27:56
     1705332476 | 00000000/15FFDC80 | 41020433 | 2024-01-15 23:27:56
     1705332477 | 00000000/15FFDD20 | 41020434 | 2024-01-15 23:27:57
     1705332478 | 00000000/15FFDF70 | 41020435 | 2024-01-15 23:27:58
     1705332479 | 00000000/15FFE1D8 | 41020436 | 2024-01-15 23:27:59
     1705332480 | 00000000/15FFE278 | 41020437 | 2024-01-15 23:28:00
     1705332480 | 00000000/15FFE4C8 | 41020438 | 2024-01-15 23:28:00
    (14 rows)

  • gs_show_obs_media_files(slot_name cstring, src cstring, offset int32, limit int32)

    描述:根据用户输入的归档槽(slot_name)和OBS目录地址(src),查询OBS文件列表。

    返回值类型:records

    说明:调用该函数的用户需要具有SYSADMIN权限或具有OPRADMIN权限。Offset为查询结果偏移,limit为输出最大行数,查询src下所有文件。例如:
    gaussdb=# SELECT gs_show_obs_archive_files('ssh','cn_5001/pg_xlog',1, 5);
                                        gs_show_obs_archive_files                                    
    -------------------------------------------------------------------------------------------------
     (wstdist_ssh/archive/cn_5001/pg_xlog/000000010000000000000010_01_01_00000000_00000000_00000003)
     (wstdist_ssh/archive/cn_5001/pg_xlog/000000010000000000000010_02_01_00000000_00000000_00000003)
     (wstdist_ssh/archive/cn_5001/pg_xlog/000000010000000000000010_03_01_00000000_00000000_00000003)
     (wstdist_ssh/archive/cn_5001/pg_xlog/000000010000000000000011_00_01_00000000_00000000_00000003)
     (wstdist_ssh/archive/cn_5001/pg_xlog/000000010000000000000011_01_01_00000000_00000000_00000003)
    (5 rows)

  • gs_upload_obs_media_file(slot_name cstring, src cstring, dest cstring, is_forced bool)

    描述:根据用户输入的归档槽(slot_name)、上传文件原地址(src)、OBS地址(dest)和是否强制上传(is_forced),上传OBS文件。

    返回值类型:void

    说明:调用该函数的用户需要具有SYSADMIN权限或具有OPRADMIN权限。原文件目录仅允许为$GAUSS LOG 目录。例如:
    gaussdb=# SELECT * FROM gs_upload_obs_archive_file('ssh', '/data/gauss/log/stwang/test/000000010000000000000019_02_01_00000000_00000000_00000003', 'cn_5001/pg_xlog/000000010000000000000019_02_01_00000000_00000000_00000003', true);
     gs_upload_obs_archive_file 
    ----------------------------
    
    (1 row)

  • gs_download_obs_media_file(slot_name cstring, src cstring, dest cstring)

    描述:根据用户输入的归档槽(slot_name)、下载原地址(src)和本地目标地址(dest),下载OBS文件。

    返回值类型:void

    说明:调用该函数的用户需要具有SYSADMIN权限或具有OPRADMIN权限。下载目录仅允许为$GAUSSLOG目录。例如:
    gaussdb=# SELECT * FROM gs_download_obs_archive_file('ssh','cn_5001/pg_xlog/000000010000000000000019_02_01_00000000_00000000_00000003','/data/gauss/log/stwang/test');
     gs_download_obs_archive_file 
    ------------------------------
    
    (1 row)
support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0373.html