PolarDB MySQL无损快速的热备切换

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 本实验带您体验在故障容灾场景下,PolarDB MySQL无损快速的热备切换。

PolarDB MySQL无损快速的热备切换

1. 选择实验资源

本实验支持实验资源体验、开通免费试用、个人账户资源三种实验资源方式。

在实验开始前,请您选择其中一种实验资源,单击确认开启实验

  • 如果您选择的是实验资源体验,资源创建过程需要3~5分钟(视资源不同开通时间有所差异,ACK等资源开通时间较长)。完成实验资源的创建后,在实验室页面左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如子用户名称、子用户密码、AK ID、AK Secret、资源中的项目名称等)。

说明:实验环境一旦开始创建则进入计时阶段,建议学员先基本了解实验具体的步骤、目的,真正开始做实验时再进行创建。

  • 如果您选择的是开通免费试用,下方卡片会展示本实验支持的试用规格,可以选择你要试用的云产品资源进行开通。您在实验过程中,可以随时用右下角icon唤起试用卡片。

说明:试用云产品开通在您的个人账号下,并占用您的试用权益如试用超出免费试用额度,可能会产生一定费用。

阿里云支持试用的产品列表、权益及具体规则说明请参考开发者试用中心


2. 创建资源

本步骤指导您如何创建云服务器ECS和云数据库PolarDB。

如果您已创建云服务器ECS和云数据库PolarDB,请您选择个人账户资源,并跳过本小节,直接进行实验操作即可。

本步骤仅作为参考使用,您可以根据需求自行选择配置。

如果您选择的是开通免费试用,参考以下步骤云服务器ECS和云数据库PolarDB。

  1. 在本实验页面下方卡片会展示本实验支持的试用规格,依次选择一个试用规格,单击立即试用

  1. 在云服务器ECS试用开通页面,根据页面引导进行开通云服务器ECS,其中操作系统选择CentOS 7.7 64位地域需要与云数据库PolarDB在同一地域下,其他配置根据您的需求自行选择即可。
  2. 在云数据库PolarDB试用开通页面,根据页面引导进行开通云数据库PolarDB MySQLs,其中数据库类型选择MySQL计费类型Serverless数据库版本号选择8.0地域需要与云服务器ECS在同一地域下,其他配置根据您的需求自行选择即可。

如果您选择的是个人账户资源,参考以下步骤云服务器ECS和云数据库PolarDB。

  1. 创建云服务器ECS。

1.1 前往云服务器ECS控制台,在概览页面的我的资源区域,单击创建实例

1.2 在云服务器ECS购买页面,根据页面引导进行开通云服务器ECS,其中操作系统选择CentOS 7.7 64位地域需要与云数据库PolarDB在同一地域下,其他配置根据您的需求自行选择即可。

  1. 创建云数据库PolarDB。

2.1 前往云数据库PolarDB创建页面。

2.2 在云数据库PolarDB创建页面,根据页面引导进行开通云数据库PolarDB MySQL,其中数据库类型选择MySQL数据库版本号选择8.0地域需要与云服务器ECS在同一地域下,其他配置根据您的需求自行选择即可。计费问题请参考官方文档


3. 实验环境配置

安装MySQL

  1. 更新yum源。

执行如下命令,更新MySQL的yum源。

rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
  1. 安装MySQL并查看版本。

执行如下命令,安装MySQL。

yum -y install mysql-community-server --nogpgcheck

执行成功上述命令后,继续在窗口执行MySQL版本检测命令:

mysql -V

上述两部操作执行完成后的页面如图所示。

  1. 启动MySQL服务,并将其设置为开机自启动。

执行如下命令,启动MySQL。

systemctl start mysqld

安装sysbechch

  1. 下载安装sysbechch
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
sudo yum -y install sysbench
  1. 查看版本信息
sysbench --version


4. 配置PolarDB MySQL集群

本步骤将指导您在PolarDB MySQL集群上创建用于压测的数据库和账号,配置白名单实现ECS访问,并设置相关参数。。

  1. 双击打开远程桌面的Chromium网页浏览器
  2. 在RAM用户登录框中单击下一步,并复制粘贴页面左上角的子用户密码用户密码输入框,单击登录

  1. 复制下方地址,在Chromium网页浏览器打开新页签,粘贴并访问云数据库PolarDB控制台。
https://polardb.console.aliyun.com/
  1. 集群列表页面顶部菜单栏,地域切换为华东1(杭州)。

  1. 集群列表页面,找到目标集群,单击集群ID

说明:您可以在云产品资源列表中查看到PolarDB实例ID。

  1. 配置白名单。

a.在左侧导航栏中,选择配置与管理>集群白名单

b.在集群白名单页面,单击default分组右侧的配置

