华为云用户手册

  • 性能 在Benchmarksql-5.0的100warehouse场景下,采用pg_logical_slot_get_changes时: 单次解码数据量4K行(对应约5MB~10MB日志),解码性能0.3MB/s~0.5 MB/s。 单次解码数据量32K行(对应约40MB~80MB日志),解码性能3MB/s~5MB/s。 单次解码数据量256K行(对应约320MB~640MB日志),解码性能3MB/s~5MB/s。 单次解码数据量再增大,解码性能无明显提升。 如果采用pg_logical_slot_peek_changes + pg_replication_slot_advance方式,解码性能相比采用pg_logical_slot_get_changes时要下降30%~50%。
  • 操作步骤 以具有REPLICATION权限的用户登录 GaussDB 集群任一主机。 使用如下命令通过DN端口连接数据库。 gsql -U user1 -d gaussdb -p 40000 -r 其中,user1为用户名,gaussdb为需要连接的数据库名称,40000为数据库DN端口号,用户可根据实际情况替换。复制槽是建立在DN上的,因此需要通过DN端口连接数据库。 创建名称为slot1的逻辑复制槽。 1 2 3 4 5 gaussdb=# SELECT * FROM pg_create_logical_replication_slot('slot1', 'mppdb_decoding'); slotname | xlog_position ----------+--------------- slot1 | 0/601C150 (1 row) 在数据库中创建表t,并向表t中插入数据。 1 2 gaussdb=# CREATE TABLE t(a int PRIMARY KEY, b int); gaussdb=# INSERT INTO t VALUES(3,3); 读取复制槽slot1解码结果,解码条数为4096。 逻辑解码选项可参考逻辑解码选项。 1 2 3 4 5 6 7 8 9 10 gaussdb=# SELECT * FROM pg_logical_slot_peek_changes('slot1', NULL, 4096); location | xid | data -----------+-------+------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------- 0/601C188 | 1010023 | BEGIN 1010023 0/601ED60 | 1010023 | COMMIT 1010023 CS N 1010022 0/601ED60 | 1010024 | BEGIN 1010024 0/601ED60 | 1010024 | {"table_name":"public.t","op_type":"INSERT","columns_name":["a","b"],"columns_type":["integer","integer"],"columns_val":["3","3"],"old_keys_name":[],"old_keys_type":[],"old_keys_val":[]} 0/601EED8 | 1010024 | COMMIT 1010024 CSN 1010023 (5 rows) 删除逻辑复制槽slot1。 1 2 3 4 5 gaussdb=# SELECT * FROM pg_drop_replication_slot('slot1'); pg_drop_replication_slot -------------------------- (1 row)
  • 逻辑解码选项 通用选项: include-xids: 解码出的data列是否包含xid信息。 取值范围:0或1,默认值为1。 0:设为0时,解码出的data列不包含xid信息。 1:设为1时,解码出的data列包含xid信息。 skip-empty-xacts: 解码时是否忽略空事务信息。 取值范围:0或1,默认值为0。 0:设为0时,解码时不忽略空事务信息。 1:设为1时,解码时会忽略空事务信息。 include-timestamp: 解码信息是否包含commit时间戳。 取值范围:0或1,默认值为0。 0:设为0时,解码信息不包含commit时间戳。 1:设为1时,解码信息包含commit时间戳。 only-local: 是否仅解码本地日志。 取值范围:0或1,默认值为1。 0:设为0时,解码非本地日志和本地日志。 1:设为1时,仅解码本地日志。 force-binary: 是否以二进制格式输出解码结果。 取值范围:0,默认值为0。 0:设为0时,以文本格式输出解码结果。 white-table-list: 白名单参数,包含需要进行解码的schema和表名。 取值范围:包含白名单中表名的字符串,不同的表以','为分隔符进行隔离;使用'*'来模糊匹配所有情况;schema名和表名间以'.'分割,不允许存在任意空白符。例如: select * from pg_logical_slot_peek_changes('slot1', NULL, 4096, 'white-table-list', 'public.t1,public.t2,*.t3,my_schema.*'); max-txn-in-memory: 内存管控参数,单位为MB,单个事务占用内存大于该值即进行落盘。 取值范围:0~100的整型,默认值为0,即不开启此种管控。 max-reorderbuffer-in-memory 内存管控参数,单位为GB,拼接-发送线程中正在拼接的事务总内存(包含缓存)大于该值则对当前解码事务进行落盘。 取值范围:0~100的整型,默认值为0,即不开启此种管控。 include-user: 事务的BEGIN逻辑日志是否输出事务的用户名。事务的用户名特指授权用户——执行事务对应会话的登录用户,它在事务的整个执行过程中不会发生变化。 取值范围:0或1,默认值为0。 0:设为0时,事物的BEGIN逻辑日志不输出事务的用户名。 1:设为1时,事物的BEGIN逻辑日志输出事务的用户名。 exclude-userids: 黑名单用户的OID参数。 取值范围:字符串类型,指定黑名单用户的OID,多个OID通过','分隔,不校验用户OID是否存在。 exclude-users: 黑名单用户的名称列表。 取值范围:字符串类型,指定黑名单用户名,通过','分隔,不校验用户名是否存在。 dynamic-resolution: 是否动态解析黑名单用户名。 取值范围:0或1,默认值为1。 0:设为0时,当解码观测到黑名单exclude-users中用户不存在时将会报错并退出逻辑解码。 1:设为1时,当解码观测到黑名单exclude-users中用户不存在时继续解码。 standby-connection: 仅流式解码设置,是否仅限制备机解码。 取值范围:bool型,默认值为false。 true:设为true时,仅允许连接备机解码,连接主机解码时会报错退出。 false:设为false时,不做限制,允许连接主机或备机解码。 sender-timeout: 仅流式解码设置,内核与客户端的心跳超时阈值。当该时间段内没有收到客户端任何消息,逻辑解码将主动停止,并断开和客户端的连接。单位为毫秒(ms)。 取值范围:0~2147483647的int型,默认值取决于GUC参数logical_sender_timeout的配置值。 enable-heartbeat: 仅流式解码时设置,是否输出心跳日志。 取值范围:bool型,默认值为false。 true:设为true时,输出心跳日志。 false:设为false时,不输出心跳日志。 若开启心跳日志选项,此处说明心跳日志如何解析:二进制格式首先是字符'h'表示是消息是心跳日志,之后是心跳日志内容,分别是8字节uint64,直连DN解码场景代表LSN,表示发送心跳逻辑日志时读取的WAL日志结束位置,而在分布式强一致解码场景为CSN,表示发送心跳逻辑日志时已发送的解码日志事务CSN;8字节uint64,直连DN解码场景代表LSN,表示发送心跳逻辑日志时刻已经落盘的WAL日志的位置,而在分布式强一致解码场景为CSN,表示集群下一个提交事务将获得的CSN;8字节int64代表时间戳(从1970年1月1日开始),表示最新解码到的事务日志或检查点日志的产生时间戳。关于消息结束符:如果是二进制格式则为字符'F',如果格式为text或者json且为批量发送则结束符为0,否则没有结束符。消息内容采用大端字节序进行数据传输。具体格式见下图(考虑到前向兼容性,相关部分仍保留着LSN的命名方式,实际含义依具体场景而定): parallel-decode-num: 仅流式解码设置有效,并行解码的Decoder线程数量;系统函数调用场景下此选项无效,仅校验取值范围。 取值范围:取1表示按照原有的串行逻辑进行解码,取其余值即为开启并行解码,默认值为1。 当parallel-decode-num不配置(即为默认值1)或显式配置为1时,下述“并行解码”中的选项不可配置。 output-order: 仅流式解码设置有效,是否使用CSN顺序输出解码结果;系统函数调用场景下此选项无效,仅校验取值范围。 取值范围:0或1的int型,默认值为0。 0:设为0时,解码结果按照事务的COMMIT LSN排序,当且仅当解码复制槽的confirmed_csn列值为0(即不显示)时可使用该方式,否则报错。 1:设为1时,解码结果按照事务的CSN排序, 当且仅当解码复制槽的confirmed_csn列值为非零值时可使用该方式,否则报错。 当output-order不配置(即为默认值0,按照COMMIT LSN排序)或显式配置为0时,下述“CSN序解码”中的选项不可配置。 在流式解码场景,DN收到来自CN的逻辑解码连接时,output-order选项失效,默认采用CSN序解码。 auto-advance: 仅流式解码设置有效,是否允许自主推进逻辑复制槽。 取值范围:boolean型,默认值为false。 true:设为true时,在已发送日志都被确认推进且没有待发送事务时,推进逻辑复制槽到当前解码位置。 false:设为false时,完全交由复制业务调用日志确认接口推进逻辑复制槽。 skip-generated-columns: 逻辑解码控制参数,用于跳过生成列的输出。对UPDATE和DELETE的旧元组无效,相应元组始终会输出生成列。分布式版本暂不支持生成列,此配置选项暂无实际影响。 取值范围:boolean型,默认值为false。 true:值为true时,不输出生成列的解码结果。 false:设为false时,输出生成列的解码结果。 CSN序解码: logical-receiver-num: 仅流式解码设置有效,分布式解码启动的logical_receiver的数量,系统函数调用场景下此选项无效,仅校验取值范围。 取值范围:1~20的int型,默认值为1。当该值被设置为比当前集群分片数更大时,将被修改为分片数。 slice-id: 仅连接DN解码时设置,指定当前DN所在的分片号,用于复制表解码。 取值范围:0~8192的int型,默认值为-1,即不指定分片号,但在解码到复制表时会报错。 该配置选项在尝试连接DN使用CSN序逻辑复制槽(confirmed_csn为非0值的复制槽)进行解码时使用,用来表示自己的分片号(即第几个分片,第一个分片则输入0),如果不设置该参数(即使用默认值-1)在解码到复制表时将会报错。此参数用于使用连接CN的分布式解码时,CN从DN收集解码结果时使用。不建议在此场景下手动连接DN解码。 start-position: 仅连接DN设置,主要功能为过滤掉小于指定CSN对应的事务,以及针对指定的CSN对应的事务,过滤掉小于指定LSN的日志,且指定CSN对应事务的BEGIN日志一定被过滤掉。 取值范围:字符串类型,可以解析为以'/'分割,左右两侧分别为代表CSN和LSN的两个uint64类型。 该配置选项用于CN解码时,CN建立与DN的连接后发送解码请求时使用此配置选项过滤可能已经被接收过的日志。不建议在此场景下手动连接DN解码使用此参数。 并行解码: 以下配置选项仅限流式解码设置。 decode-style: 指定解码格式。 取值范围:char型的字符'j'、't'或'b',分别代表json格式,text格式及二进制格式。默认值为'b'即二进制格式解码。 对于json格式和text格式解码,开启批量发送选项时的解码结果中,每条解码语句的前4字节组成的uint32代表该条语句总字节数(不包含该uint32类型占用的4字节,0代表本批次解码结束),8字节uint64代表相应lsn(begin对应first_lsn,commit对应end_lsn,其他场景对应该条语句的lsn)。 二进制格式编码规则如下所示: 前4字节代表接下来到语句级别分隔符字母P(不含)或者该批次结束符F(不含)的解码结果的总字节数,该值如果为0代表本批次解码结束。 接下来8字节uint64代表相应lsn(begin对应first_lsn,commit对应end_lsn,其他场景对应该条语句的lsn)。 接下来1字节的字母有5种B/C/I/U/D,分别代表begin/commit/insert/update/delete。 第3步字母为B时。 接下来的8字节uint64代表CSN。 接下来的8字节uint64代表first_lsn。 【该部分为可选项】接下来的1字节字母如果为T,则代表后面4字节uint32表示该事务commit时间戳长度,再后面等同于该长度的字符为时间戳字符串。 【该部分为可选项】接下来的1字节字母如果为N,则代表后面4字节uint32表示该事务用户名的长度,再后面等同于该长度的字符为事务的用户名字。 因为之后仍可能有解码语句,接下来会有1字节字母P或F作为语句间的分隔符,P代表本批次仍有解码的语句,F代表本批次完成。 第3步字母为C时: 【该部分为可选项】接下来1字节字母如果为X,则代表后面的8字节uint64表示xid。 【该部分为可选项】接下来的1字节字母如果为T,则代表后面4字节uint32表示时间戳长度,再后面等同于该长度的字符为时间戳字符串。 因为批量发送日志时,一个COMMIT日志解码之后可能仍有其他事务的解码结果,接下来的1字节字母如果为P则表示该批次仍需解码,如果为F则表示该批次解码结束。 第3步字母为I/U/D时: 接下来的2字节uint16代表schema名的长度。 按照上述长度读取schema名。 接下来的2字节uint16代表table名的长度。 按照上述长度读取table名。 【该部分为可选项】接下来1字符字母如果为N代表为新元组,如果为O代表为旧元组,这里先发送新元组。 接下来的2字节uint16代表该元组需要解码的列数,记为attrnum。 以下流程重复attrnum次。 接下来2字节uint16代表列名的长度。 按照上述长度读取列名。 接下来4字节uint32代表当前列类型的Oid。 接下来4字节uint32代表当前列的值(以字符串格式存储)的长度,如果为0xFFFFFFFF则表示NULL,如果为0则表示长度为0的字符串。 按照上述长度读取列值。 因为之后仍可能有解码语句,接下来的1字节字母如果为P则表示该批次仍需解码,如果为F则表示该批次解码结束。 sending-batch: 指定是否批量发送。 取值范围:0或1的int型,默认值为0。 0:设为0时,表示逐条发送解码结果。 1:设为1时,表示解码结果累积到达1MB则批量发送解码结果。 开启批量发送的场景中,当解码格式为'j'或't'时,在原来的每条解码语句之前会附加一个uint32类型,表示本条解码结果长度(长度不包含当前的uint32类型),以及一个uint64类型,表示当前解码结果对应的lsn。 在“CSN序解码”场景下,批量发送仅限于单个事务内(即如果一个事务有多条较小的语句会采用批量发送),不会使用批量发送功能在同一批次里发送多个事务。 parallel-queue-size: 指定并行逻辑解码线程间进行交互的队列长度。 取值范围:2~1024的int型,且必须为2的整数幂,默认值为128。 队列长度和解码过程的内存使用量正相关。 父主题: 逻辑解码
  • 闪回恢复 闪回恢复功能是数据库恢复技术的一环,可以有选择性的撤销一个已提交事务的影响,将数据从人为不正确的操作中进行恢复。在采用闪回技术之前,只能通过备份恢复、PITR等手段找回已提交的数据库修改,恢复时长需要数分钟甚至数小时。采用闪回技术后,通过闪回Drop和闪回Truncate恢复已提交的数据库Drop/Truncate的数据,只需要秒级,而且恢复时间和数据库大小无关。 Astore引擎暂不支持闪回功能。 备机不支持闪回操作。 用户可以根据需要开启闪回功能,开启后会带来一定的性能劣化。 闪回查询 闪回表 闪回DROP/TRUNCATE 父主题: Ustore存储引擎
  • 逻辑解码选项 通用选项: include-xids: 解码出的data列是否包含xid信息。 取值范围:0或1,默认值为1。 0:设为0时,解码出的data列不包含xid信息。 1:设为1时,解码出的data列包含xid信息。 skip-empty-xacts: 解码时是否忽略空事务信息。 取值范围:0或1,默认值为0。 0:设为0时,解码时不忽略空事务信息。 1:设为1时,解码时会忽略空事务信息。 include-timestamp: 解码信息是否包含commit时间戳。 取值范围:0或1,默认值为0。 0:设为0时,解码信息不包含commit时间戳。 1:设为1时,解码信息包含commit时间戳。 only-local: 是否仅解码本地日志。 取值范围:0或1,默认值为1。 0:设为0时,解码非本地日志和本地日志。 1:设为1时,仅解码本地日志。 force-binary: 是否以二进制格式输出解码结果。 取值范围:0,默认值为0。 0:设为0时,以文本格式输出解码结果。 white-table-list: 白名单参数,包含需要进行解码的schema和表名。 取值范围:包含白名单中表名的字符串,不同的表以','为分隔符进行隔离;使用'*'来模糊匹配所有情况;schema名和表名间以'.'分割,不允许存在任意空白符。例如: select * from pg_logical_slot_peek_changes('slot1', NULL, 4096, 'white-table-list', 'public.t1,public.t2,*.t3,my_schema.*'); max-txn-in-memory: 内存管控参数,单位为MB,单个事务占用内存大于该值即进行落盘。 取值范围:0~100的整型,默认值为0,即不开启此种管控。 max-reorderbuffer-in-memory 内存管控参数,单位为GB,拼接-发送线程中正在拼接的事务总内存(包含缓存)大于该值则对当前解码事务进行落盘。 取值范围:0~100的整型,默认值为0,即不开启此种管控。 include-user: 事务的BEGIN逻辑日志是否输出事务的用户名。事务的用户名特指授权用户——执行事务对应会话的登录用户,它在事务的整个执行过程中不会发生变化。 取值范围:0或1,默认值为0。 0:设为0时,事物的BEGIN逻辑日志不输出事务的用户名。 1:设为1时,事物的BEGIN逻辑日志输出事务的用户名。 exclude-userids: 黑名单用户的OID参数。 取值范围:字符串类型,指定黑名单用户的OID,多个OID通过','分隔,不校验用户OID是否存在。 exclude-users: 黑名单用户的名称列表。 取值范围:字符串类型,指定黑名单用户名,通过','分隔,不校验用户名是否存在。 dynamic-resolution: 是否动态解析黑名单用户名。 取值范围:0或1,默认值为1。 0:设为0时,当解码观测到黑名单exclude-users中用户不存在时将会报错并退出逻辑解码。 1:设为1时,当解码观测到黑名单exclude-users中用户不存在时继续解码。 standby-connection: 仅流式解码设置,是否仅限制备机解码。 取值范围:bool型,默认值为false。 true:设为true时,仅允许连接备机解码,连接主机解码时会报错退出。 false:设为false时,不做限制,允许连接主机或备机解码。 sender-timeout: 仅流式解码设置,内核与客户端的心跳超时阈值。当该时间段内没有收到客户端任何消息,逻辑解码将主动停止,并断开和客户端的连接。单位为毫秒(ms)。 取值范围:0~2147483647的int型,默认值取决于GUC参数logical_sender_timeout的配置值。 change-log-max-len: 逻辑日志长度上限参数。 取值范围:1~65535, 默认值为4096。 超过上限会销毁重新分配内存保存。过长会增加内存占用,过短会频繁触发内存申请和释放的操作。 max-decode-to-sender-cache-num: 发送解码日志的缓存阈值大小。 取值范围:1~65535,默认值为4096。 不超过这个阈值时暂时不发送,超过时才发送。减少频繁发送的负担。 enable-heartbeat: 仅流式解码设置,是否输出心跳日志。 取值范围:bool型,默认值为false。 true:设为true时,输出心跳日志。 false:设为false时,不输出心跳日志。 若开启心跳日志选项,此处说明心跳日志如何解析:二进制格式首先是字符'h'表示是消息是心跳日志,之后是心跳日志内容内容,分别是8字节uint64代表LSN,表示发送心跳逻辑日志时读取的WAL日志结束位置;8字节uint64代表LSN,表示发送心跳逻辑日志时刻已经落盘的WAL日志的位置;8字节int64代表时间戳(从1970年1月1日开始),表示最新解码到的事务日志或检查点日志的产生时间戳。关于消息结束符:如果是二进制格式则为字符'F',如果格式为text或者json且为批量发送则结束符为0,否则没有结束符。具体解析见下图: parallel-decode-num: 仅流式解码设置有效,并行解码的Decoder线程数量;系统函数调用场景下此选项无效,仅校验取值范围。 取值范围:取1表示按照原有的串行逻辑进行解码,取其余值即为开启并行解码,默认值为1。 当parallel-decode-num不配置(即为默认值1)或显式配置为1时,下述“并行解码”中的选项不可配置。 output-order: 仅流式解码设置有效,是否使用CSN顺序输出解码结果;系统函数调用场景下此选项无效,仅校验取值范围。 取值范围:0或1的int型,默认值为0。 0:设为0时,解码结果按照事务的COMMIT LSN排序,当且仅当解码复制槽的confirmed_csn列值为0(即不显示)时可使用该方式,否则报错。 1:设为1时,解码结果按照事务的CSN排序, 当且仅当解码复制槽的confirmed_csn列值为非零值时可使用该方式,否则报错。 auto-advance: 仅流式解码设置有效,是否允许自主推进逻辑复制槽。 取值范围:boolean型,默认值为false。 true:设为true时,在已发送日志都被确认推进且没有待发送事务时,推进逻辑复制槽到当前解码位置。 false:设为false时,完全交由复制业务调用日志确认接口推进逻辑复制槽。 skip-generated-columns: 逻辑解码控制参数,用于跳过生成列的输出。对UPDATE和DELETE的旧元组无效,相应元组始终会输出生成列。 取值范围:boolean型,默认值为false。 true:值为true时,不输出生成列的解码结果。 false:设为false时,输出生成列的解码结果。 并行解码: 以下配置选项仅限流式解码设置。 decode-style: 指定解码格式。 取值范围:char型的字符'j'、't'或'b',分别代表json格式,text格式及二进制格式。默认值为'b'即二进制格式解码。 对于json格式和text格式解码,开启批量发送选项时的解码结果中,每条解码语句的前4字节组成的uint32代表该条语句总字节数(不包含该uint32类型占用的4字节,0代表本批次解码结束),8字节uint64代表相应lsn(begin对应first_lsn,commit对应end_lsn,其他场景对应该条语句的lsn)。 二进制格式编码规则如下所示: 前4字节代表接下来到语句级别分隔符字母P(不含)或者该批次结束符F(不含)的解码结果的总字节数,该值如果为0代表本批次解码结束。 接下来8字节uint64代表相应lsn(begin对应first_lsn,commit对应end_lsn,其他场景对应该条语句的lsn)。 接下来1字节的字母有5种B/C/I/U/D,分别代表begin/commit/insert/update/delete。 第3步字母为B时。 接下来的8字节uint64代表CSN。 接下来的8字节uint64代表first_lsn。 【该部分为可选项】接下来的1字节字母如果为T,则代表后面4字节uint32表示该事务commit时间戳长度,再后面等同于该长度的字符为时间戳字符串。 【该部分为可选项】接下来的1字节字母如果为N,则代表后面4字节uint32表示该事务用户名的长度,再后面等同于该长度的字符为事务的用户名字。 因为之后仍可能有解码语句,接下来会有1字节字母P或F作为语句间的分隔符,P代表本批次仍有解码的语句,F代表本批次完成。 第3步字母为C时: 【该部分为可选项】接下来1字节字母如果为X,则代表后面的8字节uint64表示xid。 【该部分为可选项】接下来的1字节字母如果为T,则代表后面4字节uint32表示时间戳长度,再后面等同于该长度的字符为时间戳字符串。 因为批量发送日志时,一个COMMIT日志解码之后可能仍有其他事务的解码结果,接下来的1字节字母如果为P则表示该批次仍需解码,如果为F则表示该批次解码结束。 第3步字母为I/U/D时: 接下来的2字节uint16代表schema名的长度。 按照上述长度读取schema名。 接下来的2字节uint16代表table名的长度。 按照上述长度读取table名。 【该部分为可选项】接下来1字符字母如果为N代表为新元组,如果为O代表为旧元组,这里先发送新元组。 接下来的2字节uint16代表该元组需要解码的列数,记为attrnum。 以下流程重复attrnum次。 接下来2字节uint16代表列名的长度。 按照上述长度读取列名。 接下来4字节uint32代表当前列类型的Oid。 接下来4字节uint32代表当前列的值(以字符串格式存储)的长度,如果为0xFFFFFFFF则表示NULL,如果为0则表示长度为0的字符串。 按照上述长度读取列值。 因为之后仍可能有解码语句,接下来的1字节字母如果为P则表示该批次仍需解码,如果为F则表示该批次解码结束。 sending-batch: 指定是否批量发送。 取值范围:0或1的int型,默认值为0。 0:设为0时,表示逐条发送解码结果。 1:设为1时,表示解码结果累积到达1MB则批量发送解码结果。 开启批量发送的场景中,当解码格式为'j'或't'时,在原来的每条解码语句之前会附加一个uint32类型,表示本条解码结果长度(长度不包含当前的uint32类型),以及一个uint64类型,表示当前解码结果对应的lsn。 在使用CSN顺序输出解码结果的场景下,批量发送仅限于单个事务内(即如果一个事务有多条较小的语句会采用批量发送),不会使用批量发送功能在同一批次里发送多个事务。 parallel-queue-size: 指定并行逻辑解码线程间进行交互的队列长度。 取值范围:2~1024的int型,且必须为2的整数幂,默认值为128。 队列长度和解码过程的内存使用量正相关。 logical-reader-bind-cpu: reader 线程绑定cpu核号的参数。 取值范围:-1~65535,不使用该参数则为不绑核。 默认-1,为不绑核。-1不可手动设置,核号应确保在机器总逻辑核数以内,不然会返回报错。多个线程绑定同一个核会导致该核负担加重,从而导致性能下降。 logical-decoder-bind-cpu-index: 逻辑解码线程绑定cpu核号的参数。 取值范围: -1~65535,不使用该参数则为不绑核。 默认 -1,不绑核。-1不可手动设置,核号应确保在机器总逻辑核数以内且小于 [cpu核数 - 并行逻辑解码数],不然会返回报错。 从给定的核号参数开始,新拉起的线程会依次递增加一。 多个线程绑定同一个核会导致该核负担加重,从而导致性能下降。 GaussDB在进行逻辑解码和日志回放时,会占用大量的CPU资源,相关线程如Walwriter、WalSender、WALreceiver、pageredo就处于性能瓶颈,如果能将这些线程运行绑定在固定的CPU上运行,可以减少因操作系统调度线程频繁切换CPU,导致缓存未命中带来的性能开销,从而提高流程处理速度,如用户场景有性能需求,可根据以下的绑核样例进行配置优化。 参数样例: walwriter_cpu_bind=1 walwriteraux_bind_cpu=2 wal_receiver_bind_cpu=4 wal_rec_writer_bind_cpu=5 wal_sender_bind_cpu_attr='cpuorderbind:7-14' redo_bind_cpu_attr='cpuorderbind:16-19' logical-reader-bind-cpu=20 logical-decoder-bind-cpu-index=21 样例中1.2.3.4.5.6通过GUC工具设置,使用指令如 gs_guc set -Z datanode -N all -I all -c “walwriter_cpu_bind=1”。 样例中7.8通过JDBC客户端发起解码请求时添加。 样例中如walwriter_cpu_bind=1是限定该线程在1号CPU上运行。 cpuorderbind:7-14意为拉起的每个线程依次绑定7号到14号CPU,如果范围内的CPU用完,则新拉起的线程不参与绑核。 logical-decoder-bind-cpu-index意为拉起的线程从21号CPU依次开始绑定,后续拉起的线程分别绑定21、22、23,依次类推。 绑核的原则是一个线程占用一个CPU,样例中的GUC参数说明可参考管理员指南。 不恰当的绑核,例如将多个线程绑定在一个CPU上很有可能带来性能劣化。 可以通过lscpu指令查看“CPU(s):”得知自己环境的CPU逻辑核心数。 CPU逻辑核心数低于36则不建议使用此套绑核策略,此时建议使用默认配置(不进行参数设置)。 父主题: 逻辑解码
  • 性能 在Benchmarksql-5.0的100warehouse场景下,采用pg_logical_slot_get_changes时: 单次解码数据量4K行(对应约5MB~10MB日志),解码性能0.3MB/s~0.5 MB/s。 单次解码数据量32K行(对应约40MB~80MB日志),解码性能3MB/s~5MB/s。 单次解码数据量256K行(对应约320MB~640MB日志),解码性能3MB/s~5MB/s。 单次解码数据量再增大,解码性能无明显提升。 如果采用pg_logical_slot_peek_changes + pg_replication_slot_advance方式,解码性能相比采用pg_logical_slot_get_changes时要下降30%~50%。
  • 功能描述 GaussDB对数据复制能力的支持情况为: 支持通过数据迁移工具定期向异构数据库(如Oracle等)进行数据同步,不具备实时数据复制能力。不足以支撑与异构数据库间并网运行实时数据同步的诉求。 GaussDB提供了逻辑解码功能,通过反解xlog的方式生成逻辑日志。目标数据库解析逻辑日志以实时进行数据复制。具体如图1所示。逻辑复制降低了对目标数据库的形态限制,支持异构数据库、同构异形数据库对数据的同步,支持目标库进行数据同步期间的数据可读写,数据同步时延低。 图1 逻辑复制 逻辑复制由两部分组成:逻辑解码和数据复制。逻辑解码会输出以事务为单位组织的逻辑日志。业务或数据库中间件将会对逻辑日志进行解析并最终实现数据复制。GaussDB当前只提供逻辑解码功能,因此本章节只涉及逻辑解码的说明。 逻辑解码为逻辑复制提供事务解码的基础能力, GaussDB使用 SQL函数接口进行逻辑解码。此方法调用方便,不需使用工具,对接外部工具接口也比较清晰,不需要额外适配。
  • 操作步骤 以具有REPLICATION权限的用户登录 GaussDB数据库 主节点。 使用如下命令通过连接数据库。 gsql -U user1 -d gaussdb -p 16000 -r 其中,user1为用户名,gaussdb为需要连接的数据库名称,16000为数据库端口号,用户可根据实际情况替换。 创建名称为slot1的逻辑复制槽。 1 2 3 4 5 gaussdb=# SELECT * FROM pg_create_logical_replication_slot('slot1', 'mppdb_decoding'); slotname | xlog_position ----------+--------------- slot1 | 0/601C150 (1 row) 在数据库中创建表t,并向表t中插入数据。 1 2 gaussdb=# CREATE TABLE t(a int PRIMARY KEY, b int); gaussdb=# INSERT INTO t VALUES(3,3); 读取复制槽slot1解码结果,解码条数为4096。 逻辑解码选项可参考逻辑解码选项。 1 2 3 4 5 6 7 8 9 10 gaussdb=# SELECT * FROM pg_logical_slot_peek_changes('slot1', NULL, 4096); location | xid | data -----------+-------+------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------- 0/601C188 | 1010023 | BEGIN 1010023 0/601ED60 | 1010023 | COMMIT 1010023 CSN 1010022 0/601ED60 | 1010024 | BEGIN 1010024 0/601ED60 | 1010024 | {"table_name":"public.t","op_type":"INSERT","columns_name":["a","b"],"columns_type":["integer","integer"],"columns_val":["3","3"],"old_keys_name":[],"old_keys_type":[],"old_keys_val":[]} 0/601EED8 | 1010024 | COMMIT 1010024 CSN 1010023 (5 rows) 删除逻辑复制槽slot1。 1 2 3 4 5 gaussdb=# SELECT * FROM pg_drop_replication_slot('slot1'); pg_drop_replication_slot -------------------------- (1 row)
  • 支持的事件列表 表1 云数据库GaussDB 事件来源 事件名称 事件ID 事件级别 事件说明 处理建议 事件影响 GaussDB 进程状态告警 ProcessStatusAlarm 重要 GaussDB关键进程退出,包括:CMS/CMA、ETCD、GTM、CN、DN。 等待进程自动恢复或者自动主备切换,观察业务是否恢复。如果业务未恢复,则提交工单。 主机进程故障,在主机上进行的业务将中断回滚。备机进程故障不影响业务。 组件状态告警 ComponentStatusAlarm 重要 GaussDB关键组件无响应,包括:CMA、ETCD、GTM、CN、DN。 等待进程自动恢复或者自动主备切换,观察业务是否恢复。如果业务未恢复,则提交工单。 主机进程无响应,在主机上进行的业务将无响应。备机进程故障不影响业务。 集群状态告警 ClusterStatusAlarm 重要 集群状态异常,包括: 集群只读、ETCD多数派故障、集群分布不均衡。 提交工单。 集群只读: 业务只读。 ETCD多数派故障:集群不可用。 集群分布不均衡:集群性能/可靠性降低。 硬件资源告警 HardwareResourceAlarm 重要 集群中出现严重的硬件故障,包括:磁盘损坏、GTM网络通信故障。 提交工单。 业务部分/全部受损。 状态转换告警 StateTransitionAlarm 重要 集群出现如下重要事件:DN build/build失败、DN强切、DN主备切换/failover、GTM主备切换/failover。 等待自动恢复,观察业务是否恢复。如果业务未恢复,则提交工单。 部分业务受损。 其他异常告警 OtherAbnormalAlarm 重要 磁盘使用阈值告警等。 关注业务变化,及时计划扩容。 超过使用阈值,将无法扩容。 实例运行状态异常 TaurusInstanceRunningStatusAbnormal 重要 由于灾难或者物理机故障导致实例故障时,会上报该事件,属于关键告警事件。 提交工单。 可能导致数据库服务不可用。 实例运行状态异常已恢复 TaurusInstanceRunningStatusRecovered 重要 针对灾难性的故障,GaussDB有高可用工具会自动进行恢复或者手动恢复,执行完成后会上报该事件。 不需要处理。 无 节点运行状态异常 TaurusNodeRunningStatusAbnormal 重要 由于灾难或者物理机故障导致数据库节点故障时,会上报该事件,属于关键告警事件。 检查数据库服务是否可以正常使用,并提交工单。 可能导致数据库服务不可用。 节点运行状态异常已恢复 TaurusNodeRunningStatusRecovered 重要 针对灾难性的故障,GaussDB有高可用工具会自动进行恢复或者手动恢复,执行完成后会上报该事件。 不需要处理。 无 创建实例业务失败 GaussDBV5CreateInstanceFailed 重要 创建实例失败产生的事件,一般是配额大小不足,底层资源耗尽导致。 先释放不再使用的实例再尝试重新发放,或者提交工单调整配额上限。 无法创建数据库实例。 添加节点失败 GaussDBV5ExpandClusterFailed 重要 一般是由于底层资源不足等原因导致。 提交工单协调资源,删除添加失败的节点,重新尝试添加新节点。 无 存储扩容失败 GaussDBV5EnlargeVolumeFailed 重要 一般是由于底层资源不足等原因导致。 提交工单协调资源再重试扩容操作。 如果磁盘满,会导致业务中断。 重启失败 GaussDBV5RestartInstanceFailed 重要 一般是由于网络问题等原因导致。 重试重启操作或提交工单。 可能导致数据库服务不可用。 全量备份失败 GaussDBV5FullBackupFailed 重要 一般是备份文件导出失败或上传失败等原因导致。 提交工单。 无法备份数据。 差量备份失败 GaussDBV5DifferentialBackupFailed 重要 一般是备份文件导出失败或上传失败等原因导致。 提交工单。 无法备份数据。 删除备份失败 GaussDBV5DeleteBackupFailed 重要 一般是清理备份文件失败导致。 提交工单。 可能导致OBS文件残留。 绑定EIP失败 GaussDBV5BindEIPFailed 重要 弹性公网IP已被占用或IP资源不足等原因导致。 提交工单。 导致实例无法使用公网链接或访问。 解绑EIP失败 GaussDBV5UnbindEIPFailed 重要 网络故障或公网EIP服务故障等原因导致。 重新解绑IP或提交工单。 可能导致IP资源残留。 参数组应用失败 GaussDBV5ApplyParamFailed 重要 一般是由于修改参数组命令超时导致。 重新尝试修改参数组操作。 无 参数修改失败 GaussDBV5UpdateInstanceParamGroupFailed 重要 一般是由于修改参数组命令超时导致。 重新尝试修改参数组操作。 无 备份恢复失败 GaussDBV5RestoreFromBcakupFailed 重要 一般是由底层资源不足或备份文件下载失败等原因导致。 提交工单。 可能导致在恢复失败期间数据库服务不可用。 父主题: 监控与告警
  • 在线测试模板操作步骤 进入模板目录,将目录内的所有内容添加到zip压缩包中,命名为 “xxx.zip”。 进入 RFS 控制台,创建资源栈并上传 “xxx.zip”,更多详情可参考RFS创建资源栈。 进入“配置参数”页面,按照页面提示填写配置参数后进入下一页。 进入“资源栈设置”页面,完成资源栈设置。 确认配置参数和资源栈设置无误后,点击创建执行计划。 查看费用明细,如下图所示,此处商家需要确保模板中包含的云资源都能正常询出价格,如果不能正常询出价格,可参考:预估执行计划价格。 如费用明细无误,单击部署后,等待资源部署成功。 部署成功后,即基于Terraform和华为云 资源编排 服务RFS完成了应用软件自动部署模板的开发。 本示例创建的云资源需要商家支付相应的费用,当商家不需要这些资源的时候,请删除资源栈并及时删除这些资源。
  • 为什么调用的API返回“projectId in token is nil”? 可能是获取token时使用的“project”与调用直播API时使用的“project”不一致导致的。 视频直播 服务为项目级服务,在 获取Token 时需获取相同区域的token。 示例:如果token的Endpoint为“cn-north-4”,则token仅在该区域生效,只能通过该token调用“cn-north-4”区域的直播API。获取项目ID的操作请参见获取项目ID。 父主题: API使用
  • 购买了直播CDN出流包,为什么还会从账户余额扣费? 这可能是由于您的CDN计费方式为“按带宽计费”、“按月结95带宽峰值计费”或“按日峰值月平均计费”导致的。 建议您在视频直播控制台的概览页将计费方式变更为“按流量计费”。 不同计费方式的生效时间存在差异,如下所示: 若由“月结95带宽峰值计费”或“日峰值月均计费”变更为“流量计费”模式,则新的计费方式将在次月1日零点生效。 若由“带宽计费”变更为“流量计费”模式,则新的计费方式将在次日零点生效。 “按流量计费”模式生效后,即可使用直播CDN出流包了。 父主题: 计费购买
  • 为什么调用API的返回信息提示接口不存在? 可能是由于用户Token获取错误,将参数scope设置成了domain,只有全局服务才能获取此类Token。视频直播为项目级服务,区分区域,需要通过project进行获取。获取用户Token的请求样例如下所示。 说明:加粗的斜体字段需要根据实际值填写,其中username为用户名,domainname为用户所属的账号名称,可以在“我的凭证”页面获取,password为用户登录密码,projectname为项目的名称。 POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "password", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "projectname" } } } } 父主题: API使用
  • 视频直播有哪些计费项?如何知道自己需要支付哪些费用? 视频直播计费项可以分为基础费用和增值费用,详情请参见计费项。 基础费用:流量/带宽费用,即您开启直播后,使用直播加速服务产生的流量/带宽费用。您可以在视频直播控制台的概览页自行选择按流量或带宽计费。 增值费用:包含录制、转码、截图等费用,这几项费用仅在您使用这些功能时才产生。 建议您在使用直播服务前,先根据业务的实际情况购买直播套餐包。 父主题: 计费购买
  • Live ReadOnlyAccess策略内容 { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "live:*:get*", "live:*:list*" ] } ] }
  • 调用API获取项目ID 项目ID还用通过调用查询指定条件下的项目列表API获取。 获取项目ID的接口为“GET https://{Endpoint}/v3/projects/”,其中{Endpoint}为 IAM 的终端节点,可以从地区和终端节点获取。接口的认证鉴权请参见认证鉴权。 响应示例如下,其中projects下的“id”即为项目ID。 { "projects": [ { "domain_id": "65382450e8f64ac0870cd180d14e684b", "is_domain": false, "parent_id": "65382450e8f64ac0870cd180d14e684b", "name": "project_name", "description": "", "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects/a4a5d4098fb4474fa22cd05f897d6b99" }, "id": "a4a5d4098fb4474fa22cd05f897d6b99", "enabled": true } ], "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects" } }
  • 修订记录 发布日期 修订记录 2023-12-07 第十九次正式发布。 本次更新说明如下: 更新“自定义OBS私有桶策略配置”章节。 2023-10-18 第十八次正式发布。 本次更新说明如下: 完善推送CDN日志到 云日志 服务(LTS)的配置流程指引。 2023-06-30 第十七次正式发布。 本次更新说明如下: 增加“源站是OBS桶时如何配置自定义首页内容”。 增加“通过 日志分析 恶意访问地址”。 2023-04-27 第十六次正式发布。 本次更新说明如下: 增加“推送CDN日志到云日志(LTS)服务”。 2022-02-23 第十五次正式发布。 本次更新说明如下: 从OBS控制台为桶绑定 CDN加速 域名后,支持自动刷新功能。 2022-09-06 第十四次正式发布。 本次更新说明如下: 增加“CDN加速匀速建站CloudSite”。 2022-08-10 第十三次正式发布。 本次更新说明如下: 增加“CDN加速OBS常见问题”章节。 2022-08-01 第十二次正式发布。 本次更新说明如下: 更新“CDN日志转存到OBS”章节,修改“创建委托”步骤。 2022-05-24 第十一次正式发布。 本次更新说明如下: 更新“CDN日志转存到OBS”章节,新增“创建自定义策略”。 2022-03-10 第十次正式发布。 本次更新说明如下: 新增“自定义OBS私有桶策略配置”章节 2021-12-28 第九次正式发布。 本次更新说明如下: 更新“如何提高缓存命中率”章节。 2021-09-08 第八次正式发布。 本次更新说明如下: 更新“CDN日志转存到OBS”代码示例。 2021-06-18 第七次正式发布。 本次更新说明如下: 新增“获取客户端真实IP” 2021-04-28 第六次正式发布。 本次更新说明如下: 新增“CDN日志转存到OBS” 2021-04-21 第五次正式发布。 本次更新说明如下: 新增“如何提高缓存命中率” 2021-04-02 第四次正式发布。 本次更新说明如下: 新增“CDN加速ECS资源” 2021-03-19 第三次正式发布。 本次更新说明如下: 更新“CDN加速OBS桶文件” 新增“如何设置缓存过期时间” 2020-04-15 第二次正式发布。 本次更新说明如下: 更新操作步骤 优化相关描述 2019-06-27 第一次正式发布。
  • CDN加速OBS文件方案 华为云CDN可以有效加速网站,为用户提供良好的体验,而OBS桶提供海量文件存储。将数据存放在OBS桶中然后通过配置CDN加速,这样构造的业务系统可以在降低成本的同时,提高终端用户使用感受。当终端用户发起访问请求时,会首先通过CDN查找对此域名响应速度较快的CDN节点,并查询此节点是否有缓存终端用户请求的内容。如果CDN节点有缓存用户所需资源,直接将资源返回给用户;如果CDN节点无缓存,则回源请求资源返回给用户,同时将资源缓存到CDN节点。
  • KMS加密文件配置 CDN默认无法读取OBS桶中的加密文件,若您的OBS桶存在此类文件,建议您慎重开启CDN加速,避免加密对象泄露。如果您因业务需求,需要加速OBS桶中的KMS加密文件,请注意: 如果您的OBS桶是公有桶,CDN将无法读取桶中的KMS加密文件,从而导致回源失败,用户无法访问到加密文件。 解决方案:将公有桶中的加密文件转移到私有桶中,再接入CDN加速。 如果您的OBS桶是私有桶,需要为“CDNAccessPrivateOBS”委托配置“KMS Administrator”权限。如此,CDN才能读取OBS私有桶中的KMS加密文件并加速,配置过程详见OBS委托授权。
  • 适用场景 通过OBS桶提供文件下载业务的应用或服务。例如:通过HTTP/HTTPS提供文件下载业务的网站、工具下载、游戏客户端、APP商店等。 通过OBS桶提供音 视频点播 业务的应用或服务。例如:在线教育类网站、在线视频分享网站、互联网电视点播平台、音乐视频点播APP等。 通过OBS桶提供图片素材等的网站。例如:包括门户网站、电商平台、资讯APP、UGC应用(User Generated Content,用户原创内容)等
  • 约束与限制 只有版本号为3.0及以上的桶支持此方案。桶版本号可以在OBS控制台上,进入桶概览页面后,在“基本信息”中查看。 当OBS配置了镜像回源且CDN侧开启Range回源时,如果镜像源站未遵循RFC Range Requests标准,对range请求响应非206 ,CDN会回源失败。如需支持该场景,请提工单申请。 当CDN源站类型为“OBS桶域名”且接入的是OBS私有桶时,不支持文件上传操作。如果您需要通过CDN将文件上传到OBS私有桶,需要以“源站域名”的形式将OBS私有桶接入CDN,同时,客户端携带鉴权请求头上传文件。 OBS私有桶以源站域名接入CDN后,因CDN无私有桶上传权限,此时客户端无法正常访问加速域名。使用GET/HEAD等方式通过此加速域名请求资源时,也需携带鉴权请求头。
  • 方案优势 低成本 CDN加速OBS桶文件后,资源缓存在CDN节点,用户请求无需回源,而CDN加速的费用较低,二者配合使用可以节约50%到57%的带宽成本,详见通过CDN减少OBS公网带宽费用。 OBS桶提供CDN回源流量包折扣方式,使CDN从OBS桶获取数据时流量费用更低,计费详情请见CDN加速OBS计费规则。 CDN加速OBS桶不支持走内网。 高效率 华为云CDN具有加速资源丰富、节点分布广泛优势,保证将用户请求精准调度至较优边缘节点,提供有效且稳定的加速效果。 自动刷新 通过OBS控制台为您的桶绑定加速域名后,支持自动刷新配置,您可以参考配置CDN自动刷新完成相关配置。
  • 背景介绍 现在越来越多的行业使用OBS桶存储图片、视频、软件包等静态资源文件,并将OBS桶作为网站、论坛、APP、游戏等业务的存储源。在需要获取这些静态资源时,用户通过URL直接从OBS桶请求数据。OBS桶能够很好的解决本地存储不够用的难题,但一般情况下文件只存储在一个区域,不同区域的用户访问OBS桶的响应速度存在差异。在需要频繁访问的场景下,直接访问OBS桶来获取相应文件,还会消耗大量的流量费用。
  • 数据回源 如果数据上传逻辑不做改变,则可使用OBS的“数据回源”功能,在文件访问请求到达OBS而OBS桶里没有该文件时,可通过“数据回源”将客户端请求重定向到设定的源站并异步地从源站将数据拉取到OBS存储下来,架构如下: 详细流程说明: 客户端向华为CDN发起获取文件的请求 华为CDN回源到华为OBS请求文件,OBS侧事先配置好数据回源,当请求的文件不存在时,会响应302重定向到配置的源站(此处为其他云对象存储) 华为CDN接收到OBS返回的302请求 OBS异步从客户配置的源站请求文件 华为CDN处理302跳转到其他云对象存储侧获取数据 其他云对象存储响应华为CDN的文件请求 华为CDN将文件内容返回给客户端,当下次客户端请求同样的文件时,华为CDN直接回源到OBS获取。 “数据回源”功能是被动触发式,即只有向OBS发起请求后OBS才会到设置的源站将数据拉取过来,所以当一个新文件上传到其他云对象存储后,建议业务应用程序向OBS触发一个GET请求来请求数据(发起GET请求后可关闭连接,无需接收实体数据)。另外该架构会在其他云对象存储侧产生两份数据流量(针对同一个文件,CDN拉取一次,OBS拉取一次)。
  • 为什么OBS桶接入CDN后,访问域名会列出所有文件列表? 如果用户对OBS桶有读权限,就可以读取桶内对象列表。当用户请求的是CDN加速域名的时候,OBS就默认返回桶内对象列表。解决办法如下: 如果您使用的是OBS公有桶,请参考以下操作步骤解决该问题: 在OBS处开启静态网站托管,操作步骤请参考配置静态网站托管。 同时在CDN域名的源站配置页面勾选“静态网站托管”。 在CDN控制台域名管理页面,单击需要配置的域名。 在“基本配置”页签下“源站配置”处单击“编辑”。 勾选“静态网站托管”,完成配置。如图所示。 如果您使用的是OBS私有桶,请参考通过CDN加速OBS视频点播文档中实施步骤的第6步处理。 如果您使用的是OBS私有桶,您还可以通过给“CDNAccessPrivateOBS”委托创建一条拒绝列举桶内对象的策略,达到不会列出桶文件列表的目的,步骤如下: 前往IAM控制台,在左侧菜单栏选择“委托”,在“CDNAccessPrivateOBS”的“操作”列,单击“授权”。 在授权页面单击“新建策略”,配置如下参数: 表1 参数说明 参数 说明 策略名称 输入自定义的桶策略名称,例如:deny ListBucket。 策略配置方式 可视化视图。 策略内容 效力 拒绝。 云服务 对象存储服务 (OBS)。 操作项 在列表一栏勾选“obs:bucket:ListBucket”。 资源 所有资源 请求条件 - 单击“下一步”,进入选择策略页面。 勾选刚创建的策略,此处示例为“deny ListBucket”,单击“下一步”,进入设置最小授权范围界面。 单击“确定”,完成授权,授权后15~20分钟生效。 授权生效后,请刷新CDN缓存后重试。
  • 背景信息 CDN是构建在现有互联网基础之上的一层智能虚拟网络,通过在网络各处部署节点服务器,实现将源站内容分发至所有CDN节点,使用户可以就近获得所需的内容,所以接入CDN的网站都能有比较快的响应速度。 Web应用防火墙 (WAF:Web Application Firewall),通过对HTTP(S)请求进行检测,识别并阻断SQL注入、跨站脚本攻击、网页木马上传、命令/代码注入、文件包含、敏感文件访问、第三方应用漏洞攻击、CC攻击、恶意爬虫扫描、跨站请求伪造等攻击,保护Web服务安全稳定。 如果您的网站对安全性能要求比较高,同时又有加速的需求,可以使用华为云CDN联动WAF配置,实现加速的同时防护Web攻击。
  • CDN基础数据 基础数据报表可以帮助您快速了解CDN服务的性能,包含以下数据: 缓存命中率:用户请求资源命中CDN缓存的概率(按字节)。 请求命中率:用户请求资源命中CDN缓存的概率(按请求数)。 下载速度:用户通过CDN下载资源的速度。 访问状态:按照返回的状态码(200、4xx、5xx) 统计用户的请求状态及占比。 访问延时分布:不同延时时段的占比。 请求带宽:展示不同时段的用户请求带宽。 访问次数/人数:展示不同时段的访问次数和人数。 访问平均延时:终端用户访问页面延时的平均值。 图3 基础数据
  • CDN热门资源 热门资源数据可以帮助您了解热门资源详情,也可以从热门数据了解到您的运营活动效果是否正常、热点时间内流量的上涨是否符合预期,以便及时调整运营策略。通过热门资源可以查看以下数据: 域名访问次数Top5:统计用户访问量较多的域名Top5。 域名下载流量Top5:统计用户下载量较多的域名Top5。 热门访问(URI):统计用户访问量较多的URI Top。 热门访问(来源):统计热门Referer来源域名,并且记录访问次数、人数、占比。 全国访问次数分布统计:按省份统计全国各地访问的次数。 全国下载网速统计:按省份统计全国各地下载的速度。 省份统计:按省份统计访问次数、下载速度、下载总量。 运营商流量和速度:统计各运营商在不同时段的流量和下载速度。 运营商统计:统计不同运营商的访问次数、下载速度、下载流量。 图5 热门资源
  • 如何开通实时日志 目前已实现对接LTS服务,控制台暂未开通自助配置功能,您可以提交工单申请开通实时日志功能,提交工单时请提供项目(cn-north-4)、项目ID、日志组、日志流信息。示例如下: 项目:cn-north-4。 项目ID:81b6********************bcf543ea。 日志组:test-cdn-log-prod。 日志组ID:95****53-3a81-49ed-9003-c24******de8 日志流:test-cdn-log-data-flow-prod。 日志流ID:a9****63-5b82-4126-80c9-212******534 日志推送成功后可通过云日志服务控制台查看CDN日志,云日志服务为CDN定制了如下功能: 图1 日志服务仪表盘 表1 功能详情 功能 说明 CDN错误分析 支持查看和导出错误访问信息,可按照域名、URI、请求状态、运营商、错误码等维度分析,帮助您快速定位和分析错误信息。 CDN基础数据 支持查看和导出CDN的基础数据,如缓存命中率、下载速度、访问状态、访问延时、请求命中率、请求带宽、访问平均延时等,帮助您了解CDN的整体运行状态,及时发现和处理异常情况。 CDN用户分析 支持查看和导出CDN的用户访问数据,如访问次数、访问人数、访问客户端、运营商次数统计、访问地区分布、有效访问用户TOP、下载量TOP用户等信息,帮助您更好的了解用户特点。 CDN热门资源 支持查看和导出CDN的热门资源,如域名访问次数TOP5、域名下载流量Top5、热门访问(URI)、热门访问(来源)、运营商流量和速度、运营商统计等,帮助您根据热门访问情况及时调整运营策略。 如果以上功能不能满足您的需求,您可以定制仪表盘,请在提交工单时提出您的需求。 您还可以根据业务情况创建告警规则,以便及时跟进和处理异常事件,配置请参考日志告警。
  • CDN错误分析 通过CDN错误分析报表,您可以查看用户访问异常信息,帮助您快速定位异常访问源头。通过本报表您可以查看以下数据: 错误域名访问Top5:按照域名维度统计访问错误Top域名。 错误URI访问Top5:按照URI维度统计访问错误Top URI。 错误请求状态分布:统计错误请求状态码的数量和占比。 错误按运营商统计:统计各个运营商的错误和占比。 错误按客户端统计:统计客户端访问错误的数量和占比。 错误按省份统计:统计访问错误的省份。 4XX错误详情:统计4XX类错误的次数、占比、运营商及所在省份。 5XX错误详情:统计5XX类错误的次数、占比、运营商及所在省份。 错误按国家统计:按照国家维度统计访问错误所在地。 图2 错误分析
共100000条