使用DAS实现数据库自动SQL限流

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云原生数据库 PolarDB PostgreSQL 版,企业版 4核16GB
推荐场景:
HTAP混合负载
简介: 本场景主要介绍如何使用DAS提供SQL限流功能,通过自动SQL限流来控制数据库请求访问量和SQL并发量,保障服务的可用性。

使用DAS实现数据库自动SQL限流


1. 购买DAS专业版并新增实例

登录DAS专业版购买页面,根据界面提示选择对应参数,购买DAS专业版服务。

DAS控制台DAS专业版管理页面,单击页面右上角新增实例。

在选择实例的搜索框里输入需要使用DAS专业版管理的PolarDB实例ID,勾选已查询出来的实例,添加至右侧区域。

说明:DAS专业版会自动打开PolarDB的SQL洞察,DAS将赠送给您5GB SQL洞察存储空间,超出部分按照0.008元/GB/小时收费,日志至少保存30天。

单击确定后页面会提示新增成功,可到已使用实例列表页面查看。

2. 开启DAS自治服务

登录PolarDB MySQL控制台,单击集群列表,选择已创建的集群ID,进入集群详情页。

在左侧导航栏选择一键诊断,自治中心页签下,单击右侧自治功能开关进入设置页面

开启自治服务。

单击确定

3. 构造测试数据

在PolarDB MySQL中创建表,并导入测试数据。

登录PolarDB MySQL控制台,单击实例ID,进入实例详情后,单击数据库管理 > 创建数据库,完成数据库的创建。

本案例中数据库的名称定为das_test

通过DMS登录数据库:在PolarDB MySQL控制台,进入实例详情页,单击SQL查询,跳转DMS控制台后输入账号和密码。

说明:首次使用DMS连接PolarDB MySQL实例时,系统会提示您授权白名单,单击确认后即可完成授权。


成功登录后,直接打开数据库的SQL Console面板,输入以下语句,创建PolarDB MySQL表。

1)执行如下语句创建一张students表。


         

2)如下两条INSERT INTO语句各执行一次,写入两条数据。


         

3)重复执行如下语句建议执行20次以上,生成200万行数据。


         


4. 模拟压测

本步骤需要在ECS控制台中,登录ECS实例部署压测程序,并使用该程序模拟流量注入。

登录下载地址,下载压测程序。

开通ECS服务器,本案例要求配置如下:

地域与可用区:与已创建的polarDB Mysql实例一致。

实例规格:建议选择计算型、4vCPU 8GiB以上规格。

镜像:CentOS 7.8 64位。

系统盘 :选择 ESSD云盘 40GB。

公网IP:勾选分配公网IPV4地址。

带宽计费模式:选择按使用流量。

带宽峰值:设置为10Mbps。

其余配置不做要求,选择默认即可。

PolarDB MySQL控制台的集群详情中,将ECS的IP地址添加至PolarDB MySQL的白名单中。

登录ECS。

1)登录ECS控制台,选择实例,点击开通的实例ID名称。

2)单击远程连接。

3)可选择Workbench远程连接方式,单击立即登录。

执行如下命令创建目录。

mkdir -p /user/local/src

将下载的das-testbed-simple.zip压缩包上传至ECS 实例的 /usr/local/src目录下。

说明:

Windows系统下载使用MobaXterm工具登录ECS地址上传。

Macos系统使用终端上传。

在src目录下执行如下命令解压das-testbed-simple.zip 。

unzip das-testbed-simple.zip

编辑 config/data-source.properties,复制 PolarDB的集群地址 替换该文件里的占位符,并设置账户和密码。

1)在PolarDB集群的基本信息页面,获取集群地址 。

2)修改配置文件config/data-source.properties

vi data-source.properties

说明:标红位置参数按照实际环境配置。

jdbc.url:

*********.rwlb.rds.aliyuncs.com:PolarDB MySQL集群的链接地址。

das_test:数据库名称。

jdbc.username:账户名。

jdbc.password:账户密码。


修改 das-testbed-simple/config/test-scenario-config.json 的内容如下:

{
  'variables': [
    {
     'name': 'names', 
     'expression': 'query(dataSource, 'SELECT name FROM students LIMIT 10000')' 
    } 
 ], 
  'queries': [ 
      'update students set extra_info = UUID() where name = '${random(names).name}''
 ], 
    'queryConfig': { 
        'threadCount': 20, 
         'durationTimeInMinute': 20
     }
  }