c.在配置白名单面板中,将白名单内IP地址区域的ip修改为实验室分配给您的ECS实例的公网IP地址,单击确定

说明:您可以在云产品资源列表中查看到ECS公网IP地址。

  1. 创建账号。

a.在左侧导航栏中,选择配置与管理>账号管理

b.在账号管理页面,单击创建账号

c.在创建账号面板中,参考说明配置账号信息,单击确定

参数说明:

  • 数据库账号:输入数据库账号名称,例如test_user
  • 账号类型:选择高权限账号
  • 密码:输入账号密码,例如Password123
  • 确认密码:再次输入账号密码。

  1. 创建用于压测的数据库。

a.在左侧导航栏中,选择配置与管理>数据库管理

b.在数据库管理页面。单击创建数据库

c.在创建数据库面板中,参考说明配置数据库信息,单击创建

参数说明:

  • 数据库(DB)名称:输入数据库名称,例如hotrep
  • 支持字符集:默认设为utf8mb4
  • 备注说明:非必填。用于备注该数据库的相关信息,便于后续数据库管理,最多支持256个字符。

  1. 设置集群参数。

a.在左侧导航栏,选择配置与管理>参数配置

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

c.在参数列表中,在搜索框中输入loose_innodb_trx_resume,单击图标,找到loose_innodb_trx_resume参数,将该参数的集群参数值修改为ON,单击提交修改

d.在保存改动面板中,单击确定

返回如下页面,请您耐心等待两分钟,并刷新页面,当loose_innodb_trx_resume参数的集群参数值为ON时,表示您修改完成。


5. 为只读节点开启热备

本实验的PolarDB MySQL集群包含一个RW节点和一个RO节点。本步骤将指导您为该RO节点开启热备。

  1. 为RO节点开启热备。

a.在左侧导航栏中, 单击基本信息

b.在基本信息页面的数据库节点区域,单击右上角的图标切换视图。

c.在数据库节点区域,找到需要设置热备功能的只读节点,单击操作列下的开启热备

d.在开启热备对话框中,单击确认

返回如下页面,请您耐心等待大约六分钟,只读节点的状态变为运行中,表示热备开启完成。

  1. 为集群申请公网集群地址。

a.在基本信息页面的数据库代理企业通用版区域,选择同时指向了主节点和只读节点的集群地址,单击公网右侧的申请

b.在申请访问地址对话框中,请您自定义输入集群公网地址的前缀,单击确定

c.在基本信息页面,请您耐心等待大约30秒并刷新页面,将鼠标移至数据库代理企业通用版区域的集群地址上,在上方的悬浮框中,您可以看到刚刚申请的公网地址信息(包括地址和端口),该公网地址信息在后续步骤将使用到。


6. 通过ECS向数据库插入数据并执行压测

本步骤将指导您在配置完成PolarDB MySQL实例后,通过云服务器ECS,向PolarDB MySQL数据库插入数据和进行压测。

  1. 在实验室页面右侧,单击 图标,切换至Web Terminal,即ECS终端。

说明:Web Terminal打开后,已自动通过ECS的公网IP地址连接至ECS。

  1. 在终端中,参考说明修改如下命令中的部分参数取值,然后执行命令,向数据库中插入数据。
sysbench --threads=4 --time=7200  --mysql_host=xxxxxx.rwlb.rds.aliyuncs.com --mysql-port=3306 --mysql-db=hotrep --mysql-user=test_user --mysql-password=Password123 /usr/share/sysbench/oltp_read_write.lua --tables=10 --table_size=10000 prepare

参数说明:

  • mysql_host:PolarDB MySQL集群的公网连接地址。本实验中使用步骤三中申请的公网连接地址。
  • mysql-port:PolarDB MySQL集群的公网地址端口号。本实验中使用步骤三中申请的公网地址端口信息,默认为3306。
  • mysql-db:数据库名称。本实验中使用步骤二中创建的数据库,例如hotrep
  • mysql-user:数据库用户名。本实验中使用步骤二中创建的用户,例如test_user
  • mysql-password:数据库用户的密码。本实验中使用步骤二中创建的用户的密码,例如Password123

请您耐心等待大约20秒钟,返回结果如下,表示导入测试数据完成。

  1. 参考说明修改如下命令中的部分参数取值,然后执行命令,开始压测。
sysbench --threads=4 --time=7200 --histogram=on --mysql_host=xxxxxx.rwlb.rds.aliyuncs.com --mysql-port=3306 --mysql-db=hotrep --mysql-user=test_user --mysql-password=Password123 /usr/share/sysbench/oltp_read_write.lua --report-interval=1 --tables=10 --table_size=10000 run

