实践教程之使用PolarDB-X进行冷热数据归档

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。

PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。

本期实验将指导您如何进行PolarDB-X冷热数据归档

本期免费实验地址

本期教学视频地址


1. 前置准备

假设已经根据前一讲内容完成了PolarDB-X的搭建部署,使用PolarDB-X Operator安装PolarDB-X,并且可以成功链接上PolarDB-X数据库。

实践教程之如何快速安装部署PolarDB-X


2. 连接PolarDB-X集群并创建冷数据local_disk冷数据源

2.1 执行如下命令,查看PolarDB-X集群端口。

kubectl get svc -l polardbx/name=polardb-x,polardbx/cn-type=rw -o jsonpath="{.items[0].spec.ports[0].nodePort}" | xargs echo "NodePort:"

返回结果如下,您可以查看到PolarDB-X集群端口1.png


2.2  执行如下命令,查看PolarDB-X集群地址。

kubectl get pods -l polardbx/name=polardb-x,polardbx/role=cn -o jsonpath="{range .items[*]}{.status.hostIP}{'\n'}{end}" | xargs echo "HostIP:"

返回结果如下,您可以查看到PolarDB-X集群地址

2.png


2.3 执行如下命令,查看PolarDB-X集群登录密码。

kubectl get secret polardb-x -o jsonpath="{.data['polardbx_root']}" | base64 -d - | xargs echo "Password: "

返回结果如下,您可以查看到PolarDB-X集群登录密码

38.png


2.4 执行如下命令,使用MySQL客户端连接PolarDB-X。验证连接成功。

说明:您需要将命令中的<集群地址>、<端口地址>和<登录密码>替换为从前三步骤获得的信息。

mysql -h<集群地址> -P<集群端口> -upolardbx_root -p<登录密码>

3.png


2.5 执行如下命令,创建local_disk冷数据源。

create filestorage local_disk with ('file_uri' ='file:///tmp/orc/');

4.png


2.6 查看冷数据源。

show filestorage;

5.png


3. 安装Benchmark-Boot平台

3.1 在Web Terminal中,单击击右上角加号按钮打开新终端。

6.png


3.2 在新终端中,使用root账户,在/root目录下,执行如下命令,安装Benchmark-Boot压测平台。

bash -c "$(curl -fsSL https://benchmark-boot.oss-cn-hangzhou.aliyuncs.com/setup.sh)"

7.png


说明:


3.3 Benchmark-Boot压测平台安装完成之后,执行如下的curl命令。

curl -X GET "http://127.0.0.1:4121/config/database" -H "accept: */*"

返回结果如下,表示Benchmark-Boot压测平台安装成功。8.png


3.4 在实验室页面左侧的云产品资源列表中,找到实验室提供的ECS服务器的弹性IP。

10.png


3.5 在实验室页面右侧功能栏中,单击11.png图标,切换至远程桌面。在远程桌面双击Chromium网页浏览器,在地址栏中输入并访问http://,跳转到Benchmark Boot 平台首页。

12.png


4. 压测平台配置数据库连接

本章节操作均在 Benchmark-Boot 平台端通过白屏化操作完成。

4.1 配置数据库连接

在左侧导航栏进入运行压测-数据库连接面板,在配置数据库连接表格中填入以下信息,然后单击提交

  • 目标数据库的ip地址:输入在第3节连接PolarDB-X集群中获取的密码。
  • 端口:输入在第3节连接PolarDB-X集群中获取的密码。
  • 用户名:默认为polardbx_root。
  • 密码:输入在第3节连接PolarDB-X集群中获取的密码。
  • Sysbench库名:库名设置为sysbench,建库模式为AUTO。

13.png


4.2 提交配置后,平台将自动校验数据库是否可以连通,并自动创建对应压测数据库,页面会自动刷新并展示当前连接数据库信息。

14.png


5. 压测平台运行冷数据Sysbench

本章节操作由Benchmark-Boot 平台端搭配命令行完成。

5.1 导入Sysbench。

在左侧导航栏进入运行压测-Sysbench面板,在导入Sysbench表格中填入以下信息,单击提交

  • 表数量:本实验设置为4。
  • 单表大小:本实验设置为100000。
  • 并发数:本实验设置为1。

说明:请参考当前PolarDB-X实例的规格,选择合适的表数量和并发数,实验中的配置为4张表,单表大小为100000,并发数为1。

15.png


5.2 提交导入任务后,可跳转到实时数据-Sysbench面板,查看导入数据过程。当出现Task has finished, exiting...时,表示导入完成。

16.png


5.3 导入完毕后,切换至终端,使用命令行连接PolarDB-X。执行如下命令,创建冷数据表并进行数据归档。