说明:该配置测试程序以 20个线程并发执行 update 语句20分钟,把 PolarDB主库的 CPU持续打高。

通过 yum命令在 ECS上安装 java。

yum install java-1.8.0-openjdk* -y

在终端窗口运行以下命令,对PolarDB进行高并发压测。

[root@iZwz******* das-testbed-simple]# java -jar das-testbed-simple.jar


5. 查看自动SQL限流结果

登录PolarDB MySQL控制台

在左侧菜单单击一键诊断。

自治中心页签下查看异常事件。

单击异常检测事件详情

单击根因分析和建议

可以看到UPDATE以并发度2被限流10分钟。


实验链接:https://developer.aliyun.com/adc/scenario/83c2eccd4e6149e3ac2e2fcdc1f5ab95


相关文章
|
4天前
|
SQL 监控 安全
数据库安全:SQL注入防御实践
【7月更文挑战第11天】SQL注入攻击作为一种常见的网络攻击手段,对数据库的安全性和业务稳定构成了严重威胁。为了有效防御SQL注入攻击,开发者和数据库管理员应采取一系列实践措施,包括输入验证与过滤、使用参数化查询、限制数据库用户权限、使用Web应用程序防火墙、定期更新和打补丁、实施实时监控和审计以及使用HTTPS协议等。通过这些措施的实施,可以显著提升数据库的安全性,降低遭受SQL注入攻击的风险。同时,开发者和数据库管理员应持续关注新的安全威胁和防御技术,不断提升自身的安全防护能力。
|
5天前
|
SQL 存储 安全
数据库数据恢复—SQL Server数据库出现逻辑错误的数据恢复案例
SQL Server数据库数据恢复环境: 某品牌服务器存储中有两组raid5磁盘阵列。操作系统层面跑着SQL Server数据库,SQL Server数据库存放在D盘分区中。 SQL Server数据库故障: 存放SQL Server数据库的D盘分区容量不足,管理员在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续使用。数据库继续运行一段时间后出现故障并报错,连接失效,SqlServer数据库无法附加查询。管理员多次尝试恢复数据库数据但是没有成功。
|
10天前
|
SQL 自然语言处理 网络协议
【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
TCP(Transmission Control Protocol)连接是互联网上最常用的一种面向连接、可靠的、基于字节流的传输层通信协议。建立TCP连接需要经过著名的“三次握手”过程: 1. SYN(同步序列编号):客户端发送一个SYN包给服务器,并进入SYN_SEND状态,等待服务器确认。 2. SYN-ACK:服务器收到SYN包后,回应一个SYN-ACK(SYN+ACKnowledgment)包,告诉客户端其接收到了请求,并同意建立连接,此时服务器进入SYN_RECV状态。 3. ACK(确认字符):客户端收到服务器的SYN-ACK包后,发送一个ACK包给服务器,确认收到了服务器的确
|
11天前
|
SQL 存储 关系型数据库
关系型数据库SQL Server学习
【7月更文挑战第4天】
21 2
|
4天前
|
SQL Java 关系型数据库
Java面试题:描述JDBC的工作原理,包括连接数据库、执行SQL语句等步骤。
Java面试题:描述JDBC的工作原理,包括连接数据库、执行SQL语句等步骤。
14 0
|
4天前
|
SQL 监控 Java
Java面试题:简述数据库性能优化的常见手段,如索引优化、SQL语句优化等。
Java面试题:简述数据库性能优化的常见手段,如索引优化、SQL语句优化等。
10 0
|
13天前
|
SQL 存储 搜索推荐
SQL游标的原理与在数据库操作中的应用
SQL游标的原理与在数据库操作中的应用
|
13天前
|
SQL 存储 Java
SQL数据库学习指南:从基础到高级
SQL数据库学习指南:从基础到高级
|
8月前
|
SQL Oracle 关系型数据库
本机不安装Oracle客户端,使用PL/SQL Developer连接远程数据库
本机不安装Oracle客户端,使用PL/SQL Developer连接远程数据库
174 0
|
SQL 程序员 数据库
【python】连接sql server数据库,并实现简单的增删改查(1)
Python编程语言越来越受到大家的喜爱,本篇文章就从链接微软数据库进行增删改查操作的讲解
581 0