实践教程之使用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-x 弹性伸缩实验
本实验主要介绍如何对PolarDB-X进行手动收缩扩容,了解PolarDB-X 中各个节点的含义,以及如何对不同配置的PolarDB-x 进行压测。
相关文章
|
1月前
|
JSON 关系型数据库 分布式数据库
PolarDB常见问题之PolarDB8.0.1使用冷热混合分区失败如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
9月前
|
SQL Kubernetes 关系型数据库
实践教程之使用 PolarDB-X 的 TTL 表功能
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。
|
9月前
|
SQL 存储 分布式数据库
实践教程之PolarDB-X分区管理
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。本期实验将指导您如何进行PolarDB-X分区管理。
|
9月前
|
弹性计算 前端开发 关系型数据库
实践教程之使用PolarDB-X进行TP负载测试
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。本期实验将指导您如何使用PolarDB-X进行TP负载测试。
|
10月前
|
SQL Kubernetes 关系型数据库
实践教程之如何使用PolarDB-X进行数据导入导出
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。本期实验将指导您如何使用PolarDB-X进行数据导入导出。
|
10月前
|
SQL 弹性计算 Kubernetes
实践教程之如何使用PolarDB-X参数模板
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。本期实验将指导您如何使用PolarDB-X参数模板。
|
11月前
|
存储 SQL 关系型数据库
《PolarDB-X开源分布式数据库实战进阶》——PolarDB-X冷热数据归档(1)
《PolarDB-X开源分布式数据库实战进阶》——PolarDB-X冷热数据归档(1)
144 0
|
11月前
|
弹性计算 关系型数据库 分布式数据库
《PolarDB-X开源分布式数据库实战进阶》——PolarDB-X冷热数据归档(2)
《PolarDB-X开源分布式数据库实战进阶》——PolarDB-X冷热数据归档(2)
116 0
|
11月前
|
关系型数据库 分布式数据库 数据库
《PolarDB-X开源分布式数据库实战进阶》——PolarDB-X冷热数据归档(3)
《PolarDB-X开源分布式数据库实战进阶》——PolarDB-X冷热数据归档(3)
96 0
|
7月前
|
SQL Oracle 关系型数据库
Polar DB-O (兼容 Oracle 语法版本)和Polar DB PostgreSQL 版本概述(二)
Polar DB-O (兼容 Oracle 语法版本)和Polar DB PostgreSQL 版本概述(二)
713 0

热门文章

最新文章

相关产品

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