create database sysbench_cold mode = 'auto'; use sysbench_cold; create table sbtest1 like sysbench.sbtest1 engine='local_disk' archive_mode='loading'; create table sbtest2 like sysbench.sbtest2 engine='local_disk' archive_mode='loading'; create table sbtest3 like sysbench.sbtest3 engine='local_disk' archive_mode='loading'; create table sbtest4 like sysbench.sbtest4 engine='local_disk' archive_mode='loading';

17.png


5.4 回到运行压测-Sysbench面板中,单击切换库并将库切换为sysbench_cold

18.png


5.5 单击校验数据,校验Sysbench冷数据。

19.png


5.6 运行Sysbench。

5.6.1 进入运行压测-Sysbench面板,在运行Sysbench表格中填入以下信息,然后单击提交。

  • 表数量:本实验设置为4。
  • 单表大小:本实验设置为100000。
  • 并发数:可根据负载类型选择合适并发数。本实验设置为4。
  • 运行时长:单位为秒。本实验设置为60。
  • 负载类型:冷数据只支持oltp_point_select和oltp_read_only。本实验设置为oltp_read_only。
  • 任务描述:有意义的一段压测描述记录,方便后续结果查看与汇总。本实验设置为sysbench_cold。

说明:实验中的配置为4张表,单表大小为100000,并发数为4,运行时长60,负载类型oltp_read_only,任务描述sysbench_cold。

20.png


5.6.2 在压测Sysbench过程中,暂不支持并行启动任务。

21.png


7. 查看Sysbench压测结果。

进入压测结果-Sysbench面板,可以列表的形式查看历史任务。

22.png


7. 冷数据表AP查询

本章节操作完全在命令行中完成。

7.1 切换至终端。执行如下命令,收集统计信息。

use sysbench;
analyze table sbtest1;
analyze table sbtest2;
analyze table sbtest3;
analyze table sbtest4;
use sysbench_cold;
analyze table sbtest1;
analyze table sbtest2;
analyze table sbtest3;
analyze table sbtest4;
collect statistic;


7.2 执行如下命令,查看执行计划。

explain select count(distinct sbtest1.id) from sbtest1 join sbtest2 on sbtest1.id=sbtest2.k;

23.png


7.3 执行如下命令,查询数据。

select count(distinct sbtest1.id) from sbtest1 join sbtest2 on sbtest1.id=sbtest2.k;

24.png


7.4 执行如下命令,冷数据表与InnoDB表关联查询的执行计划。

explain select count(distinct sbtest1.id) from sbtest1 join sysbench.sbtest2 on sbtest1.id=sbtest2.k;

25.png


7.5 执行如下命令,查询数据。

select count(distinct sbtest1.id) from sbtest1 join sysbench.sbtest2 on sbtest1.id=sbtest2.k;

v2-ae347dc1656dec73af90d344cfde0704_1440w.png


8. TTL自动归档

本章节操作完全在命令行中完成。

8.1 执行如下命令,创建TTL表t_order,从6月1日开始,分区间隔是1个月,数据2个月后过期。

create database ttl mode = 'auto';
use ttl;
CREATE TABLE t_order (
    id bigint NOT NULL AUTO_INCREMENT,
    gmt_modified DATETIME NOT NULL,
    c_varchar_1 varchar(50) DEFAULT NULL,
    c_varchar_2 varchar(50) character set gbk DEFAULT NULL,
    c_bigint_1 bigint DEFAULT NULL,
    c_bigint_2 bigint DEFAULT NULL,
    c_decimal_1 decimal(20,5) DEFAULT NULL,
    PRIMARY KEY (id, gmt_modified)
) partition by key(id) partitions 8
LOCAL PARTITION BY RANGE (gmt_modified)
STARTWITH '2022-06-01'
INTERVAL 1 MONTH
EXPIRE AFTER 2
PRE ALLOCATE 5;

26.png


8.2 执行如下命令,往t_order导入数据1408行数据。

