云服务器内容精选

  • 操作方法 上传备份文件到相关区域的OBS,如下图所示。OBS桶的创建和对象上传可以参考《创建桶》和《上传对象》; 购买相关版本的RDS for sqlserver数据库,用于手工恢复数据,如下图所示。RDS for sqlserver的购买可以参考《RDS for SQL Server快速入门》; DRS控制台,创建备份迁移任务,如下图所示,详细可参考《创建RDS备份迁移任务》; 创建备份迁移任务,选择备份文件所在的OBS桶和具体的备份文件,然后点击“下一步”,如下图所示; 选择目标RDS实例,如下图所示,然后点击“下一步”; 确认迁移任务相关配置,如果没有问题,点击“启动任务”,即可开始迁移; 当任务状态为“成功”的时候,则代表迁移完成,如下图所示。迁移完成以后,需要登录数据库,验证迁移的数据是否完整。 使用DAS导出sql格式的数据,详细可参考《数据导出》。 登录恢复成功后的数据库,如下图所示: 点击“导出”,如下图所示: 单击“导出数据库”,如下图所示: 新建导出任务,如下图所示: 配置完以后,点击“确定”。如下图所示,当任务的状态为“已完成”的时候,则代表导出完成,可以单击“下载”,获取相应的sql文件。
  • 应用场景 当您的网站类业务部署在华为云ECS上时,您可以为网站业务配置“DDoS原生高级防护+独享WAF”联动防护,即网站业务接入独享模式WAF后将WAF独享引擎的ELB绑定的公网IP添加到DDoS原生高级防护实例进行防护,实现DDoS原生高级防护和独享WAF双重防护,同时防御四层DDoS攻击和七层Web攻击、CC攻击等,大幅提升网站业务的安全性和稳定性。 网站业务部署“DDoS原生高级防护+独享WAF”联动防护后,所有业务流量经过WAF独享引擎进行安全清洗后,攻击流量(包括DDoS攻击、Web攻击、CC攻击等)被丢弃,正常的业务流量被WAF转发到源站服务器。
  • 开启云审计服务,请配置审计事件通知 云审计提供了事件通知能力,便于用户实时接收重点审计事件通知,操作详情:启用审计事件通知。当您在比较关注对华为云的资源增加删除比较关注时,您可启用云审计事件通知规则并配置相应资源的服务类型、资源类型、动作,云审计服务将实时根据您配置邮件或短信的规则通过消息通知服务(SMN)发送通知。以ECS服务为例,在云审计界面选择事件通知,选择ECS服务,选择ECS的资源类型ecs,选择对应的action,然后订阅SMN通知即可。具体操作和邮件通知范例如下图: 图1 关键操作通知 图2 邮件通知 父主题: CTS安全最佳实践
  • 怎么配置回滚段大小 一般情况下回滚段大小的参数使用默认值即可。为了达到最佳性能,部分场景下可调整回滚段大小的相关参数,具体场景与设置方法如下。 保留给定时间内的历史版本数据。 当使用闪回或者支撑问题定位时,通常希望保留更多历史版本数据,此时需要修改undo_retention_time。undo_retention_time默认值是0,取值范围为 0~3天。 调整的推荐值为900s,需要注意的是,undo_retention_time的取值越大,对业务的影响除了Undo空间占用增多,也会造成数据空间膨胀,进一步影响数据扫描更新性能。当不使用闪回或者希望减少历史旧版本的磁盘空间占用时,需要将undo_retention_time调小来达到最佳性能。可以通过如下方法选择更适合自己业务模型的取值。 查询guc参数undo_space_limit_size,查询视图gs_stat_undo,获取近期undo空间平均增长速度avg_space_increse_speed与当前undo占用空间curr_used_undo_size,计算undo_retention_time的建议值new_val = 0.5 * (undo_space_limit_size * 0.8 - curr_used_undo_size) / avg_space_increse_speed。 保留给定空间大小的历史版本数据。 如果业务中存在长事务或大事务可能导致Undo空间膨胀时,需要将undo_space_limit_size调大,undo_space_limit_size默认值为256GB,取值范围为800MB~16TB。 在磁盘空间允许的条件下,推荐undo_space_limit_size设置翻倍。同时undo_space_limit_size的取值越大则占用磁盘空间越大,可能降低性能。如果查询gs_stat_undo()的curr_used_undo_size发现不存在Undo空间膨胀,可以恢复为原值。 调整undo_space_limit_size后可相应提高单事务平均占用undo空间undo_limit_size_per_transaction的取值,undo_limit_size_per_transaction取值范围为2MB~16TB,默认值为32GB。设置时建议undo_limit_size_per_transaction不超过undo_space_limit_size,即单事务Undo分配空间阈值不大于Undo总空间阈值。 为了更准确设置该参数来达到最佳性能,建议采用如下方式进行计算。 undo_space_limit_size:查询视图gs_stat_undo,获取近期undo空间平均增长速度avg_space_increse_speed和curr_used_undo_size,计算undo_space_limit_size的建议值new_val = 86400 * 30 * avg_space_increse_speed + curr_used_undo_size。 undo_limit_size_per_transaction:查询gs_stat_undo(),获取单事务最大占用undo空间max_xact_space(503.2版本中扩展该列),建议该参数调整后不小于new_val = 10 * max_xact_space。 历史版本的保留参数的调整优先级。 在undo_retention_time、undo_space_limit_size、undo_limit_size_per_transaction中,先触发的空间阈值会先进行约束限制。 例如:Undo强制回收阈值参数undo_space_limit_size设置为1GB,Undo旧版本保留时间undo_retention_time为900s,如果900s内产生的历史版本数据不足1GB*0.8,则按照900s进行回收限制;否则按照1GB*0.8进行回收限制。遇到该情况时,如果磁盘空闲空间充足,则上调undo_space_limit_size,如果磁盘空闲空间紧缺,则下调undo_retention_time。 父主题: Ustore的最佳实践
  • 怎么配置回滚段大小 一般情况下回滚段大小的参数使用默认值即可。为了达到最佳性能,部分场景下可调整回滚段大小的相关参数,具体场景与设置方法如下。 保留给定时间内的历史版本数据。 当使用闪回或者支撑问题定位时,通常希望保留更多历史版本数据,此时需要修改undo_retention_time。undo_retention_time默认值是0,取值范围为 0~3天。 调整的推荐值为900s,需要注意的是,undo_retention_time的取值越大,对业务的影响除了Undo空间占用增多,也会造成数据空间膨胀,进一步影响数据扫描更新性能。当不使用闪回或者希望减少历史旧版本的磁盘空间占用时,需要将undo_retention_time调小来达到最佳性能。可以通过如下方法选择更适合自己业务模型的取值。 查询guc参数undo_space_limit_size,查询视图gs_stat_undo,获取近期undo空间平均增长速度avg_space_increse_speed与当前undo占用空间curr_used_undo_size,计算undo_retention_time的建议值new_val = 0.5 * (undo_space_limit_size * 0.8 - curr_used_undo_size) / avg_space_increse_speed。 保留给定空间大小的历史版本数据。 如果业务中存在长事务或大事务可能导致Undo空间膨胀时,需要将undo_space_limit_size调大,undo_space_limit_size默认值为256GB,取值范围为800MB~16TB。 在磁盘空间允许的条件下,推荐undo_space_limit_size设置翻倍。同时undo_space_limit_size的取值越大则占用磁盘空间越大,可能降低性能。如果查询gs_stat_undo()的curr_used_undo_size发现不存在Undo空间膨胀,可以恢复为原值。 调整undo_space_limit_size后可相应提高单事务平均占用undo空间undo_limit_size_per_transaction的取值,undo_limit_size_per_transaction取值范围为2MB~16TB,默认值为32GB。设置时建议undo_limit_size_per_transaction不超过undo_space_limit_size,即单事务Undo分配空间阈值不大于Undo总空间阈值。 为了更准确设置该参数来达到最佳性能,建议采用如下方式进行计算。 undo_space_limit_size:查询视图gs_stat_undo,获取近期undo空间平均增长速度avg_space_increse_speed和curr_used_undo_size,计算undo_space_limit_size的建议值new_val = 86400 * 30 * avg_space_increse_speed + curr_used_undo_size。 undo_limit_size_per_transaction:查询gs_stat_undo(),获取单事务最大占用undo空间max_xact_space(503.2版本中扩展该列),建议该参数调整后不小于new_val = 10 * max_xact_space。 历史版本的保留参数的调整优先级。 在undo_retention_time、undo_space_limit_size、undo_limit_size_per_transaction中,先触发的空间阈值会先进行约束限制。 例如:Undo强制回收阈值参数undo_space_limit_size设置为1GB,Undo旧版本保留时间undo_retention_time为900s,如果900s内产生的历史版本数据不足1GB*0.8,则按照900s进行回收限制;否则按照1GB*0.8进行回收限制。遇到该情况时,如果磁盘空闲空间充足,则上调undo_space_limit_size,如果磁盘空闲空间紧缺,则下调undo_retention_time。 父主题: Ustore的最佳实践
  • 监控NGINX Ingress控制器指标 访问Prometheus,在“Graph”页面中,查看NGINX Ingress控制器指标。 图3 查看NGINX Ingress控制器监控指标 表1 NGINX Ingress控制器监控指标 指标 指标类型 说明 nginx_ingress_controller_bytes_sent 基础指标 发送到客户端的字节数 nginx_ingress_controller_connect_duration_seconds 基础指标 与上游服务器建立连接花费的时间 nginx_ingress_controller_header_duration_seconds 基础指标 从上游服务器接收第一个报头所花费的时间 nginx_ingress_controller_ingress_upstream_latency_seconds 基础指标 上游服务时延 nginx_ingress_controller_request_duration_seconds 基础指标 请求处理时间(以毫秒为单位) nginx_ingress_controller_request_size 基础指标 请求长度(包括请求行、请求头和请求体) nginx_ingress_controller_requests 基础指标 客户端请求的总数 nginx_ingress_controller_response_duration_seconds 基础指标 从上游服务器接收响应所花费的时间 nginx_ingress_controller_response_size 基础指标 响应长度(包括请求行、报头和请求体) nginx_ingress_controller_nginx_process_connections 基础指标 当前状态为{活动,读取,写入,等待}的客户端连接数 nginx_ingress_controller_nginx_process_connections_total 基础指标 状态为{已接受,已处理}的连接总数 nginx_ingress_controller_nginx_process_cpu_seconds_total 基础指标 CPU使用率(秒) nginx_ingress_controller_nginx_process_num_procs 基础指标 进程数 nginx_ingress_controller_nginx_process_oldest_start_time_seconds 基础指标 从1970年1月1日开始以秒为单位的开始时间 nginx_ingress_controller_nginx_process_read_bytes_total 基础指标 读取的字节数 nginx_ingress_controller_nginx_process_requests_total 基础指标 客户端请求总数 nginx_ingress_controller_nginx_process_resident_memory_bytes 基础指标 正在使用的内存字节数 nginx_ingress_controller_nginx_process_virtual_memory_bytes 基础指标 正在使用的内存字节数 nginx_ingress_controller_nginx_process_write_bytes_total 基础指标 写入字节数 nginx_ingress_controller_build_info 基础指标 一个带有常量“1”的度量,标记有关于构建的信息。 nginx_ingress_controller_check_success 基础指标 Ingress controller语法检查累计次数 nginx_ingress_controller_config_hash 基础指标 正在运行的Nginx配置hash值 nginx_ingress_controller_config_last_reload_successful 基础指标 最后一次尝试重新加载配置是否成功 nginx_ingress_controller_config_last_reload_successful_timestamp_seconds 基础指标 最后一次成功重新加载配置的时间戳 nginx_ingress_controller_ssl_certificate_info 基础指标 保留与证书相关的所有标签 nginx_ingress_controller_success 基础指标 Ingress controller重新加载操作的累计次数 nginx_ingress_controller_orphan_ingress 基础指标 孤立ingress的状态,1表示孤立ingress。 namespace:是用于标识ingress名称空间的字符串。 ingress:表示ingress名称。 type:表示孤立ingress的状态,取值为no-service或no-endpoint。 nginx_ingress_controller_admission_config_size 基础指标 被测试配置的大小 nginx_ingress_controller_admission_render_duration 基础指标 允许ingress渲染入口的处理持续时间(浮点秒) nginx_ingress_controller_admission_render_ingresses 基础指标 由admission controller渲染的ingress长度 nginx_ingress_controller_admission_roundtrip_duration 基础指标 admission controller在处理新事件时的完整持续时间(浮点秒) nginx_ingress_controller_admission_tested_duration 基础指标 admission controller测试的处理持续时间(浮点秒) nginx_ingress_controller_admission_tested_ingresses 基础指标 admission controller处理的ingress长度 Nginx Ingress在高负载请求下,开启全量指标采集存在内存泄露的问题(详情请参见社区issue)。经过验证,屏蔽以下指标后,能够有效抑制内存增长。为避免内存泄露导致业务受损,Nginx Ingress插件默认屏蔽以下指标。我们将持续关注社区最新动态,及时同步修复该问题。 nginx_ingress_controller_success nginx_ingress_controller_header_duration_seconds nginx_ingress_controller_ingress_upstream_latency_seconds
  • 检测与修复建议 华为云主机安全服务对该漏洞的便捷检测与修复。 检测相关系统的漏洞,并查看漏洞详情,详细的操作步骤请参见查看漏洞详情。 漏洞修复与验证,详细的操作步骤请参见漏洞修复与验证。 图1 手动检测漏洞 检测主机是否开放了“4505”和“4506”端口。 如果检测到开放了“4505”和“4506”端口,建议关闭该端口,或者仅对可信对象开放,详细的操作步骤请参见开放端口检测。 图2 开放端口检测 检测利用此漏洞的挖矿木马,并通过控制台隔离查杀挖矿木马。 隔离查杀挖矿木马,详细操作步骤请参见隔离查杀。 图3 隔离查杀
  • 2.设备接入鉴权适配 当前各个云厂商都会定义自己的鉴权方式,导致设备迁移时,需要在设备端做各种适配。华为云IoT在平台端提供多种鉴权能力,把鉴权适配的动作移到云端,减少设备改动带来的风险。 自定义鉴权:针对存量设备设备鉴权参数无法修改的场景,平台提供自定义鉴权能力,支持在平台自定义配置设备的鉴权逻辑,实现设备鉴权方式免改动接入华为云IoT。 系统鉴权:华为云Device SDK提供了系统默认的鉴权能力,对于支持修改代码的设备,可以集成SDK通过轻量化改动就可以实现设备的接入。 对于存量设备信息的迁移,华为云也提供了多种迁移能力满足不同的应用场景: 设备迁移服务:华为云IoTDA提供自动化,高效的迁移能力,支持第三方云平台的存量产品和设备信息全量同步到华为云IoT,实现设备信息无感自动迁移。迁移流程如下: 图2 设备迁移 设备自注册:通过在自定义鉴权中开启自注册功能,支持设备在连接到平台时自动注册设备到平台,而不需要提前进行设备的迁移。 批量注册设备:通过华为云提供的SDK调用创建设备接口,进行批量的设备注册。
  • 1.设备接入地址切换 IoT场景设备量大,设备能力弱。IoT的迁移需尽量减少对设备侧的改动。华为云IoT提供多种技术方案来解决这个问题。 对于自建IoT平台设备,设备连接平台使用的是原有IoT平台域名,则设备侧可以不用做任何修改,将域名通过DNS解析到华为云IoT平台接入地址即可完成迁移。 对于存量第三方平台的设备,如果设备支持修改接入平台地址,则可以将设备侧地址切换为华为云IoT平台接入地址完成迁移。 对于设备能力比较强,可以进行OTA升级的设备,华为云提供Device SDK支持设备通过OTA完成接入地址切换。
  • 定时上传 OBS Browser+ 提供强大的定时上传功能,您可以将本地磁盘或目录中的一个或多个文件周期性的上传到目标桶的对应路径下。 首先进入定时上传页面,单击“立即上传”,进入到“创建定时上传”页面。 然后选择目标桶类型、桶路径、本地上传对象,您还可以打开自动上传开关,设置上传周期策略。 单击“确定”后,OBS Browser+会在设定的周期开始时自动上传文件。 修改已有任务的定时上传设置后,会重新创建任务,并覆盖掉原有任务。 在比较每个本地文件与桶内对象差异时,会产生一次HEAD请求费用。 当周期开始时,OBS Browser+会扫描本地文件与桶中对应路径的对象进行对比,仅在对象不存在,或者对象大小与文件大小不一致,或者对象的最后修改时间早于文件的最后修改时间时才会进行上传。 父主题: 最佳实践
  • 选择数据类型 高效数据类型,主要包括以下三方面: 尽量使用执行效率比较高的数据类型 一般来说整型数据运算(包括=、>、<、≧、≦、≠等常规的比较运算,以及group by)的效率比字符串、浮点数要高。 尽量使用短字段的数据类型 长度较短的数据类型不仅可以减小数据文件的大小,提升I/O性能;同时也可以减小相关计算时的内存消耗,提升计算性能。比如对于整型数据,如果可以用smallint就尽量不用int,如果可以用int就尽量不用bigint。 使用一致的数据类型 表关联列尽量使用相同的数据类型。如果表关联列数据类型不同,数据库必须动态地转化为相同的数据类型进行比较,这种转换会带来一定的性能开销。 父主题: 表设计最佳实践
  • 选择分布列 Hash分布表的分布列选取至关重要,需要满足以下原则: 列值应比较离散,以便数据能够均匀分布到各个DN。例如,考虑选择表的主键为分布列,如在人员信息表中选择身份证号码为分布列。 在满足上述条件的情况下,考虑选择查询中的连接条件为分布列,以便Join任务能够下推到DN中执行,且减少DN之间的通信数据量。 对于Hash分表策略,如果分布列选择不当,可能导致数据倾斜,查询时出现部分DN的I/O短板,从而影响整体查询性能。因此在采用Hash分表策略之后需对表的数据进行数据倾斜性检查,以确保数据在各个DN上是均匀分布的。可以使用以下SQL检查数据倾斜性: 1 2 3 4 SELECT xc_node_id, count(1) FROM tablenameGROUP BY xc_node_id ORDER BY xc_node_id DESC; 其中xc_node_id对应DN,一般来说,不同DN的数据量相差5%以上即可视为倾斜,如果相差10%以上就必须要调整分布列。 GaussDB支持多分布列特性,可以更好地满足数据分布的均匀性要求。 Range/List分布表的分布列由用户根据实际需要进行选择。除了需选择合适的分布列,还需要注意分布规则对数据分布的影响。 父主题: 表设计最佳实践
  • 选择分布方式 复制表(Replication)方式将表中的全量数据在集群的每一个DN实例上保留一份。主要适用于记录集较小的表。这种存储方式的优点是每个DN上都有该表的全量数据,在join操作中可以避免数据重分布操作,从而减小网络开销,同时减少了plan segment(每个plan segment都会起对应的线程);缺点是每个DN都保留了表的完整数据,造成数据的冗余。一般情况下只有较小的维度表才会定义为Replication表。 哈希(Hash)表将表中某一个或几个字段进行hash运算后,生成对应的hash值,根据DN实例与哈希值的映射关系获得该元组的目标存储位置。对于Hash分布表,在读/写数据时可以利用各个节点的I/O资源,大大提升表的读/写速度。一般情况下大表定义为Hash表。 范围(Range)和列表(List)分布是由用户自定义的分布策略,根据分布列的取值落入满足一定范围或者具体值的对应目标DN,这两种分布方式便于用户灵活地进行数据管理,但对用户本身的数据抽象能力有一定的要求。 策略 描述 适用场景 Hash 表数据通过hash方式散列到集群中的所有DN实例上。 数据量较大的事实表。 Replication 集群中每一个DN实例上都有一份全量表数据。 小表、维度表。 Range 表数据对指定列按照范围进行映射,分布到对应DN。 用户需要自定义分布规则的场景。 List 表数据对指定列按照具体值进行映射,分布到对应DN。 用户需要自定义分布规则的场景。 如图1所示,复制表如图中的表T1,哈希表如图中的表T2。 图1 复制表和哈希表 在对复制表进行数据插入、修改、删除等操作时,如果用户使用声明为可下推(shippable或者immutable)的函数对不可下推的成分进行封装,则可能会导致复制表不同DN数据不一致。 使用带有窗口函数、rownum、limit子句、用户自定义函数等结果不稳定的语句对复制表进行数据插入或修改,可能会导致不同节点数据不完全相同。 父主题: 表设计最佳实践
  • 查看表所在节点 用户在建表时可以指定表如何在节点之间分布或者复制,详情请参考•DISTRIBUTEBY,分布方式介绍可参阅选择分布方式。 用户在建表时也可设置“Node Group”来指定表所在的Group,详情请参考•TO{GROUPgroupname|...。 用户还可以通过以下命令查看表所在实例。 查询表所在的schema。 select t1.nspname,t2.relname from pg_namespace t1,pg_class t2 where t1.oid = t2.relnamespace and t2.relname = 'table1'; 上述命令中,“nspname”为schema的名称,“relname”为表、索引、视图等对象的名称,“oid”为行标识符,“relnamespace”为包含这个关系的名称空间的OID,“table1”为表名称。 查看表的relname和nodeoids。 select t1.relname,t2.nodeoids from pg_class t1, pgxc_class t2, pg_namespace t3 where t1.relfilenode = t2.pcrelid and t1.relnamespace=t3.oid and t1.relname = 'table1' and t3.nspname ='schema1'; 上述命令中,“nodeoids”为表分布的节点OID列表,“relfilenode”为这个关系在磁盘上的文件的名称,“pcrelid”为表的OID,“schema1”为1中查询出的该表所在schema。 根据查询到的表分布的节点,查询表所在实例。 select * from pgxc_node where oid in (nodeoids1, nodeoids2, nodeoids3); 上述命令中的“nodeoids1, nodeoids2, nodeoids3”为2中查询到的3个nodeoids,操作时以实际查询到的为准,各nodeoids间以“,”隔开。 父主题: 表设计最佳实践
  • 场景二:常规数据倾斜巡检 在库中表个数少于1W的场景,直接使用倾斜视图查询当前库内所有表的数据倾斜情况。 1 SELECT * FROM pgxc_get_table_skewness ORDER BY totalsize DESC; 在库中表个数非常多(至少大于1W)的场景,因PGXC_GET_TABLE_SKEWNESS涉及全库查并计算非常全面的倾斜字段,所以可能会花费比较长的时间(小时级),建议参考PGXC_GET_TABLE_SKEWNESS视图定义,直接使用table_distribution()函数自定义输出,减少输出列进行计算优化,例如: 1 2 3 4 5 6 SELECT schemaname,tablename,max(dnsize) AS maxsize, min(dnsize) AS minsize FROM pg_catalog.pg_class c INNER JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace INNER JOIN pg_catalog.table_distribution() s ON s.schemaname = n.nspname AND s.tablename = c.relname INNER JOIN pg_catalog.pgxc_class x ON c.oid = x.pcrelid AND x.pclocatortype = 'H' GROUP BY schemaname,tablename;