PolarDB数据库维护

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 本场景带您体验PolarDB数据库维护常用功能。

PolarDB数据库维护


1. 创建实验资源

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

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

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

2. PolarDB MySQL从表回收站中恢复误删的表

由于DDL语句无法回滚,如果误删除了表(例如DROP TABLE),可能会导致数据丢失。PolarDB MySQL提供表回收站的功能,删除的表会被临时转移到表回收站,本实验可以学习到如何从表回收站恢复误删的表。

一、修改PolarDB参数

设置集群参数recycle_bin为ON,开启表回收站功能。

  1. 双击打开远程桌面的Chromium网页浏览器
  2. 在RAM用户登录框中单击下一步,并复制粘贴页面左上角的子用户密码用户密码输入框,单击登录
  3. 复制下方地址,在Chromium网页浏览器打开新页签,粘贴并访问云数据库PolarDB控制台。
https://polardb.console.aliyun.com/
  1. 集群列表页面顶部菜单栏中,切换资源所在地域。

说明:您可在云产品资源列表中查看PolarDB资源所在的地域。

  1. 集群列表页面,找到您的PolarDB实例,单击实例ID

说明:您可在云产品资源列表中查看实验室分配的PolarDB实例ID。

  1. 在左侧导航栏中,单击参数配置

  1. 在参数配置页面,单击修改参数

  1. 将loose_recycle_bin参数,修改为ON,单击提交修改

  1. 保存改动面板,单击确定

等待loose_recycle_bin参数修改完成。

  1. 可通过右上角任务,查看修改参数的任务进度。

  1. 修改完成。


二、创建模拟数据及模拟误操作

创建数据库和数据库账号,创建模拟数据表student,并插入模拟数据,模拟误操作删除student表。

  1. 创建账号。

1.1 在左侧导航栏中,选中配置与管理>账号管理。在账号管理页面,单击创建账号

1.2 在创建账号面板,账号名为testuser,账号类型为高权限账号,密码为1234@abc,单击确定

1.3 创建完成。

  1. 创建数据库。

2.1 在左侧导航栏中,选中配置与管理>数据库管理。在数据库管理页面,单击创建数据库

2.2 在创建数据库面板,数据库名称为dbtest,支持字符集为utf8mb4,单击确定

3.3 创建完成。

  1. 登录数据库。

3.1 在数据库管理页面,单击上方的录数据库

3.2 在登陆实例对话框中,输入数据库账号为testuser,密码为1234@abc,单击测试连接

3.3 测试连接成功后,单击登录

  1. 创建模拟数据。

4.1 在场景引导页面,单击左侧的数据库实例,在已登录实例中,找到实验室分配的PolarDB数据库,双击dbtset数据库

说明:您可在云产品资源列表中查看实验室分配的PolarDB数据库资源。

4.2 在SQL Console页签中,输入如下SQL语句,单击执行创建一个名为students的表。

CREATE TABLE students (
    id          INT4,
    name       VARCHAR(10),
    grade       INT4,
    class        INT4
 );

4.3 在SQL Console页签中,输入如下SQL语句,单击执行在students表中插入基础数据。

INSERT INTO students(id,name,grade,class) 
values
(1,'Nick',5,4),(2,'Joy',4,3),(3,'Lucy',3,2),(4,'Lulu',6,1),(5,'Merry',2,4),(6,'Jason',1,5);

4.4 模拟误删除操作,SQL Console页签中,输入如下SQL语句,单击执行,误删除了students表。

DROP TABLE students;


三、查看回收站中所有临时保存的表

查看回收站中所有临时保存的表。

  1. SQL Console页签中,输入如下SQL语句,单击执行,查看该集群的回收站中所有临时保存的表。
CALL DBMS_RECYCLE.show_tables();

返回结果如下图所示。

返回结果中的参数说明如下:

参数

说明

SCHEMA

回收站的Schema。

TABLE

进入回收站后的表名。

ORIGIN_SCHEMA

原始表的Schema。

ORIGIN_TABLE

原始表的表名。

RECYCLED_TIME

回收时间。

PURGE_TIME

预计在回收站中被清理的时间。


四、快速恢复回收站内的某张表

快速恢复回收站内的表,其中的语法为:

CALL DBMS_RECYCLE.restore_table('RECYCLE_TABLE','DEST_DB','DEST_TABLE');

该语句中的参数说明如下:

参数

说明

RECYCLE_TABLE