insert into t_order (gmt_modified, c_varchar_1, c_varchar_2, c_bigint_1, c_bigint_2, c_decimal_1)
values 
('2022-05-02 10:00:00', 'ddddabc', '&&&', 1, 999, 636.8888),
('2022-06-02 10:00:00', 'abc', '&&&', 1, 999, 66.8888),
('2022-07-02 10:00:00', '12d', '&&&', 2, 999, 15.3421),
('2022-08-02 10:00:00', 'fda89', '&&&', 3, 999, 89497832.8888),
('2022-09-02 10:00:00', 'asd98asf', '&&&', 4, 999, 48192523195.8888),
('2022-10-02 10:00:00', 'acdsn', '&&&', 5, 999, 6.8888),
('2022-11-02 10:00:00', 'xhuo', '&&&', 6, 999, 432.8888),
('2022-12-02 10:00:00', '0ab0c-xfa', '&&&', 7, 9887, 66.8888),
('2023-01-02 10:00:00', 'xa', '&&&', 8, 999, 8492138423.8888),
('2023-02-02 10:00:00', '90xzbyq=', '&&&', 9, 999, 43.8888),
('2023-03-02 10:00:00', 'fa89fa9dfadf', '&&&', 9, 999, 435.8888);
insert into t_order (gmt_modified, c_varchar_1, c_varchar_2, c_bigint_1, c_bigint_2, c_decimal_1) select TIMESTAMPADD(MONTH, (id + 300) % 12, '2022-05-02 10:00:00'), c_varchar_1, c_varchar_2, c_bigint_1, c_bigint_2, c_decimal_1 from t_order limit 1000;
insert into t_order (gmt_modified, c_varchar_1, c_varchar_2, c_bigint_1, c_bigint_2, c_decimal_1) select TIMESTAMPADD(MONTH, (id + 300) % 12, '2022-05-02 10:00:00'), c_varchar_1, c_varchar_2, c_bigint_1, c_bigint_2, c_decimal_1 from t_order limit 1000;
insert into t_order (gmt_modified, c_varchar_1, c_varchar_2, c_bigint_1, c_bigint_2, c_decimal_1) select TIMESTAMPADD(MONTH, (id + 300) % 12, '2022-05-02 10:00:00'), c_varchar_1, c_varchar_2, c_bigint_1, c_bigint_2, c_decimal_1 from t_order limit 1000;
insert into t_order (gmt_modified, c_varchar_1, c_varchar_2, c_bigint_1, c_bigint_2, c_decimal_1) select TIMESTAMPADD(MONTH, (id + 300) % 12, '2022-05-02 10:00:00'), c_varchar_1, c_varchar_2, c_bigint_1, c_bigint_2, c_decimal_1 from t_order limit 1000;
insert into t_order (gmt_modified, c_varchar_1, c_varchar_2, c_bigint_1, c_bigint_2, c_decimal_1) select TIMESTAMPADD(MONTH, (id + 300) % 12, '2022-05-02 10:00:00'), c_varchar_1, c_varchar_2, c_bigint_1, c_bigint_2, c_decimal_1 from t_order limit 1000;
insert into t_order (gmt_modified, c_varchar_1, c_varchar_2, c_bigint_1, c_bigint_2, c_decimal_1) select TIMESTAMPADD(MONTH, (id + 300) % 12, '2022-05-02 10:00:00'), c_varchar_1, c_varchar_2, c_bigint_1, c_bigint_2, c_decimal_1 from t_order limit 1000;
insert into t_order (gmt_modified, c_varchar_1, c_varchar_2, c_bigint_1, c_bigint_2, c_decimal_1) select TIMESTAMPADD(MONTH, (id + 300) % 12, '2022-05-02 10:00:00'), c_varchar_1, c_varchar_2, c_bigint_1, c_bigint_2, c_decimal_1 from t_order limit 1000;

27.png


8.3 执行如下命令,查看t_order的时间分区和数据分布。

select * from information_schema.local_partitions where table_schema='ttl' and table_name="t_order";
select count(*),DATE_FORMAT(gmt_modified,'%Y-%m-%d') as year_month_day from t_order group by gmt_modified order by gmt_modified;

其中local_partition p20220601、p20220701、p20220801、p20220901都是过期数据,会在运维窗口(凌晨1点到5点)内自动过期。

28.png


8.4 执行如下命令,绑定冷数据表t_order_oss并查看。

create table t_order_oss like t_order engine = 'local_disk' archive_mode = 'TTL'; show tables;

29.png


8.5 执行如下命令,手动过期t_order的分区 p20220601。

alter table t_order expire local partition p20220601;

30.png


8.6 执行如下命令,查看数据分布,p20220601中的5月份数据被归档至冷数据表t_order_oss中。

select count(*),DATE_FORMAT(gmt_modified,'%Y-%m-%d') as year_month_day from t_order group by gmt_modified order by gmt_modified;
select count(*),DATE_FORMAT(gmt_modified,'%Y-%m-%d') as year_month_day from t_order_oss group by gmt_modified order by gmt_modified;

31.png


接下来采用手动触发的方式模拟自动过期冷数据。

8.7 执行如下命令,修改定时任务自动终止时间为23:59,定时任务默认在凌晨5点后不会无法调度,修改参数至23:59解除这个限制。

set global BACKGROUND_TTL_EXPIRE_END_TIME="23:59";

32.png


8.8 执行如下命令,获取定时任务id SCHEDULE_ID,例子中的SCHEDULE_ID为5,后面两步需要用到这个值。

SELECT * FROM INFORMATION_SCHEMA.LOCAL_PARTITIONS_SCHEDULE;

33.png


8.9 执行如下命令,触发定时任务。

