华为云用户手册

  • pg_xlog_replay_resume() 描述:如果恢复处于暂停状态,则重新启动。 当恢复暂停时,没有发生数据库更改。如果是在热备里,所有新的查询将看到一致的数据库快照,并且不会有进一步的查询冲突产生,直到恢复继续。 如果不能使用流复制,则暂停状态将无限的延续。当流复制正在进行时,将连续接收WAL记录,最终将填满可用磁盘空间,这个进度取决于暂停的持续时间,WAL生成的速度和可用的磁盘空间。 返回值类型:void
  • pg_data_sync_from_dummy_completion() 描述:显示当前DN上Failover过程中数据页文件同步的进度信息。 返回值类型:record 示例: 1 2 3 4 5 SELECT * FROM pg_data_sync_from_dummy_completion(); start_index | current_index | total_index | sync_percent -------------+---------------+-------------+-------------- 0 | 0 | 0 | 100% (1 row) 函数返回信息如下: 表2 pg_data_sync_from_dummy_completion()字段 名称 类型 描述 start_index integer 数据页文件同步的起始编号 current_index integer 数据页文件同步的当前编号 total_index integer 数据页文件同步的最大编号 sync_percent integer 数据页文件当前完成的百分比
  • pg_last_xact_replay_timestamp() 描述:获取最后一个事务在恢复时重放的时间戳。这是为在主节点上生成事务提交或终止WAL记录的时间。如果在恢复时没有事务重放,则这个函数返回NULL。否则,如果恢复仍在进行,则事务日志将持续递增。如果恢复已经完成,则将保持在恢复期间最后接收WAL记录的值。如果服务器无需恢复就已正常启动,则这个函数返回NULL。 返回值类型:timestamp with time zone 恢复控制函数控制恢复的进程。这些函数可能只在恢复时被执行。 示例: 1 2 3 4 5 SELECT pg_last_xact_replay_timestamp(); pg_last_xact_replay_timestamp ------------------------------- 2023-01-04 07:03:08.098024+00 (1 row)
  • pg_xlog_replay_completion() 描述:显示当前DN上xlog redo的进度信息。 返回值类型:record 示例: 1 2 3 4 5 SELECT * FROM pg_xlog_replay_completion(); replay_start | replay_current | replay_end | replay_percent --------------+----------------+------------+---------------- 0/2ACAB80 | 0/2B16530 | 0/4F62B090 | 0% (1 row) 函数返回信息如下: 表1 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_last_xlog_receive_location() 描述:获取最后接收事务日志的位置并通过流媒体复制同步到磁盘。当流复制仍在进行,事务日志将持续递增。如果恢复已完成,则这个值将保持最后接收事务记录的状态并在恢复期间同步到磁盘。如果不能用流复制,或还没有开始,该函数返回NULL。 返回值类型:text 示例: 1 2 3 4 5 SELECT pg_last_xlog_receive_location(); pg_last_xlog_receive_location ------------------------------- (1 row)
  • pgxc_lock_for_backup() 描述:备份前给集群加锁,备份是为了在新增节点上执行恢复操作。 返回值类型:boolean pgxc_lock_for_backup是在使用gs_dump或gs_dumpall工具备份集群前,用来给集群加锁的。当给集群加锁后,不允许有改变系统结构的操作。该函数不影响DML语句。 示例: 1 2 3 4 5 SELECT pgxc_lock_for_backup(); pgxc_lock_for_backup ---------------------- t (1 row)
  • pgxc_get_senders_catchup_time() 描述:显示所有DN上当前活跃的主备发送线程的追赶信息。 返回值类型: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_switch_xlog() 描述:切换到一个新的事务日志文件。(需要管理员角色) 返回值类型:text 备注:pg_switch_xlog移动到下一个事务日志文件,以允许将当前日志文件归档(假定使用连续归档)。返回值是刚完成的事务日志文件的事务日志结束位置+1。如果从最后一次事务日志切换以来没有活动的事务日志,则pg_switch_xlog什么事也不做,直接返回当前事务日志文件的开始位置。 示例: 1 2 3 4 5 SELECT pg_switch_xlog(); pg_switch_xlog ---------------- 0/45017978 (1 row)
  • pg_enable_delay_ddl_recycle() 描述:开启延迟DDL功能,并返回开启点的xlog位置。 返回值类型:text 示例: 1 2 3 4 5 SELECT pg_enable_delay_ddl_recycle(); pg_enable_delay_ddl_recycle ----------------------------- 00000000/4607B250 (1 row)
  • 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_cbm_get_changed_block(startLSNArg text, endLSNArg text) 描述:用于将指定lsn范围之内的cbm文件合并成一个表,并返回表的各行记录。 返回值类型:record 备注:pg_cbm_get_changed_block返回的表字段包含:合并起始的lsn,合并截止的lsn, 表空间oid,库oid,表的relfilenode,表的fork number,表是否被删除,表是否被创建,表是否被截断,表被截断后的页面数,有多少页被修改以及被修改的页号的列表。
  • pg_stop_backup() 描述:完成执行在线备份。(需要管理员角色或复制的角色) 返回值类型:text 备注:pg_stop_backup删除pg_start_backup创建的标签文件,并且在事务日志归档区里创建一个备份历史文件。这个历史文件包含给予pg_start_backup的标签、备份的事务日志起始与终止位置、备份的起始和终止时间。返回值是备份的事务日志终止位置。计算出中止位置后,当前事务日志的插入点将自动前进到下一个事务日志文件,这样,结束的事务日志文件可以被立即归档从而完成备份。 示例: 1 2 3 4 5 SELECT pg_stop_backup(); pg_stop_backup ---------------- 0/4401E610 (1 row)
  • 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_cbm_recycle_file(slotName name, targetLSNArg text) 描述:删除不再使用的cbm文件,并返回删除后的第一条lsn。其中,slotName为空字符串时,将直接使用targetLSNArg作为回收点;在备份和容灾时,因为并行因素,需要指定相应的slotName,首先记录该任务的targetLSNArg到该slot中,然后遍历所有的backup slots,找到最小的lsn作为回收点。 返回值类型:text
  • pg_create_restore_point(name text) 描述:为执行恢复创建一个命名点。(需要管理员角色) 返回值类型:text 备注:pg_create_restore_point创建了一个可以用作恢复目的、有命名的事务日志记录,并返回相应的事务日志位置。在恢复过程中,recovery_target_name可以通过这个名称定位对应的日志恢复点,并从此处开始执行恢复操作。避免使用相同的名称创建多个恢复点,因为恢复操作将在第一个匹配(恢复目标)的名称上停止。
  • pg_current_xlog_insert_location() 描述:获取当前事务日志的插入位置。 返回值类型:text 备注:pg_current_xlog_insert_location显示当前事务日志的插入位置。插入点是事务日志在某个瞬间的“逻辑终点”,而实际的写入位置则是从服务器内部缓冲区写出时的终点。写入位置是可以从服务器外部检测到的终点,如果要归档部分完成事务日志文件,则该操作即可实现。插入点主要用于服务器调试目的。如果是只读操作,不需要系统管理员权限。 示例: 1 2 3 4 5 SELECT pg_current_xlog_insert_location(); pg_current_xlog_insert_location --------------------------------- 0/4316AD50 (1 row)
  • pg_current_xlog_location() 描述:获取当前事务日志的写入位置。 返回值类型:text 备注:pg_current_xlog_location使用与前面那些函数相同的格式显示当前事务日志的写入位置。如果是只读操作,不需要系统管理员权限。 示例: 1 2 3 4 5 SELECT pg_current_xlog_location(); pg_current_xlog_location -------------------------- 0/4310D5D8 (1 row)
  • 语法格式 1 2 3 4 5 6 CREATE BLOCK RULE [ IF NOT EXISTS ] block_name [ [ TO user_name@'host' ] | [ TO user_name ] | [ TO 'host' ] ] | [ FOR UPDATE | SELECT | INSERT | DELETE | MERGE ] | FILTER BY { SQL ( 'text' ) | TEMPLATE ( template_parameter = value ) } [ WITH ( { with_parameter = value }, [, ... ] ) ];
  • 示例 创建名称为query_block的查询过滤规则: 1 2 3 4 5 CREATE BLOCK RULE query_block TO user1@'192.168.x.x' FOR SELECT FILTER BY SQL('select * from table_name')WITH(application_name='gsql',query_band='test1',table_num='2',partition_num='3',estimate_row='1000'); CREATE BLOCK RULE query_block FILTER BY TEMPLATE(unique_sql_id='1634655172'); CREATE BLOCK RULE query_block FILTER BY TEMPLATE(sql_hash='sql_c3d119fe636b9ef439b1f96c561c74ff');
  • 参数说明 block_name 需要创建的查询过滤规则名称。 取值范围:字符串,需符合标识符的命名规范。 user_name 查询过滤规则适用的用户。 取值范围:字符串,有效的用户名。 host 查询过滤规则适用的客户端IP。 取值范围:字符串,有效的IP地址。 SQL 查询过滤规则正则匹配语句。 取值范围:字符串,正则表达式。正则匹配的语句或者关键词长度不能超过1024个字符。 template_parameter 查询过滤规则匹配模板。 取值范围:unique_sql_id/sql_hash,其值为字符串,其中unique_sql_id必须为全数字。 with_parameter 查询过滤规则选项参数。可以一起设置,满足任何一个参数的限制查询将会被过滤。 取值范围: application_name(客户端名称) query_band table_num(语句扫描表个数) partition_num(算子预估扫描的最大分区数) estimate_row(算子预估扫描的最大表行数)
  • 参数说明 block_name 需要修改属性的查询过滤规则名称。 取值范围:字符串,需符合标识符的命名规范。 user_name 查询过滤规则适用的用户。 取值范围:字符串,有效的用户名。 host 查询过滤规则适用的客户端IP。 取值范围:字符串,有效的IP地址。 SQL 查询过滤规则正则匹配语句。 取值范围:字符串,正则表达式。 template_parameter 查询过滤规则匹配模板。 取值范围:unique_sql_id/sql_hash,其值为字符串,其中unique_sql_id必须为全数字。 with_parameter 查询过滤规则选项参数。 取值范围: application_name query_band table_num partition_num estimate_row
  • 示例 创建查询规则query_block: 1 CREATE BLOCK RULE query_block FILTER BY SQL('update table_table set a=1'); 修改查询规则query_block的属性: 1 ALTER BLOCK RULE query_block TO user1@'192.168.x.x' FOR SELECT FILTER BY SQL('select * from table_name')WITH(application_name='gsql',query_band='test1',table_num='2',partition_num='3',estimate_row='1000'); 对查询规则query_block进行重命名: 1 ALTER BLOCK RULE query_block RENAME TO query_block_new;
  • 语法格式 1 2 3 4 5 6 7 ALTER BLOCK RULE block_name [ [ TO user_name@'host' ] | [ TO user_name ] | [ TO 'host' ] | [ TO DEFAULT ] ] | [ FOR UPDATE | SELECT | INSERT | DELETE | MERGE | DEFAULT ] | FILTER BY { SQL ( 'text' ) | TEMPLATE ( template_parameter = value ) } [ WITH ( { with_parameter = value }, [, ... ] ) ]; ALTER BLOCK RULE block_name RENAME to new_block_name;
  • 参数说明 name 新订阅的名称。 取值范围:字符串,要符合标识符的命名规范。 conninfo 连接发布端的字符串。 如host=1.1.1.1,2.2.2.2 port=10000,20000 dbname=postgres user=repusr1 password=password_123。 host 发布端IP地址,可以同时指定发布端主机和备机的IP地址,如果同时指定了多个IP,以英文逗号分隔。 port 发布端端口,此处的端口不能使用主端口,而应该使用主端口+1端口,否则会与线程池冲突。可以同时指定发布端主机和备机的端口,如果同时指定了多个端口,以英文逗号分隔。 host和port的数量要一致,并且要一一对应。 dbname 发布所在的数据库。 user和password 用于连接发布端且具有系统管理员权限(SYSADMIN)或者运维管理员权限(OPRADMIN)的用户名和密码。 publication_name 要订阅的发布端的发布名称,一个订阅可以对应多个发布。 WITH ( subscription_parameter [= value] [, … ] ) 该子句指定订阅的可选参数。支持的参数有: enabled 指定订阅是否应该主动复制,或者是否应该只是设置,但尚未启动。 取值范围:true,false。 默认值:true。 create_slot 指定该命令是否要在发布者上创建复制槽。 取值范围:true,false。 默认值:true。 slot_name 要使用的复制槽的名称。 取值范围:字符串。 默认值:默认使用订阅名称作为复制槽的名称。
  • 语法格式 更新订阅的连接信息。 1 ALTER SUBSCRIPTION name CONNECTION 'conninfo' 更新订阅的发布端的发布名称。 1 ALTER SUBSCRIPTION name SET PUBLICATION publication_name [, ...] 激活订阅。 1 ALTER SUBSCRIPTION name ENABLE 禁用订阅。 1 ALTER SUBSCRIPTION name DISABLE 设置订阅的参数。 1 ALTER SUBSCRIPTION name SET ( subscription_parameter [= value] [, ... ] ) 更改订阅的所有者。 1 ALTER SUBSCRIPTION name OWNER TO new_owner
  • 参数说明 name 待修改的订阅的名称。 取值范围:字符串,符合标识符命名规范。 CONNECTION 'conninfo' 该子句修改最初由CREATE SUBSCRIPTION设置的连接属性。 详细的参数说明参考conninfo参数说明。 publication_name 新发布的名称。 取值范围:字符串,符合标识符命名规范。 ENABLE 启用先前禁用的订阅,在事务结束时启动逻辑复制工作。 DISABLE 禁用正在运行的订阅,在事务结束时停止逻辑复制工作。 SET ( publication_parameter [= value] [, ... ] ) 该子句修改最初由CREATE PUBLICATION设置的发布参数。详细的参数说明请参考CREATE SUBSCRIPTION的参数说明。 new_owner 订阅新所有者的用户名称。 new_name 订阅的新名称。
  • 注意事项 该语法仅8.2.0.100及以上集群版本支持。 如果既没有指定FOR TABLE,也没有指定FOR ALL TABLES, 那么这个发布就是以一组空表开始的,可以在后续添加表。 创建发布不会开始复制。它只为未来的订阅者定义一个分组和过滤逻辑。 要创建一个发布,调用者必须拥有当前数据库的CREATE权限。 要将表添加到发布中,调用者必须拥有该表的所有权。FOR ALL TABLES和FOR ALL TABLES IN SCHEMA子句要求调用者具有系统管理员权限。 对一个待发布表,不能同时通过FOR TABLE和FOR ALL TABLES IN SCHEMA方式添加到同一个发布中。
  • 语法格式 1 2 3 4 CREATE PUBLICATION name [ FOR ALL TABLES | FOR publication_object [, ... ] ] [ WITH ( publication_parameter [=value] [, ... ] ) ]; 其中发布对象publication_object为: TABLE table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ... ]
  • 示例 创建一个发布,发布两个表和两个模式中所有更改。 创建示例表tpcds.ship_mode_t1: CREATE TABLE tpcds.ship_mode_t1 ( SM_SHIP_MODE_SK INTEGER NOT NULL, SM_SHIP_MODE_ID CHAR(16) NOT NULL, SM_TYPE CHAR(30) , SM_CODE CHAR(10) , SM_CARRIER CHAR(20) , SM_CONTRACT CHAR(20) ) WITH (ORIENTATION = COLUMN,enable_disaster_cstore='on') DISTRIBUTE BY HASH(SM_SHIP_MODE_SK); 创建示例表tpcds.customer_address_p1: CREATE TABLE tpcds.customer_address_p1 ( CA_ADDRESS_SK INTEGER NOT NULL, CA_ADDRESS_ID CHAR(16) NOT NULL, CA_STREET_NUMBER CHAR(10) , CA_STREET_NAME VARCHAR(60) , CA_STREET_TYPE CHAR(15) , CA_SUITE_NUMBER CHAR(10) , CA_CITY VARCHAR(60) , CA_COUNTY VARCHAR(30) , CA_STATE CHAR(2) , CA_ZIP CHAR(10) , CA_COUNTRY VARCHAR(20) , CA_GMT_OFFSET DECIMAL(5,2) , CA_LOCATION_TYPE CHAR(20) ) WITH (ORIENTATION = COLUMN,enable_disaster_cstore='on') DISTRIBUTE BY HASH(CA_ADDRESS_SK); 创建示例模式myschema1: CREATE SCHEMA myschema1; 创建示例模式myschema2: CREATE SCHEMA myschema2; 创建发布,发布两个表和两个模式中所有更改。 CREATE PUBLICATION mypublication FOR TABLE users, departments, ALL TABLES IN SCHEMA myschema1, myschema2; 创建一个发布,发布所有表中的所有更改。 CREATE PUBLICATION alltables FOR ALL TABLES;
  • 参数说明 name 新发布的名称。 取值范围:字符串,要符合标识符的命名规范。 FOR ALL TABLES 将发布标记为复制数据库中所有细粒度容灾主表的更改,包括在将来创建的表。 FOR TABLE 指定要添加到发布的表的列表。只有细粒度容灾主表才能成为发布的一部分。 table_name 要添加到发布的表的名字,可以带模式名。 取值范围:字符串,要符合标识符的命名规范。 FOR ALL TABLES IN SCHEMA 将发布标记为复制指定模式列表中所有细粒度容灾主表的更改,包括在将来创建的表。 schema_name 要添加到发布的模式的名字。 取值范围:字符串,要符合标识符的命名规范。 WITH ( publication_parameter [=value] [, ... ] ) 该子句指定发布的可选参数。支持下列参数: publish 这个参数决定了哪些DML操作将由新的发布给订阅者。 取值范围:字符串,用逗号分隔的操作列表。允许的操作是insert, update,delete和truncate。 默认发布所有动作,所以这个选项的默认值是:'insert, update, delete, truncate'。
共100000条