需要恢复的表进入回收站后的表名,即上一步骤查询结果的Table列。

DEST_DB

为恢复后的表指定目标数据库。

DEST_TABLE

为恢复后的表指定新的表名。

说明:语法仅供学习,请勿执行。在本实验中操作如何恢复回收站内的表的SQL示例,请参考下方。

  1. SQL Console页签中,输入如下SQL语句,单击执行快速恢复回收站内的表

说明:您需要将RECYCLE_TABLE改为在上一步骤中(三、查看回收站中所有临时保存的表)查询结果的Table列,例如刚刚查询的Table列是__innodb_1077。

CALL DBMS_RECYCLE.restore_table('RECYCLE_TABLE','dbtest','new_students');
  1. 执行成功。


五、验证数据

当库表恢复完成后,进行数据比对,验证数据。

  1. 执行如下语句,进行验证。
SELECT * FROM `new_students`;
  1. 如下图所示,恢复成功。

3. PolarDB MySQL误操作后恢复库表数据

PolarDB MySQL 5.6版本提供库表恢复功能,可将目标库或表恢复到日志保存期限内的任意时间点。

一、创建模拟数据

在PolarDB MySQL集群中,创建模拟数据及模拟误操作。

  1. SQL Console页签中,输入如下SQL语句,单击执行创建一个名为students的表。
CREATE TABLE students (
    id          INT4,
    name       VARCHAR(10),
    grade       INT4,
    class        INT4
 );

  1. SQL Console页签中,输入如下SQL语句,单击执行在students表中插入基础数据。
INSERT INTO students(id,name,grade,class) 
values
(1,'Nick',5,4),(2,'Joy',4,3),(3,'Lucy',3,2),(4,'Lulu',6,1),(5,'Merry',2,4),(6,'Jason',1,5);

二、手动备份

  1. 在PolarDB控制台的左侧导航栏中,选择配置与管理>备份恢复

  1. 数据备份列表,单击创建备份

  1. 创建备份对话框中,单击确定

  1. 备份完成。

三、模拟误操作

模拟误删除操作,覆盖某条或者某些数据。

SQL Console页签中,输入如下SQL语句,单击执行,误覆盖了students表中的某条数据。

UPDATE students SET name='Tom',grade=6,class=1 WHERE id=2;

四、获取误操作的时间点(选做)

首先,需要获取误操作的具体时间点,从而判断需要恢复到什么时间点以前。对于PolarDB MySQL集群版,若集群已开通SQL洞察功能,可通过该功能查看审计日志,获取误操作的时间点。

说明:本实验暂不支持开通SQL洞察,您可跳过此步骤,若需要进行操作,请您使用您自己的阿里云账号开通PolarDB MySQL集群和SQL洞察,进行体验。SQL洞察会收费,费用与审计日志的存储容量和存储时长有关。

  1. PolarDB控制台,进入集群列表,找到目标集群,单击集群ID。
  2. 在左侧导航栏中,选中日志与审计>SQL洞察页面
  3. 单击搜索页签,进入如下页面。

  1. 设置查询条件。
  • 时间范围:根据预估的误操作时间点选择。
  • 用户:输入进行误操作的用户的用户名。
  • 数据库:输入误操作对象的数据库名。
  • 操作类型:本示例中使用UPDATE语句作为误操作模拟,因此选择UPDATE即可。
  1. 单击查询,并在搜索结果中查看误操作的执行时间

五、开始库表恢复

  1. 在备份恢复页面,单击库(表)恢复

  1. 库/表集恢复对话框中,其中恢复方式有两种,分别为按备份集和按时间点,在本实验中选中按备份集恢复,选中需要恢复的备份集,选中需要恢复的目标库,并在右侧选中目标表,单击确定

说明: 选中目标库或目标表后,系统会自动在原库(testdb)或原表名称(students)后加_backup作为新库(testdb_backup)或新表的名称(如students _backup)。

  1. 等待备份恢复完成,您可在右上角任务列表中查看库表恢复进度。

  1. 刷新页面,状态为运行中时,表示备份完成。

六、进行数据比对

当库表恢复完成后,您可以通过DMS登录集群,进行数据比对,验证数据。

  1. 切换至DMS控制台中。在区域,单击 图标刷新表,我们可以看到恢复后的students_backup表。

  1. SQL Console页签中,输入如下SQL语句,单击执行,查询students_backup表。