参数说明:

  • mysql_host:PolarDB MySQL集群的公网连接地址。本实验中使用步骤三中申请的公网连接地址。
  • mysql-port:PolarDB MySQL集群的公网地址端口号。本实验中使用步骤三中申请的公网地址端口信息,默认为3306。
  • mysql-db:数据库名称。本实验中使用步骤二中创建的数据库,例如hotrep
  • mysql-user:数据库用户名。本实验中使用步骤二中创建的用户,例如test_user
  • mysql-password:数据库用户的密码。本实验中使用步骤二中创建的用户的密码,例如Password123

返回结果如下,表示开始压测。


7. 开启一个事务

本步骤将指导您如何通过云服务器ECS连接到PolarDB集群,并准备一行数据before test,并开启一个事务,将该数据更新为start test。

  1. 通过新的ECS终端连接到PolarDB MySQL集群。

a.在实验室页面的Web Terminal中,在正在执行的ECS终端窗口中,单击右上角按钮,开启一个新的ECS终端。

b.在新终端中,参考说明修改如下命令中的参数,然后执行命令,连接到PolarDB MySQL集群。

mysql --host xxxxxx.rwlb.rds.aliyuncs.com --port 3306 -utest_user -pPassword123

参数说明:

  • --host:PolarDB MySQL集群的公网连接地址。本实验中使用步骤三中申请的公网连接地址。
  • --port:PolarDB MySQL集群的端口号。本实验中使用步骤三中申请的公网地址端口信息,默认为3306。
  • -u:数据库用户名。本实验中使用步骤二中创建的用户,例如test_user
  • -p:数据库用户的密码。本实验中使用步骤二中创建的用户的密码,例如Password123

c.执行如下SQL语句,连接到步骤二中创建的hotrep数据库。

use hotrep;

d.分别执行如下SQL语句,创建数据表t1,并插入一条数据before test。

create table t1 (id int primary key, data varchar(128));
insert into t1 values (1, "before test");

e.执行查询命令,确认t1表中已存在一行数据before test。

select * from t1;

返回结果如下,您可查看到t1表中已存在一行数据before test。

f.依次执行如下命令,开启一个事务,在事务中将before test更新为start test,并查询确认结果为start test

begin;
update t1 set data="start test" where id=1;
select * from t1;


8. 模拟触发故障容灾

本步骤将指导您如何在PolarDB MySQL集群中模拟故障容灾的发生。

  1. 前往PolarDB MySQL集群的DMS页面。

a.在实验室页面右侧,单击图标,切换至远程桌面。

b.在左侧导航栏中,选择配置与管理>数据库管理

c.在数据库管理页面,找您创建的数据库,单击操作列下的SQL查询

d.在登录实例对话框中,输入您在步骤二中创建的数据库账号数据库密码,例如test_user/Password123,单击测试连接

e.在成功对话框中,单击确认

f.在登录实例对话框中,单击登录

g.在DMS页面左侧,选择数据库实例>已登录实例>hotrep-PolarDB,双击hotrep

返回如下页面,表示您成功通过DMS登录PolarDB MySQL集群,并连接到hotrep数据库。

  1. SQLConsole页签,输入如下SQL语句,单击执行(F8),激活PolarDB MySQL集群的模拟故障容灾功能。
call dbms_fault.crash();


9. 观察业务中断情况和事务情况

本步骤将指导您在触发模拟故障容灾后,如何观察业务中断情况和事务续传情况。

  1. 在实验室页面右侧,单击 图标,切换至Web Terminal,即ECS终端。
  2. 在ECS终端中,观察压测的执行情况。压测的执行情况可以反应业务的连接情况。 如下图您可以看到,在触发故障容灾后,压测程序的TPS出现了跌零,持续10秒左右后立即恢复,并恢复正常的压测。在触发故障容灾后到恢复正常的压测期间,并没有出现报错,数据库连接也未发生中断。

  1. 在看到TPS恢复后,在右侧连接到PolarDB MySQL集群的ECS终端中,执行相关SQL语句,观察事务的续传情况。

a.执行如下SQL语句,查询数据表t1。

select * from t1;

返回结果如下,您可从返回的结果是start test得知,数据库可以正常执行查询,并返回容灾前当前事务更新的状态。

b.依次执行如下SQL语句,该SQL语句可继续执行触发故障容灾之前的事务(见步骤五),将其更新为trx resume success并提交。

update t1 set data="trx resume success" where id=1;
commit;

c.执行如下SQL语句,查询数据表t1。

select * from t1;

返回结果如下,您可从返回的结果是trx resume success得知,事务执行成功。这说明热备RO上触发故障容灾后,事务不中断。


10. 实验拓展

在完成以上步骤实验后,您可以关闭RO节点的热备功能,并重新执行步骤四至步骤七,从而体验未开启热备功能的普通RO节点在遇到故障容灾之后,业务的中断情况和事务续传情况。本实验中不再赘述普通RO的实验流程。

