PolarDB for MySQL 多主集群体验

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: 本实验带您体验PolarDB for MySQL多主集群跨机行级并发读写能力和跨机写性能的横向扩展。

PolarDB for MySQL 多主集群体验

1.  创建实验资源

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

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

说明:资源创建过程需要7~10分钟。

2.  登录集群

本步骤将指导您如何查看PolarDB for MySQL的集群节点地址,并登录集群。

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

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

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

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

  1. 在基本信息页面的数据库节点区域,您可以查看到两个主节点RW1和RW2的节点地址。

说明:在本实验中,您也可在云产品资源列表中查看到PolarDB两个主节点RW1和RW2的节点地址,方便您复制粘贴进行实验操作。

  1. 在实验室页面右侧的功能栏中,单击 图标,切换至Web Terminal。

  1. 在终端1中,单击右上角的 图标,增加两个会话终端。

说明:在三个终端下我们将分别通过脚本连接RW1RW2节点。

  1. 在终端1中,执行如下命令,连接RW1节点。

说明:您需要将命令中的<host>改为RW1节点地址。

## 连接串用RW1信息
mysql -h <host> -utest_user -pPassword123 --prompt='mysql@rw1_1 [\d]> ' dbfortest

  1. 在终端2中,连接RW2节点。

说明:您需要将命令中的<host>改为RW2节点地址。

## 连接信息用RW2信息
mysql -h <host> -utest_user -pPassword123 --prompt='mysql@rw2_1 [\d]> ' dbfortest

  1. 在终端3中,连接RW2节点。

说明:您需要将命令中的<host>改为RW2节点地址。

dbfortest## 连接信息用 RW2 信息
mysql -h <host> -utest_user -pPassword123 --prompt='mysql@rw2_2 [\d]> ' dbfortest

3.  创建测试数据

本步骤将指导您如何创建测试数据。

在终端1中,执行如下SQL命令,创建测试表t1,并导入基础数据。

DROP TABLE IF EXISTS t1;
create table t1 (id int, name varchar(50), primary key (id)) engine = innodb;
insert into t1 values (1, 'PolarDB'), (2, 'MySQL'), (3, 'Oracle');

4.  行级读写交叉

本步骤主要测试多个RW节点间事务一致性。

  1. 在终端1和终端2中,分别执行如下SQL,查看基础数据。
select *from t1;

返回结果如下,您可以看到通过两个节点查到的数据是一致的。

  • 终端1连接的RW1节点查询结果:

  • 端2连接的RW2节点查询结果:

  1. 通过终端1修改数据库中数据表的数据,在终端2中验证多RW节点间事务一致性。

2.1 在终端1中,执行如下SQL,将数据库t1表内ID为1的name字段值更新为PolarDB MM,但不提交事务,然后查询数据表t1。

begin;
update t1 set name = 'PolarDB MM' where id = 1;
select * from t1;

返回结果如下,您可以看到对应的name字段值已经显示为PolarDB MM。

2.2 在终端2中,执行如下SQL,查询数据表t1。

select * from t1;

返回结果如下,数据库表t1中ID为1的name字段值仍然为PolarDB。

2.3 在终端1中,执行如下SQL,提交update事务。

commit;

2.4 在终端2中,执行如下SQL,重新查询t1表数据。

select *from t1;

返回结果如下,您可以看到数据库表t1中ID为1的name字段值已经展示更新后的结果PolarDB MM。

  1. 通过终端2修改数据库中数据表的数据,在终端1中验证多RW节点间事务一致性。

3.1 在终端2中,执行如下SQL,将数据库t1表内ID为1的name字段值更新为PolarDB,但不提交事务,然后查询数据表t1。

begin;
update t1 set name = 'PolarDB' where id = 1;
select * from t1;

返回结果如下,您可以看到对应的name字段值已经显示为PolarDB。

3.2 在终端1中,执行如下SQL,查询数据表t1。

select *from t1;

返回结果如下,数据库表t1中ID为1的name字段值仍然为PolarDB MM。

3.3 在终端2中,执行如下SQL,提交update事务。

commit;

3.4 在终端1中,执行如下SQL,重新查询t1表数据。

select *from t1;

返回结果如下,您可以看到数据库表t1中ID为1的name字段值已经展示更新后的结果PolarDB。

5.  行级写写交叉

本步骤主要测试多个RW节点间事务并发控制,我们可以通过已连接RW2节点的终端3查看线程状态。

  1. 在终端1中,执行如下update操作,将t1表中ID为1的name字段值修改为PolarDB MM,但不提交事务。
begin;
update t1 set name = 'PolarDB MM' where id = 1;

  1. 在终端2中,执行如下update操作,将t1表中ID为1的name字段值修改为PolarDB RAC,但不提交事务。
begin;
set innodb_mm_lock_wait_timeout = 300;
update t1 set name = 'PolarDB RAC' where id = 1;

  1. 在终端3中,执行如下命令,显示正在运行的线程。
show processlist;

返回结果如下,您可以看到终端2(即RW2节点上)提交数据update线程处于阻塞状态。

  1. 在终端1中,执行如下SQL,提交事务。
commit;

终端1中提交事务后,您可以看到终端2下发的update线程将会继续执行。

  1. 在终端2中,执行如下SQL,回滚update操作,并清理数据。
rollback;
drop table t1;
  1. 在三个访问终端中,分别执行exit;,退出数据库会话,完成事务透明多写实验。

6.  集群性能扩展性测试