SELECT * FROM `students_backup`;

  1. 查找到误操作的数据,确认其是否已恢复到误操作前。

4. 使用DAS实现数据库异常检测

数据库自治服务DAS(Database Autonomy Service)提供为数据库提供异常检测功能。使用DAS对数据库PolarDB MySQL 进行异常检测,能够更为及时地发现数据库的异常变化提升数据库系统的稳定性,提高运维效率。

说明:因实验室暂不支持DAS自治服务,所以本章节仅供学习,请勿在实验室环境中操作本章节的步骤。若需要进行本章节的操作,请您使用您自己的阿里云账号开通PolarDB MySQL集群和DAS自治服务。

一、准备环境

已创建PolarDB MySQL实例,版本无特殊要求,商品类型为按量付费,规格为2核8GB,且已在集群中创建账户。

二、开启DAS自治服务

  1. 登录PolarDB MySQL控制台,单击集群列表,选择已创建的集群ID,进入集群详情页。
  2. 在左侧导航栏选择一键诊断,在自治中心页签下,单击右侧自治功能开关进入设置页面。
  3. 开启自治服务。

自治功能设置选项具体触发条件如下:

自治服务

触发条件

自动索引创建和删除

当打开开启自治服务开关后,默认开启SQL诊断。

自动限流

可根据业务场景自定义,本次触发条件以下设置为例:CPU利用率 > 80%且活跃会话数量 > 20。持续时间>2分钟。可限流时间段 00:00-23:59。最大限流时间 10 分钟。同时KILL执行中的异常SQL。

自动扩容

可根据业务场景自定义,本次触发条件以以下设置为例:CPU利用率 >= 70%。升配实例规格上限是 88核710G。只读节点数量上限是 3 个。观察窗口时间 30 分钟。

自动回缩

自动扩容后,发现在观测窗口内,满足自动回缩的条件,进行自动回缩操作;本次静默期 30 分钟。

  1. 单击确定。

三、构建数据

  1. 登录PolarDB MySQL控制台,单击集群ID,进入集群详情页后,单击数据库管理-创建数据库,完成数据库的创建。

说明:为案例展示需要,本案例中数据库的名称定为das_test。

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

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

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

a. 执行如下语句创建一张students表。