您也可以观看热备RO与普通RO故障容灾的表现对比的视频,了解普通RO节点的表现情况。

从以上对比可知,在故障容灾failover场景(如主节点宕机)下:

  • 热备RO可以实现连接和事务不中断,且不出现中断报错。
  • 普通RO会出现较长时间的连接中断,且出现中断报错。事务也会发生中断。


11. 释放资源

在完成实验之后,若您想保留实验相关的云产品资源,请随时关注账户扣费情况。若您不想保留实验相关的云产品资源,释放云产品资源即可。

实验链接:https://developer.aliyun.com/adc/scenario/5c6eb86de7754f4ca40cd0898e8d1dd6

相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
SQL NoSQL 关系型数据库
关系型数据库管理系统Mysql
关系型数据库管理系统Mysql
|
1天前
|
DataWorks 关系型数据库 MySQL
DataWorks产品使用合集之在DataWorks中,如何通过PolarDB for MySQL来查看binlog日志
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
9 1
|
2天前
|
关系型数据库 分布式数据库 数据库
VLDB顶会论文解读 | PolarDB MySQL高性能强一致集群核心技术详解
在VLDB2023会议上,阿里云瑶池数据库团队的论文介绍了PolarDB-SCC,这是一个创新的云原生数据库系统,确保了低延迟的全局强一致读取。PolarDB-SCC解决了传统主从架构中只读节点可能返回过期数据的问题,实现了在不影响性能的情况下提供强一致性。通过重新设计的主从信息同步机制、线性Lamport时间戳和细粒度修改跟踪,以及利用RDMA优化的日志传输,PolarDB-SCC已经在PolarDB中成功应用超过一年,成为业界首个无感知全局一致性读的云原生数据库解决方案。
|
2月前
|
数据可视化 关系型数据库 MySQL
PolarDB常见问题之无法创建mysql的连接池如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
2月前
|
存储 关系型数据库 MySQL
TiDB与MySQL、PostgreSQL等数据库的比较分析
【2月更文挑战第25天】本文将对TiDB、MySQL和PostgreSQL等数据库进行详细的比较分析,探讨它们各自的优势和劣势。TiDB作为一款分布式关系型数据库,在扩展性、并发性能等方面表现突出;MySQL以其易用性和成熟性受到广泛应用;PostgreSQL则在数据完整性、扩展性等方面具有优势。通过对比这些数据库的特点和适用场景,帮助企业更好地选择适合自己业务需求的数据库系统。
|
2月前
|
关系型数据库 MySQL 分布式数据库
PolarDB for MySQL数据库外网连接解析失败的原因可能有以下几点
【2月更文挑战第16天】PolarDB for MySQL数据库外网连接解析失败的原因可能有以下几点
27 1
|
2月前
|
关系型数据库 MySQL 测试技术
数据库专家带你体验PolarDB MySQL版 Serverless的极致弹性特性!
本次基于阿里云瑶池数据库解决方案体验馆,带你体验PolarDB MySQL Serverless形态下的性能压测环境,基于可选择的标准压测工具进行压测,构造弹性场景进行压测,实时动态展示弹性能力、价格和性价比结果,压测环境可开放定制修改、可重复验证。参与活动即有机会获得鼠标、小米打印机、卫衣等精美礼品。
数据库专家带你体验PolarDB MySQL版 Serverless的极致弹性特性!
|
3月前
|
关系型数据库 MySQL 测试技术
数据库专家带你体验PolarDB MySQL版 Serverless的极致弹性特性
本次基于阿里云瑶池数据库解决方案体验馆,带你体验PolarDB MySQL Serverless形态下的性能压测环境,基于可选择的标准压测工具进行压测,构造弹性场景进行压测,实时动态展示弹性能力、价格和性价比结果,压测环境可开放定制修改、可重复验证。参与活动即有机会获得鼠标、小米打印机、卫衣等精美礼品。
|
3月前
|
关系型数据库 MySQL 分布式数据库
PolarDB for MySQL数据库外网连接解析失败的原因
【2月更文挑战第5天】PolarDB for MySQL数据库外网连接解析失败的原因
66 8
|
2月前
|
关系型数据库 分布式数据库 数据库
成都晨云信息技术完成阿里云PolarDB数据库产品生态集成认证
近日,成都晨云信息技术有限责任公司(以下简称晨云信息)与阿里云PolarDB PostgreSQL版数据库产品展开产品集成认证。测试结果表明,晨云信息旗下晨云-站群管理系统(V1.0)与阿里云以下产品:开源云原生数据库PolarDB PostgreSQL版(V11),完全满足产品兼容认证要求,兼容性良好,系统运行稳定。

相关产品

  • 云数据库 RDS MySQL 版
  • 云原生数据库 PolarDB