Shared Server 的高可用特性

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS PostgreSQL Serverless,0.5-4RCU 50GB 3个月
推荐场景:
对影评进行热评分析
简介: PolarDB for PostgreSQL 提供了更多企业级数据库的特性。本实验将体验其 Shared Server 的高可用特性。

Shared Server 的高可用特性

1. 资源创建

开始实验之前,您需要先创建相关实验资源。

登录成功后,搜索并进入 PolarDB 的控制台:

  1. 在实验室页面,单击创建资源。
  2. (可选)在实验室页面左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如IP地址、用户信息等)。

说明:资源创建过程需要3~8分钟。


2. 创建用户并登录到 DMS

首先打开桌面的 Chrome 浏览器,使用左侧给出的子用户名称和子用户密码登录。

登录成功后,搜索并进入 PolarDB 的控制台:

进入控制台以后,点击全局概览,可以看到正在运行中的 PolarDB for PostgreSQL 实例。

点击这个实例查看详情:

实例详情如下:

对于一个新实例来说,我们需要创建一个新的用户才可以使用 PolarDB 实例。点击创建用户,创建一个名为 polardb 的高权限用户。

另外,如果需要使用自己的客户端来连接阿里云上的 PolarDB 实例,还需要配置客户端的 IP 地址白名单。只有在这个白名单中的 IP 地址才可以连接到 PolarDB 上。那么这里我们可以直接使用阿里云数据库的 DMS(数据管理服务),从网页上直接连接到数据库。这样就会使用 DMS 的内部 IP 地址来连接数据库,是不需要配置 IP 白名单的。

点击登录数据库,进入到 DMS 控制台。

输入刚才创建的数据库账号的用户名和密码:

成功登录 DMS 以后,点击左侧的 SQL 窗口,选择连接默认数据库 postgres :


3. 参数学习

shared server为保证系统性能和兼容特性,提供了众多参数来适配不同的场景。

实验版本的shared server功能默认关闭,由于开启参数需要使用后台超级管理员权限(后续会逐步放开权限)并配合实例的重启,

受限于演示环境的权限限制不能开启直接演示,本次实验着重让大家了解下相关的系统参数,对于并发连接时的backend的共享效果直接在后一页通过截图展示(最后一页不用实践)。

  1. shared server使用的核心参数

1.1 polar_enable_shared_server:控制shared server功能开启,当前默认关闭

1.2 polar_ss_shared_memory_size控制shared server使用全局共享内存的上限, 默认1MB

-单位kB, 为0时表示关闭Shared Server

-单个空白session要占用共享内存2k,一个查询的prepare plancache占用0.6k。 plancache的内存占用是大头,如果单个session有较多prepare plancache, 多个session时很容易oom。

show polar_ss_shared_memory_size;
show polar_enable_shared_server;

1.3 polar_enable_shm_aset:参数控制是否开启全局共享内存,当前默认关闭(需要超级管理员用户配置,实验环境暂不支持

show polar_enable_shm_aset;

具体配置方式如下

注意:下面代码不需要实验

alter system set polar_enable_shm_aset = on;

alter system set polar_ss_shared_memory_size = '1MB';

alter system set polar_enable_shared_server = 1;

select pg_reload_conf();

  1. 与shared server相关的参数众多,为了可以在少量并发场景下可以察到backend共享,可以对如下参数进行调整,从而达到降低shared server开启阀值的目的。

2.1 polar_ss_dispatcher_count:控制dispatcher最大个数, 默认2,最大为cpu核数

2.2 polar_ss_client_threshold_for_shared:控制超过多少个连接后, 新连接才会使用SS。 默认100

show polar_ss_dispatcher_count;
show polar_ss_client_threshold_for_shared;
  1. 除此之外还有很多策略参数,这里简单举两例,剩余参数搭建可以关注后续官网发布。

polar_ss_client_schedule_policy:控制client选择dispatcher的策略, 默认load-balancing, 支持round-robin, random

polar_ss_session_schedule_policy:控制session选择backend的策略, 默认fifo, 支持random, disposable, dedicated

show polar_ss_client_schedule_policy;
show polar_ss_session_schedule_policy;


4. backend共享验证

由于实验环境的限制,对backend共享的场景直接通过截图展示:

其中pg_backend_pid表示session id,polar_session_backend_pid表示使用的backend id

图一和图二分别可以观测到:

  1. 同一个seesion不同的事务内可以使用不同的backend;
  2. 不同的session可以使用同一个backend id;

图一:

图二:

实验链接:https://developer.aliyun.com/adc/scenario/12384f08c88048acadcc756851664259

相关实践学习
MySQL基础-学生管理系统数据库设计
本场景介绍如何使用DMS工具连接RDS,并使用DMS图形化工具创建数据库表。
相关文章
|
存储 固态存储 算法
第五章:OB Server的存储引擎
第五章:OB Server的存储引擎
451 0
|
5月前
|
监控 网络安全
zookeeper的日志报will be dropped if server is in r-o mode如何解决
【6月更文挑战第26天】zookeeper的日志报will be dropped if server is in r-o mode如何解决
171 2
|
负载均衡 应用服务中间件 Nacos
最全解决:微服务之间调用出现Load balancer does not have available server for client
最全解决:微服务之间调用出现Load balancer does not have available server for client
1775 1
最全解决:微服务之间调用出现Load balancer does not have available server for client
|
C# 容器
分布式服务器框架之Server.Common库中实现 秒级定时器
定时器模块是服务器中的常用组件,本文带你实现一个具有基本功能的定时器模块要想设计一个定时器模块,一般包含两部分,一个是定时器对象(ServerTimer),另一个管理定时器对象的管理者(TimerManager)也叫定时器容器;定时器使用了C#内System库里面的Timer定时器作为定时器的主驱动
分布式服务器框架之Server.Common库中实现 秒级定时器
|
存储 缓存 NoSQL
分布式服务器框架之Servers.Core中 实现Log模块设计 写入MongoDB数据库
游戏服务器中都需要用到Log模块,log模块存在的意义第一个是将log输出到控制台又或者是写入到log文件中,出了BUG方便定位;第二是常用于将用户的数据(例如玩家登录、道具购买量)将这种log统计到数据库中,方便统计用户留存信息、数据分析等。
|
SQL 存储 负载均衡
SQL Server 高可用性(八)负载平衡
高可用与负载平衡是两种不同的技术,却经常被混淆。
557 1
SQL Server 高可用性(八)负载平衡
|
缓存 Rust Kubernetes
Rust 写的 Undermoon Redis 集群 - Redis Cluster Protocol与Server Proxy
Rust 写的 Undermoon Redis 集群 - Redis Cluster Protocol与Server Proxy
358 0
Rust 写的 Undermoon Redis 集群 - Redis Cluster Protocol与Server Proxy
|
SQL 消息中间件 存储
一起谈.NET技术,基于SQL Server 2008 Service Broker构建企业级消息系统
  1、引言   Microsoft 在SQL Server 2005引入了服务代理 (Service Broker 简称SSB) 为技术支持代理设计模式和面向消息的中间件 (MOM) 的原则。Service Broker在SQL Server 2008上得到完善, SQL Server Service Broker 为消息和队列应用程序提供 SQL Server 数据库引擎本机支持。
1331 0