我们分别在不同主节点数量的情况下,使用脚本(读写混合)对数据库计算节点进行压测。然后通过控制台实时查看在不同主节点数量下集群TPS、QPS值的变化趋势。

  1. 数据准备。

在终端1中,依次执行如下命令,在RW1节点准备数据。

说明:您需要将命令中--mysql-host的参数值改为RW1的节点地址。

## 连接信息用 RW1 信息
sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=<host1> --mysql-port=3306 --mysql-user=test_user --mysql-password=Password123 --mysql-db=dbfortest --db-driver=mysql --tables=32 --table-size=2000000 --time=120  --report-interval=1  --threads=32 --mysql-ignore-errors=1205,1213,8015 --rand-type=uniform --auto-inc=off cleanup
sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=<host1> --mysql-port=3306 --mysql-user=test_user --mysql-password=Password123 --mysql-db=dbfortest --db-driver=mysql --tables=32 --table-size=2000000 --time=120  --report-interval=1  --threads=32 --mysql-ignore-errors=1205,1213,8015 --rand-type=uniform --auto-inc=off prepare

  1. 单节点性能。

2.1 执行如下命令,压测访问RW1单个节点。

说明:您需要将命令中--mysql-host的参数值改为RW1的节点地址。

## 连接信息用 RW1 信息
sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=<host1> --mysql-port=3306 --mysql-user=test_user --mysql-password=Password123 --mysql-db=dbfortest --db-driver=mysql --tables=32 --table-size=2000000 --time=120  --report-interval=1  --threads=32 --mysql-ignore-errors=1205,1213,8015 --rand-type=uniform --auto-inc=off run

2.2 在实验室页面右侧的功能栏中,单击 图标,切换至远程桌面。

2.3 在基本信息页面左侧导航栏中,选择诊断与优化>性能监控

2.4 在集群页签,您可查看到在不同主节点数量下集群TPS、QPS值的变化趋势。

  1. 两节点性能。

3.1 在实验室页面右侧的功能栏中,单击 图标,切换至Web Terminal。

3.2 执行如下命令,压测访问 RW1、RW 2 ,2个节点

说明:您需要将命令中--mysql-host的参数值改为RW1和RW2的节点地址。

## 连接信息用 RW1 和 RW2 信息
sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=<host1>,<host2> --mysql-port=3306 --mysql-user=test_user --mysql-password=Password123 --mysql-db=dbfortest --db-driver=mysql --tables=32 --table-size=2000000 --time=120  --report-interval=1  --threads=64 --mysql-ignore-errors=1205,1213,8015 --rand-type=uniform --auto-inc=off run

3.3 在实验室页面右侧的功能栏中,单击 图标,切换至远程桌面。

3.4 在集群页签,刷新页面,您可查看到在不同主节点数量下集群TPS、QPS值的变化趋势。可以发现随着节点数量增加,集群整体的处理能力持续增强。

实验链接:https://developer.aliyun.com/adc/scenario/771842aac4ba4b759bb3620066a7c3b2

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5天前
|
关系型数据库 Unix MySQL
MySQL是一种关系型数据库管理系统
MySQL是一种关系型数据库管理系统
15 2
|
2月前
|
关系型数据库 MySQL 分布式数据库
PolarDB 并行查询问题之保证与MySQL的兼容性如何解决
PolarDB 并行查询问题之保证与MySQL的兼容性如何解决
21 1
|
2月前
|
负载均衡 算法 关系型数据库
MySQL集群如何实现负载均衡?
【8月更文挑战第16天】MySQL集群如何实现负载均衡?
76 6
|
2月前
|
存储 负载均衡 关系型数据库
MySQL集群
【8月更文挑战第16天】MySQL集群
36 5
|
2月前
|
SQL 负载均衡 关系型数据库
*配置MySQL集群
【8月更文挑战第16天】*配置MySQL集群
36 2
|
2月前
|
SQL 关系型数据库 MySQL
Nacos 1.2.1 集群搭建(二)MySQL、cluster 配置
Nacos 1.2.1 集群搭建(二)MySQL、cluster 配置
52 1
|
3月前
|
关系型数据库 MySQL 分布式数据库
PolarDB产品使用问题之使用polardb for mysql数据库的外网地址在程序中连接经常超时,如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
2月前
|
缓存 关系型数据库 MySQL
如何实现mysql高可用集群
如何实现mysql高可用集群
17 0
|
26天前
|
关系型数据库 MySQL Serverless
探索PolarDB MySQL版:Serverless数据库的灵活性与性能
本文介绍了个人开发者对阿里云PolarDB MySQL版,特别是其Serverless特性的详细评测体验。评测涵盖了产品初体验、性能观测、Serverless特性深度评测及成本效益分析等方面。尽管试用过程中遇到一些小问题,但总体而言,PolarDB MySQL版表现出色,提供了高性能、高可用性和灵活的资源管理,是个人开发者和企业用户的优秀选择。
|
2月前
|
关系型数据库 MySQL 分布式数据库
PolarDB 与传统数据库的性能对比分析
【8月更文第27天】随着云计算技术的发展,越来越多的企业开始将数据管理和存储迁移到云端。阿里云的 PolarDB 作为一款兼容 MySQL 和 PostgreSQL 的关系型数据库服务,提供了高性能、高可用和弹性伸缩的能力。本文将从不同角度对比 PolarDB 与本地部署的传统数据库(如 MySQL、PostgreSQL)在性能上的差异。
88 1

热门文章

最新文章

下一篇
无影云桌面