fire schedule {SCHEDULE_ID};

34.png


8.10 执行如下命令,查看定时任务状态。

show schedule result {SCHEDULE_ID};

等待定时任务调度完成(至多需等待一分钟),STATE由QUEUED变为SUCCESS即归档完成。

35.png


8.11 执行如下命令,再次查看数据分布,过期数据均被自动归档至冷数据表中。

select count(*),DATE_FORMAT(gmt_modified,'%Y-%m-%d') as year_month_day from t_order group by gmt_modified order by gmt_modified;
select count(*),DATE_FORMAT(gmt_modified,'%Y-%m-%d') as year_month_day from t_order_oss group by gmt_modified order by gmt_modified;

36.png


8.12 执行如下命令,查看TTL的时间分区。

select * from information_schema.local_partitions where table_schema='ttl' and table_name="t_order";

所有过期分区均不在原表t_order中,下个分区p20221001到2022-12-01才会过期。

37.png


云原生数据库PolarDB分布式(PolarDB-X)大降价,价格下调40%,最低至0.75元/小时。

阿里巴巴双十一同款数据库,原生MySQL生态,基于Paxos三副本确保RPO=0,支持集中式和分布式一体化。

点击下方链接,立即购买

购买PolarDB-X

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
3月前
|
存储 SQL Cloud Native
揭秘!PolarDB-X存储引擎如何玩转“时间魔术”?Lizard多级闪回技术让你秒回数据“黄金时代”!
【8月更文挑战第25天】PolarDB-X是一款由阿里巴巴自主研发的云原生分布式数据库,以其高性能、高可用性和出色的可扩展性著称。其核心竞争力之一是Lizard存储引擎的多级闪回技术,能够提供高效的数据恢复与问题诊断能力。本文通过一个电商公司的案例展示了一级与二级闪回技术如何帮助快速恢复误删的大量订单数据,确保业务连续性不受影响。一级闪回通过维护最近时间段内历史数据版本链,支持任意时间点查询;而二级闪回则通过扩展数据保留时间并采用成本更低的存储方式,进一步增强了数据保护能力。多级闪回技术的应用显著提高了数据库的可靠性和灵活性,为企业数据安全保驾护航。
44 1
|
3月前
|
数据库 Windows
超详细步骤解析:从零开始,手把手教你使用 Visual Studio 打造你的第一个 Windows Forms 应用程序,菜鸟也能轻松上手的编程入门指南来了!
【8月更文挑战第31天】创建你的第一个Windows Forms (WinForms) 应用程序是一个激动人心的过程,尤其适合编程新手。本指南将带你逐步完成一个简单WinForms 应用的开发。首先,在Visual Studio 中创建一个“Windows Forms App (.NET)”项目,命名为“我的第一个WinForms 应用”。接着,在空白窗体中添加一个按钮和一个标签控件,并设置按钮文本为“点击我”。然后,为按钮添加点击事件处理程序`button1_Click`,实现点击按钮后更新标签文本为“你好,你刚刚点击了按钮!”。
252 0
|
5月前
|
关系型数据库 MySQL 分布式数据库
PolarDB产品使用问题之从MySQL迁移数据到PolarDB-X时,自定义函数不会自动迁移,该怎么办
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
6月前
|
JSON 关系型数据库 分布式数据库
PolarDB常见问题之PolarDB8.0.1使用冷热混合分区失败如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
6月前
|
存储 数据可视化 关系型数据库
绘制圆环图/雷达图/星形图/极坐标图/径向图POLAR CHART可视化分析汽车性能数据
绘制圆环图/雷达图/星形图/极坐标图/径向图POLAR CHART可视化分析汽车性能数据
|
6月前
|
存储 关系型数据库 分布式数据库
PolarDB-X最佳实践系列(五):使用通义千问和存储过程快速生成测试数据
我们在测试数据库性能的过程中,通常需要生成一批测试数据。 以前,一般要写一段程序或者脚本来完成这项工作,但现在是2024年啦!时代变了!
PolarDB-X最佳实践系列(五):使用通义千问和存储过程快速生成测试数据
|
6月前
|
存储 监控 关系型数据库
drds数据分布不均
drds数据分布不均
99 1
|
6月前
|
SQL 关系型数据库 测试技术
实践教程之在PolarDB-X中进行Online DDL
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。
122 0
实践教程之在PolarDB-X中进行Online DDL
|
6月前
|
SQL canal 大数据
实践教程之将PolarDB-X与大数据等系统互通
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。
124 0
实践教程之将PolarDB-X与大数据等系统互通
|
6月前
|
SQL Kubernetes 关系型数据库
实践教程之快速安装部署PolarDB-X
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。
1557 0
实践教程之快速安装部署PolarDB-X

相关产品

  • 云原生分布式数据库 PolarDB-X