CREATE TABLE students (
  id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  si char(64) NOT NULL COMMENT 'student id',
  name varchar(64) NOT NULL COMMENT 'name',
  birth_date date NOT NULL COMMENT 'birth date',
  gender char(16) NOT NULL COMMENT 'gender',
  extra_info varchar(1024) DEFAULT NULL,
  PRIMARY KEY (id),
  UNIQUE KEY uk_sid (sid)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

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

INSERT INTO students(sid, name, birth_date, gender, extra_info) VALUES(UUID(), SUBSTRING(UUID(), FLOOR(1+(RAND() * 18)), FLOOR(2+(RAND() * 16))), CONCAT(FLOOR(1990 + (RAND() * 20)),'-',LPAD(FLOOR(1 + (RAND() * 12)),2,0),'-',LPAD(FLOOR(1 + (RAND() * 30)),2,0)), 'female', UUID());
INSERT INTO students(sid, name, birth_date, gender, extra_info) VALUES(UUID(), SUBSTRING(UUID(), FLOOR(1+(RAND() * 18)), FLOOR(2+(RAND() * 16))), CONCAT(FLOOR(1990 + (RAND() * 20)),'-',LPAD(FLOOR(1 + (RAND() * 12)),2,0),'-',LPAD(FLOOR(1 + (RAND() * 30)),2,0)), 'male', UUID());

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

INSERT INTO students(sid, name, birth_date, gender, extra_info) (select UUID(), SUBSTRING(UUID(), FLOOR(1+(RAND() * 18)), FLOOR(2+(RAND() * 16))), CONCAT(FLOOR(1990 + (RAND() * 20)),'-',LPAD(FLOOR(1 + (RAND() * 12)),2,0),'-',LPAD(FLOOR(1 + (RAND() * 28)),2,0)), gender, UUID() FROM students limit 1000000);

四、模拟压测

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

  1. 登录下载地址,下载压测程序。
  2. 开通ECS服务器,本次案例要求配置如下:
  • 地域与可用区:与已创建的polarDB MySQL实例一致。
  • 实例规格:建议选择计算型、4vCPU 8GiB以上规格。

  • 镜像:CentOS 7.8 64位。

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

  • 公网IP:勾选分配公网IPV4地址。
  • 带宽计费模式:选择按使用流量。
  • 带宽峰值:设置为10Mbps。

  • 登录凭证

密钥对:选择已有的密钥对,或者单击创建密钥对即时创建密钥对。

自定义密码:输入并确认密码。使用用户名和密码登录实例时,Linux实例默认用户名为root,Windows实例默认用户名为administrator

创建后设置:在实例创建完成后,自行绑定密钥对或者重置实例密码。

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

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

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

b. 单击远程连接。

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

  1. 执行如下命令创建目录。
mkdir -p /user/local/src
  1. 将下载的das-testbed-simple.zip 压缩包上传至ECS 实例的 /usr/local/src 目录下。
  • Windows系统下载使用MobaXterm工具登录ECS地址上传。
  • Macos系统使用终端上传。

  1. 在src 目录下执行如下命令解压das-testbed-simple.zip。
unzip das-testbed-simple.zip
  1. 依次执行如下命令编辑data-source.properties,复制PolarDB的集群地址替换该文件里的占位符,并设置账户和密码。

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

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

cd das-testbed-simple/config
vi data-source.properties

按i进行修改,修改完成后按Esc再输入:wq保存退出。

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

  • jdbc.url:
  • *****.rwlb.rds.aliyuncs.com:PolarDB MySQL集群的链接地址。
  • das_test:数据库名称。
  • jdbc.username:账户名,登录PolarDB控制台,在配置与管理 > 账号管理页面,进行查看。
  • jdbc.password:账户密码。
  1. 在 /usr/local/src目录下执行以下命令,克隆一个目录。
cp -r das-testbed-simple das-testbed-simple1

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

按i进行修改,修改完成后按Esc再输入:wq保存退出。

{
  "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持续打高。

  1. 修改das-testbed-simple1/config/test-scenario-config.json的内容如下:
cd /user/local/src/das-testbed-simple1/config
vi test-scenario-config.json

按i进行修改,修改完成后按Esc再输入:wq保存退出。

{
  "variables": [
    {
      "name": "names",
      "expression": "query(dataSource, 'SELECT name FROM students LIMIT 10000')"
    },
    { "name": "sids",
      "expression": "query(dataSource, 'select substring(sid, 2, 5) as sid from students limit 10000')"
      }
  ],
  "queries": [
    "select * from students where name = '${random(names).name}'",
    "select * from students where sid like '%${random(sids).sid}%'"
  ],
  "queryConfig": {
    "threadCount": 10,
    "durationTimeInMinute": 20
  }
}

说明:该配置测试程序以 10个线程并发执行慢查询select语句20分钟,把PolarDB只读库或者主库的CPU持续打高。

  1. 通过 yum命令在 ECS上安装 java。
yum install java-1.8.0-openjdk* -y
  1. 在2个终端窗口分别运行以下2条命令,对 PolarDB进行高并发压测。
[root@iZwz******** das-testbed-simple]# java -jar das-testbed-simple.jar
[root@iZwz******** das-testbed-simple1]# java -jar das-testbed-simple.jar

四、异常检测

  1. 登录PolarDB MySQL控制台
  2. 在左侧菜单单击一键诊断
  3. 在自治中心页签下查看异常事件、优化事件和弹性伸缩事件。

  1. 向下拖动页面,查看每个事件的描述和详情。

  1. 单击异常检测事件的详情,查看异常的指标。

查看异常指标分析:

查看异常指标可视化信息:

实验地址:https://developer.aliyun.com/adc/scenario/9f364009c8aa4475950db87194ea9d06

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
16天前
|
关系型数据库 MySQL Serverless
探索PolarDB MySQL版:Serverless数据库的灵活性与性能
本文介绍了个人开发者对阿里云PolarDB MySQL版,特别是其Serverless特性的详细评测体验。评测涵盖了产品初体验、性能观测、Serverless特性深度评测及成本效益分析等方面。尽管试用过程中遇到一些小问题,但总体而言,PolarDB MySQL版表现出色,提供了高性能、高可用性和灵活的资源管理,是个人开发者和企业用户的优秀选择。
|
1月前
|
关系型数据库 MySQL 分布式数据库
PolarDB 与传统数据库的性能对比分析
【8月更文第27天】随着云计算技术的发展,越来越多的企业开始将数据管理和存储迁移到云端。阿里云的 PolarDB 作为一款兼容 MySQL 和 PostgreSQL 的关系型数据库服务,提供了高性能、高可用和弹性伸缩的能力。本文将从不同角度对比 PolarDB 与本地部署的传统数据库(如 MySQL、PostgreSQL)在性能上的差异。
72 1
|
23天前
|
关系型数据库 分布式数据库 数据库
2024年全国大学生计算机系统能力大赛PolarDB数据库创新设计赛(天池杯)等你来战!
2024年全国大学生计算机系统能力大赛PolarDB数据库创新设计赛(天池杯)等你来战!
2024年全国大学生计算机系统能力大赛PolarDB数据库创新设计赛(天池杯)等你来战!
|
15天前
|
关系型数据库 MySQL 分布式数据库
PolarDB MySQL数据库场景体验与测评
本文介绍如何在PolarDB上部署数据库,包括登录控制台、配置账号与数据库管理、执行SQL查询及调整Serverless配置等内容。通过创建测试表和数据操作演示了基本数据库管理功能,并展示了如何设置资源弹性扩缩、监控及备份数据。此外,还提供了关于节点切换、压测、加速复杂SQL查询、弹性并行查询及高可用性的详细场景体验说明,全方位展示了PolarDB的强大功能。
|
6天前
|
关系型数据库 分布式数据库 数据库
来!跟通义灵码一起参加PolarDB 数据库创新设计赛,突破传统,探索人机协作
无论你是数据库新手,还是技术大咖,通义灵码邀请你参加2024 年全国大学生计算机系统能力大赛 PolarDB 数据库创新设计赛(天池杯),新参赛模式启动,挑战极限!
|
10天前
|
存储 关系型数据库 分布式数据库
揭秘PolarDB:中国云原生数据库的超级英雄,如何颠覆传统数据存储?
在数字化时代,数据成为企业的核心资产,而云原生数据库则是推动企业转型的关键。PolarDB凭借其先进的存储计算分离架构,在性能、可靠性和易用性方面脱颖而出,成为国内领先的选择。它支持多种数据库引擎,提供多副本存储机制,并采用按量付费模式,有效降低管理和成本压力,助力企业实现高效、可靠的数字化转型。
24 1
|
17天前
|
关系型数据库 分布式数据库 数据库
报名啦|PolarDB数据库创新设计赛(天池杯)等你来战
2024年全国大学生计算机系统能力大赛PolarDB数据库创新设计赛(天池杯)已启动报名,面向全国高校全日制本专科学生。大赛由多家机构联合主办,旨在培养数据库领域人才,促进产学研合作,设有丰厚奖金与奖项。报名截至10月7日,决赛将于12月13日举行。更多详情及报名请访问大赛官网。
|
18天前
|
关系型数据库 分布式数据库 数据库
报名啦|PolarDB数据库创新设计赛(天池杯)等你来战
2024年全国大学生计算机系统能力大赛PolarDB数据库创新设计赛(天池杯)已启动报名,面向全国高校全日制本专科学生。大赛由多家机构联合主办,旨在培养数据库领域人才,促进产学研合作,设有丰厚奖金与奖项。报名截至10月7日,决赛将于12月13日举行。更多详情及报名请访问大赛官网。
|
23天前
|
SQL 关系型数据库 分布式数据库
PolarDB Proxy配置与优化:提升数据库访问效率
【9月更文挑战第6天】PolarDB是阿里云推出的高性能分布式关系型数据库,PolarDB Proxy作为其关键组件,位于客户端与PolarDB集群间,负责SQL请求的解析与转发,并支持连接池管理、SQL过滤及路由规则等功能。本文详细介绍了PolarDB Proxy的配置方法,包括连接池、负载均衡和SQL过滤设置,并探讨了监控调优、缓存及网络优化策略,以帮助提升数据库访问效率。
27 1
|
28天前
|
C# UED 定位技术
WPF控件大全:初学者必读,掌握控件使用技巧,让你的应用程序更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,控件是实现用户界面交互的关键元素。WPF提供了丰富的控件库,包括基础控件(如`Button`、`TextBox`)、布局控件(如`StackPanel`、`Grid`)、数据绑定控件(如`ListBox`、`DataGrid`)等。本文将介绍这些控件的基本分类及使用技巧,并通过示例代码展示如何在项目中应用。合理选择控件并利用布局控件和数据绑定功能,可以提升用户体验和程序性能。
44 0