操作手册
【实践】体验PolarDB-X透明分布式
本实验介绍了如何体验PolarDB-X的透明分布式特性。
场景简介
本实验带您在线快捷体验PolarDB-X的透明分布式能力。
架构
PolarDB-X推出"透明分布式"系列能力,从连接、开发到管理行为均最大限度保留单机MySQL的使用体验,让用户的分布式改造周期大幅缩短,研发运维团队的原有技术栈最大限度保留。
PolarDB-X具备从单机到分布式的平滑演进能力,支持通过DDL将一张大表动态调整为分布式的分区表,结合分布式事务、以及兼容MySQL Binlog的数据回流,可完成单机到分布式的快速改造。本体验从PolarDB-X的Auto Partition,以及兼容MySQL Binlog的CDC能力两个方面演示透明分布式能力。
基于自动化拆分和分布式Online DDL,保证单机MySQL平滑演进到分布式
引入全局Binlog回流单机MySQL,确保分布式可上可下
背景知识
本场景主要涉及以下云产品和服务:
PolarDB分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 是阿里云自主设计研发的高性能云原生分布式数据库产品,为用户提供高吞吐、大存储、低延时、易扩展和超高可用的云时代数据库服务。
云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。一台云服务器ECS实例等同于一台虚拟服务器,内含CPU、内存、操作系统、网络配置、磁盘等基础的组件。云服务器ECS免去了您采购IT硬件的前期准备,让您像使用水、电、天然气等公共资源一样便捷、高效地使用服务器,实现计算资源的即开即用和弹性伸缩。阿里云ECS持续提供创新型服务器,解决多种业务需求,助力您的业务发展。
前提条件
云起实验室将在您的账号下开通本次实操资源,资源按量付费,需要您自行承担本次实操的云资源费用。
本实验预计两个小时产生费用23.44元。如果您调整了资源规格、使用时长,或执行了本方案以外的操作,可能导致费用发生变化,请以控制台显示的实际价格和最终账单为准。
进入实操前,请确保阿里云账号满足以下条件:
创建实验资源
在实验页面,勾选我已阅读并同意《阿里云云起实践平台服务协议》和我已授权阿里云云起实践平台创建、读取及释放实操相关资源后,单击开始实操。
创建资源需要25分钟左右的时间,请您耐心等待。
在云产品资源列表,您可以查看本场景涉及的云产品资源信息。
安全设置
资源创建完成后,为了保护您阿里云主账号上资源的安全,请您重置云服务器ECS的登录密码和设置安全组端口。
重置云服务器ECS的登录密码。
在云产品资源列表的ECS云服务器区域,单击管理。
在实例详情页签的基本信息区域,单击重置密码。
在重置实例密码对话框中,设置新密码和确认密码,重置密码的方式选择在线重置密码,配置SSH密码登录策略选择开启,单击确认修改。
返回如下结果,表示ECS实例root用户的登录密码重置成功。
设置安全组端口。
在云产品资源列表的安全组区域,单击管理。
在访问规则区域的入方向中,添加SSH(22)和RDP(3389)端口。
重要添加端口时,授权对象建议选择您的本机IP地址。
创建PolarDB-X数据库账号
在云产品资源列表的云原生分布式数据库PolarDB-X区域,单击管理。
创建数据账号。
在左侧导航栏中,单击账号管理。
在账户管理页面,单击创建账号。
在创建账号面板中,参考说明配置账号信息,单击确定。
参数说明:
数据库账号:自定义数据库账号名称,建议设置为
user01
。账号类型:选择高权限账号。
密码:自定义账号密码。
确认密码:再次输入账号密码。
创建自建MySQL数据库账号
本实验以为您在云服务器ECS上安装自建MySQL数据库。
在云产品资源列表的ECS云服务器区域,单击远程连接。
在登录实例对话框中,输入用户自定义密码,单击确定。
执行如下命令,创建自建MySQL数据库账号和密码。
警告本命令中自建MySQL数据库账号为user02,密码请您自定义。
您需要将命令中的密码修改为用户自定义密码后再执行。建议使用复杂密码以增加安全性,包含大小写字母、数字和特殊字符的组合。
mysql -e "CREATE USER 'user02'@'localhost' IDENTIFIED BY '密码';" mysql -e "GRANT ALL PRIVILEGES ON *.* TO 'user02'@'localhost';" mysql -e "FLUSH PRIVILEGES;"
准备工作
创建PolarDB-X数据库与自建MySQL数据库,在PolarDB-X记录binlog位点,在MySQL创建复制关系,此时不要启动复制
连接自建MySQL数据库,清理复制关系,创建数据库并清理数据表。
执行如下命令,连接自建MySQL数据库。
mysql -u user02 -p
当显示
Enter password:
时,您需要输入自建MySQL数据库的账号密码。执行如下命令,清理复制关系。
stop slave; reset slave all;
执行如下命令,创建数据库cdc_db。
create database if not exists cdc_db;
执行如下命令,清理数据表。
use cdc_db; drop table if exists sbtest1;
新建终端,连接PolarDB-X,创建数据库cdc_db、清理数据表并记录PolarDB-X的Binlog点位。
在右上角,单击
图标,新建终端。
说明在本实验中,我们在第二个终端中,主要执行PolarDB-X相关命令。在第一个终端中,我们主要执行自建MySQL数据库相关命令。
执行如下命令,连接PolarDB-X。
说明您需要将命令中的
$DB_URL
替换成PolarDB-X的内网连接地址,您可在云产品资源列表中云原生分布式数据库PolarDB-X区域查看。将命令中的$DB_USER
替换成您创建的PolarDB-X数据账号。mysql -h $DB_URL -u $DB_USER -p
当显示
Enter password:
时,您需要输入PolarDB-X的账号密码。执行如下命令,创建数据库cdc_db。
create database if not exists cdc_db mode=auto;
执行如下命令,清理数据表。
use cdc_db; drop table if exists sbtest1;
执行如下命令,记录PolarDB-X的Binlog点位。
show master status \G
返回类似如下结果,您可查看到FILE和POSITION两个参数的数值,并且将会在后续步骤中使用。
在自建MySQL数据库中,创建复制关系并启用。
返回第一个终端窗口。
执行如下命令,创建复制关系。
说明您需要将命令中的
$DB_URL
替换成PolarDB-X的内网连接地址,您可在云产品资源列表中云原生分布式数据库PolarDB-X区域查看。将命令中的$DB_USER
、$DB_PASS
替换成您创建的PolarDB-X数据账号和密码。将命令中的$binlog_file
和$binlog_pos
替换为您在上一步骤记录的FILE和POSITION。change master to master_host='$DB_URL',master_port=3306,master_user='$DB_USER',master_password='$DB_PASS',master_log_file='$binlog_file',master_log_pos=$binlog_pos;
执行如下命令,启用复制。
CHANGE REPLICATION FILTER replicate_do_db=(cdc_db);
验证Auto Partition和在线DDL
本步骤带您体验PolarDB-X的Auto Partitioning特性以及在线DDL。
使用sysbench创建PolarDB-X的表。
返回第二个终端窗口。
执行如下命令,退出PolarDB-X。
exit
执行如下命令,进入/root/sysbench/src/lua/目录。
cd /root/sysbench/src/lua/
执行如下命令,使用sysbench创建PolarDB-X的表。
说明您需要将命令中的
$DB_URL
替换成PolarDB-X的内网连接地址,您可在云产品资源列表中云原生分布式数据库PolarDB-X区域查看。将命令中的$DB_USER
、$DB_PASS
替换成您创建的PolarDB-X数据账号和密码。sysbench --db-driver=mysql --mysql-host=$DB_URL --mysql-port=3306 --mysql-user=$DB_USER --mysql-password=$DB_PASS --mysql-db=cdc_db --table_size=10000 --tables=1 --events=0 --time=60 --threads=4 --report-interval=1 oltp_point_select_k prepare
返回如下结果,表示成功创建sbtest1数据表并插入10000条数据。
在PolarDB-X查看sbtest1的数据分布。
执行如下命令,连接PolarDB-X。
说明您需要将命令中的
$DB_URL
替换成PolarDB-X的内网连接地址,您可在云产品资源列表中云原生分布式数据库PolarDB-X区域查看。将命令中的$DB_USER
替换成您创建的PolarDB-X数据账号。mysql -h $DB_URL -u $DB_USER -p
当显示
Enter password:
时,您需要输入PolarDB-X的账号密码。执行如下命令,查看sbtest1表的建表SQL。
use cdc_db; show create table sbtest1;
执行如下命令,查看物理DN。
show storage;
执行如下命令,查看表的分布。
show topology from sbtest1;
执行如下命令,查看表数据。
select count(*) from sbtest1; select * from sbtest1 order by id limit 10;
执行如下命令,查看数据的分布。
select TABLE_SCHEMA,TABLE_NAME,STORAGE_INST_ID,PHYSICAL_TABLE,PARTITION_NAME as p_name,TABLE_ROWS as row,PERCENT from information_schema.TABLE_DETAIL where table_schema='cdc_db' and table_name='sbtest1';
新建终端,启动sysbench压测,观察性能。
在右上角,单击
图标,新建终端。
说明在本实验中,我们在第三个终端中,主要执行压测命令,观测压测时的数据。
执行如下命令,在PolarDB-X中,启动sysbench压测,压测2分钟,观察性能。
说明您需要将命令中的
$DB_URL
替换成PolarDB-X的内网连接地址,您可在云产品资源列表中云原生分布式数据库PolarDB-X区域查看。将命令中的$DB_USER
、$DB_PASS
替换成您创建的PolarDB-X数据账号和密码。
cd /root/sysbench/src/lua/ sysbench --db-driver=mysql --mysql-host=$DB_URL --mysql-port=3306 --mysql-user=$DB_USER --mysql-password=$DB_PASS --mysql-db=cdc_db --table_size=10000 --tables=1 --events=0 --time=120 --threads=4 --report-interval=1 oltp_point_select_k run
启动压测后,我们可以观察到TPS的性能。在压测执行中还未结束时,您需要执行下方第4步,观察PolarDB-X在改变分区键前后的性能对比。
启动压测后,我们来体验PolarDB-X在改变分区键前后的性能对比。
返回第二个终端窗口。
执行如下命令,修改sbtest1的分区键,由ID修改为k。
alter table sbtest1 partition by hash(k) partitions 8;
返回至第三个终端窗口。
此时您可以观察到在修改了sbtest1的分区键后,tps的性能有了较大提升。
压测结束后,返回第二个终端窗口。执行如下命令,查看建表SQL。
show create table sbtest1;
执行如下命令,查看物理DN。
show storage;
执行如下命令,查看数据的分布。
select TABLE_SCHEMA,TABLE_NAME,STORAGE_INST_ID,PHYSICAL_TABLE,PARTITION_NAME as p_name,TABLE_ROWS as row,PERCENT from information_schema.TABLE_DETAIL where table_schema='cdc_db' and table_name='sbtest1';
通过查看建表SQL、物理DN、数据的分布以及tps,我们可以看到DDL和数据发生了重分布,并且性能有了较大提升。
验证CDC能力
本步骤带您体验PolarDB-X兼容MySQL Binlog的CDC能力及CDC后的数据一致性。
在MySQL测启动复制。
返回第一个终端窗口。
执行如下命令,启动复制。
start slave;
等待10秒,执行如下命令,进入cdc_db数据库,查看复制是否同步完成。
use cdc_db; show slave status \G
执行如下命令,查看sbtest1的数据是否已经同步。
show create table sbtest1; select count(*) from sbtest1; select * from sbtest1 order by id limit 10;
验证DML同步,在PolarDB-X修改数据,写入数据(oltp_insert)。
返回第三个终端窗口。
执行如下命令,在PolarDB-X修改数据,写入数据(oltp_insert)。
说明您需要将命令中的
$DB_URL
替换成PolarDB-X的内网连接地址,您可在云产品资源列表中云原生分布式数据库PolarDB-X区域查看。将命令中的$DB_USER
、$DB_PASS
替换成您创建的PolarDB-X数据账号和密码。sysbench --db-driver=mysql --mysql-host=$DB_URL --mysql-port=3306 --mysql-user=$DB_USER --mysql-password=$DB_PASS --mysql-db=cdc_db --table_size=20000 --tables=1 --events=0 --time=30 --threads=4 --report-interval=1 oltp_insert run
返回第二个终端窗口。
执行如下命令,在PolarDB-X中查看sbtest1表的数据总数。
select count(*) from sbtest1;
返回如下结果。
返回第一个终端窗口。
执行如下命令,在MySQL中查看sbtest1表的数据总数。
说明PolarDB-X中数据写入之后,您需要等待大约5~10分钟,MySQL可以同步完成。
select count(*) from sbtest1;
返回如下结果,可以查看到PolarDB-X和MySQL数据是一致的。
验证DDL同步,创建索引或者修改(添加)表字段,检查MySQL测是否做了同步。
切换至第二个终端窗口,执行如下命令,在PolarDB-X中修改表字段。
alter table sbtest1 add col1 varchar(20);
切换至第一个终端窗口,执行如下命令,在MySQL中查看表结构。
show create table sbtest1;
清理资源
在完成实验后,如果无需继续使用资源,选择不保留资源,单击结束实操。在结束实操对话框中,单击确定。
在完成实验后,如果需要继续使用资源,选择付费保留资源,单击结束实操。在结束实操对话框中,单击确定。请随时关注账户扣费情况,避免发生欠费。
【实践】体验PolarDB-X透明分布式

• 进入实操前,请确保您已通过 实名认证 且 账户余额 大于100元
• 资源开通在个人账号,默认时长120分钟
• 云资源产生的费用需您自行承担,云起实践平台不会向您征收额外费用
• 实操结束后,您可以选择继续付费保留资源,或参考手册自动/手动释放资源
