更多精彩内容,欢迎观看:《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版解析与实践(上)——三、产品相关概念(中):
https://developer.aliyun.com/article/1222911?spm=a2c6h.13148508.setting.17.75bf4f0e5XwXp0
1. 备份恢复
1) 技术原理介绍
基础备份+日志归档+一致性恢复点=集群恢复
• 基础备份:ADB PG集群物理基础备份,不会阻塞用户业务执行,因此,集群的基础备份期间,依然会产生大量WAL日志。
• 日志归档:集群恢复需要WAL持续归档。
• 一致性恢复点:通过在数据库的访问入口处(QD节点)独占获取事务提交锁,阻塞其他事务的提交,从而保证恢复点创建时刻的集群事务一致性。
• 集群恢复:通过一致性恢复点,恢复时,将集群各个节点对齐到事务一致的数据库状态。
2) 基础备份
• 基础备份又称全量备份,是对整个集群的所有primary节点(包括master,但不包括secondary master)进行全量数据备份。
• 公有云默认备份到OSS。
• 备份不阻塞业务,备份期间产生的增量WAL日志由归档操作保证备份到OSS。
• 备份期间,会自动重新备份异常的节点,如主备切换、连接异常等情况。
• 备份完成后,创建一致性恢复点,作为恢复时的恢复目标,以保证恢复集群一致性。
3) 日志备份
• 日志备份,又称增量备份。通过归档命令,对集群的所有primary节点上的WAL日志段进行备份。
• 公有云默认备份到OSS。
4) 创建一致性恢复点
• 请求创建一致性恢复点:
ü 独占申请两阶段提交锁,阻塞其他分布式事务提交。
ü Master节点创建恢复点。
ü Segment节点创建恢复点。
ü 释放两阶段提交锁。
ü 等待恢复点WAL日志归档。
• 通过分布式提交锁,确保恢复点创建时刻的集群事务一致性。
• 一致性恢复点在集群的每个primary节点新增一条WAL日志记录。
• 只有完成WAL日志归档的一致性恢复点,才能够用于分布式集群的归档恢复。
5) 恢复新实例
• 并行从OSS下载基本备份。
• 更新集群拓扑结构,并重启集群。
• 设置一致性恢复点作为恢复目标。
• 添加高可用备机,完成恢复。
• 持续下载并恢复归档的WAL日志。
2. 资源隔离
1) 资源管理简介
ADB PG实例资源包括:CPU、IO、内存、并发连接、查询计划。
• 常见资源问题
并发连接数被占满,无法接受连接
内存超过可用内存范围,进程被杀死
IO带宽争用导致查询和写入性能下降
• 资源管理方案
资源队列(Resource Queue):使用最多的是并行度和CPU优先级的设置
资源组(Resource Group)CPU
2) 资源队列技术介绍
• 资源队列能够对数据库的CPU、内存等资源进行限制,对多租户资源限制、保障数据库稳定运行具有一定的作用。
• 支持进行四种类型的资源限制:并发限制、CPU限制、内存限制和查询计划限制。
3) 创建资源队列示例
CREATE RESOURCE QUEUE name WITH (queue_attribute=value[ ... ])where queue attribute is ACTIVE_STATEMENTS=integer [MAX_COST=float [COST_OVERCOMMIT={TRUE|FALSE}]] MINCOST=float] [PRIORITY={MIN|LOW|MEDIUM|HIGH|MAX}] [MEMORY_LIMIT='memory_units']
• =# CREATE RESOURCE QUEUE adhoc WITH(ACTIVE STATEMENTS=3);创建带有并发限制的队列
• 创建带有内存限制的队列CREATE RESOURCE QUEUE myqueue WITH(ACIIVESTATEMENIS=20,MEMORY_LIMIT='2000MB');
• =# CREATE RESOURCE QUEUE executive WITH (ACTIVE_STATEMENTS=3, PRIORITY=MAX); 设置优先级
4) 指派角色(用户)到资源队列
• 指派角色到优先级队列
ü 一旦创建了一个资源队列,用户必须把角色(用户)指派到它们合适的资源队列。
ü 如果没有显式地把角色指派资源队列,它们将进入默认资源队列pg_default。默认资源队列的活动语句限制是20,没有代价限制。
=# ALTER ROLE name RESOURCE QUEUE queuename; =# CREATE ROLE name WITH LOGIN RESOURCE QUEUE queue_name;
• 从资源队列移除角色
如果用户想要从一个资源队列移除一个角色并且把它们放在默认队列中,可以将该角色的队列指派改成none。例如:
=#ALTER ROLE role name RESOURCE QUEUE none;
• 修改资源队列配置
ALTER RESOURCE QUEUE命令更改资源队列的限制。
=# AITER RESOURCE QUEUE adhoc WITH(ACIIVE_STATEMENTS=5); =# ALTER RESOURCE QUEUE exec WITH (PRIORITY=MAX);
• 删除资源队列
DROP RESOURCE QUEUE命令可以删除资源队列。要删除一个资源队列,该队列不能有指派给它的角色,也不能有任何语句在其中等待。
5) 状态监控
• 查看队列中的语句和资源队列状态
gp_toolkit.gp_resqueue_status视图允许管理员查看一个负载管理资源队列的状态和活动。
语句:
SELECT*FROM gp_toolkit.gp_resqueue_status
• 查看资源队列统计信息
如果想要持续跟踪资源队列的统计信息和性能,用户可以使用pg_stat_resqueues系统视图来查看在资源队列使用上收集的统计信息。
语句:
SELECT * FROM pg_stat_resqueues
• 查看指派到资源队列的角色
要查看指派给资源队列的角色,执行下列在pg_roles和gp_toolkit.gp_resqueue_status系统目录表。
语句:
SELECT rolname, rsqname FROMpg_roles, gp_toolkit.gp_resqueue_status WHERE pgroles.rolresqueue=gptoolkit.gp resqueue status.queueid
• 查看资源队列的等待查询
用户可以看到所有资源队列的所有当前活跃的以及在等待的查询。
语句:
SELECT * FROM gp_toolkit.gp_locks_on_resqueue WHERE lorwaiting='true'
• 查看活动语句的优先权
查看当前正在被执行的语句并且提供优先权、会话ID和其他信息。
语句:
SELECT * FROM gp_toolkit.gp_resq_priority_statementSELECT * FROM gp_toolkit.gp_resq_priority_statement
• 重置活动语句的优先权
gp_adjust_priority(session_id,statement_count,priority)调整当前正在被执行的语句的优先权。使用这个函数,超级用户可以提升或者降低任意查询的优先权。
语句:
SELECT gp_adjust_priority(752,24905,'HIGH')