关系型云数据库服务(RDS)MySQL版让您可以快速在云端使用、操作MySQL数据库。在管理数据库任务的同时,可以根据业务情况调整和设置数据库,从而满足您不同业务发展需求,并且提供监控、运维工具等数据库运维全套解决方案,而且具有高性价比,您无需预先采购硬件资源。省心的关系型云数据库MySQL服务让您能更加专注于业务的发展。
提供按需付费(按小时计费)的计费方式,用完可立即释放实例,节省费用。
您无需购置数据库服务器硬件或软件,节省大量成本。
开始使用RDS,只需通过控制台创建指定规格的RDS实例,在数分钟内即可生成RDS实例。
在业务初期,您可以购买小规格的RDS实例来应对业务压力。随着数据库压力和数据存储量的增加,可以升级实例规格。业务回到低峰时,可以降低实例规格,节省费用。
RDS与原生数据库引擎的使用方法一致,您无需二次学习,上手即用。
首云负责RDS的日常维护和管理,包括但不限于软硬件故障处理、数据库补丁更新等工作,保障RDS的正常运转。
您也可以通过首云控制台或者通过PHPmyAdmin自行完成数据库的管理操作。
可以利用首云管理控制台、RDS 命令行界面在几分钟之内访问生产就绪型关系数据库的功能。
系列 | 说明 |
主从版 |
|
集群版 |
|
高性能型(SSD)存储
RDS 高性能型存储是 SSD 型存储选项,可提供3000至5000 IOPS。适用于对数据库IO性能要求较高的业务场景。
多副本冗余
RDS服务器中的数据采用多副本,数据备份存储在OSS上。
高可用链路
连接器提供高可用链路,防范单点故障,保障业务不受影响。
RDS 提供手动、自动备份的机制。您可以根据自身业务特点随时发起备份。
支持按备份集冷恢复。在大多数场景下,您可以将OSS上的数据恢复到RDS主实例,从而完成数据回溯。
支持数据热恢复,可以恢复到任意时间点。
自动侦测服务故障,发生故障时能够在秒级完成故障转移,用户端不需要做任何修改。
您可以为每个实例定义IP白名单,只有白名单中的IP地址所属的设备才能访问RDS。账号之间实现资源隔离,每个账号只能查看和操作自己的数据库。
云数据库RDS实例包括两个系列:主从版和集群版。
系列 | 说明 | 支持版本 |
主从版 |
|
MySQL 5.7 |
集群版 |
|
MySQL 5.6 |
RDS集群版采用3节点,以multi-master方式实现,纵向结构采用中间件累加,保障负载均衡、读写分离等需求。
中间层分为三层,用于实现负载均衡、后端透明、读写分离。
负载均衡器是在创建集群实例时自动创建的,采用主备模式,由心跳机制保障服务正常,解决后端服务器出现故障或者本身自己出现故障。以轮询权重等同的方式提供4层负载均衡服务,保障在高并发的情况下,集群仍然能够保障高性能,高可用。
>对于读写分离,采用plugin的方式提供给客户,根据自己的需求设定。当开启以后,读写分离器设置multi-master集群节点的角色,采用第一个节点为rw节点,其他两节点为读节点,权重都是1。
多写多读架构针对电商行业秒杀场景进行专项优化,解决热点数据的高并发更新性能瓶颈,性能得到了很大的提升。通过高安全模式,内置SQL注入检测模块,实时拦截风险SQL,保护数据安全。
RDS集群版是以三节点multi-master的方式设计的一套多主集群。每个节点都可以作为主节点,是真正的多点读写高冗余集群,保证业务数据的强一致性、完整性,充分满足金融级合规可靠性要求。
利用读写分离模块的动态分离能力,分担主实例的读写压力。满足WEB类的业务需求。
对计算资源的弹性伸缩能力,赋予您更高的生产力,分钟级部署游戏分区数据库;搭配高安全链路,实现全自动无感知容灾切换,业务稳定性先人一步。
链路是VDC用于访问数据库的方式,在您创建实例的时候,需要选择链路类型。现在提供的链路类型有两种,默认链路和连接器链路。
默认链路使用的是租户内网带宽,提供高可用,但是每个服务实例都将占用内网IP。使用默认链路避免了连接器中复杂的传输路径,能降低网络延迟,对于延时敏感型业务,建议选择默认链路。
拓扑图
连接器链路提供高可用,支持横向扩展的负载。一个连接器下可以连接多个实例,除连接器自身占用的IP外,该连接器下的服务实例将不需要再占用IP,因此帮助客户节约了内网IP地址,但是由于连接器自身的架构特性,会增加延迟。
提示:从2021-03-19号起不再提供连接器链路
拓扑图
1.登陆控制台。
2.左侧选择数据库服务。
3.在页面右上角选择【创建数据库服务】。
4.选择数据库服务MySQL【开通服务】。
5.设置以下参数。
虚拟数据中心 |
实例所在的可用区和资源组。购买后无法更换地域。 请根据目标用户所在的地理位置就近选择地域,提升用户访问速度。 请确保RDS实例与需要连接的云主机实例创建于同一个地域,否则它们无法通过内网互通,只能通过外网互通,无法发挥最佳性能。 |
计费方式 | 实例的计费方式为按需计费。 |
数据库类型 | 实例的数据库类型为MySQL。 |
引擎版本 | 指MySQL的版本,当前支持的版本有MySQL 5.6.25、5.7.24 |
架构类型 |
MySQ5.6.25实例的架构类型为集群版; MySQ5.7.24实例的架构类型为主从版。 |
链路类型 |
指实例的网络类型,分为默认链路和连接器链路. 默认链路:用户需要自己选择需要的内网网段,系统会自动分配此网段未占用的IP地址给数据库实例使用。 连接器链路:连接器提供高可用链路,防范单点故障,保障业务不受影响。没有连接器时需要创建连接器。目前连接器不收费。 |
计算类型 |
实例的计算类型有高性能型和高I/0型。 说明:不同的数据中心支持的计算类型不同。目前支持高I/O型的数据中心有:中国大陆-广州-可用区A,中国大陆-上海-可用区A。 |
实例规格 |
每种规格对应不同的CPU核数、内存、最大连接数和最大IOPS。有以下选择: 集群版: 2C4G:最大连接数800 4C8G:最大连接数1600 8C16G:最大连接数3200 8C24G:最大连接数:4800 8C32G:最大连接数6400 8C48G:最大连接数9600 8C64G:最大连接数12800 自定义 主从版: 2C4G:最大连接数800 4C8G:最大连接数1600 8C16G:最大连接数3200 8C32G:最大连接数6400 自定义 |
白名单 | 支持设置白名单 |
读写分离 | 支持开启或关闭读写分离,默认为开启。 |
存储 |
选择存储类型和对应的存储大小。存储类型有:性能型、超高性能型;存储大小可选范围为0-2000G(单盘),但最高可以添加13块硬盘。 说明:不同数据中心可选的存储类型不同。目前支持超高性能型的数据中心有:中国大陆-广州-可用区A,中国大陆-上海-可用区A。 |
实例名称 |
支持设置实例名称,可选择创建后设置或立即命名。 如果选择创建后设置将生成一个默认名称。 |
6.检查当前配置,确认配置和费用。
7.阅读并勾选同意《云关系型数据库服务等级协议》。
8.点击【创建】完成实例创建。
MySQL | |
功能列表 | 功能说明 |
模式 | 集群模式/主从模式 |
服务开通 | 创建MySQL实例 |
终止实例 | 删除数据库实例 |
基本信息 | 显示当前数据库基本信息内容 |
配置变更 | 可变更数据库计算规格 |
存储扩容 | 可扩容当前数据库存储大小 |
日志管理 | 查看当前数据库节点日志信息 |
用户权限 | 管理和创建数据库账号 |
实时信息 | 查看当前数据库节点的数据库实时状态 |
备份恢复 | 提供数据库备份功能,恢复功能,提供手动备份,自动备份,备份策略管理等功能 |
连接数据库 | 通过数据库管理工具可以连接当前数据库实例 |
标签管理 | 给实例添加标签方便分类管理。 |
变配方式
变配后,新的配置立即生效。
变更项
本文将介绍如何变更实例的规格、存储空间
说明:
注意事项
在变更配置生效期间,RDS服务可能会出现一次约30秒的闪断,而且与数据库、账号、网络等相关的大部分操作都无法执行,请尽量在业务低峰期执行变配操作,或确保您的应用有自动重连机制。
操作步骤
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.找到目标MySQL实例,点击实例ID
4.在【基本信息】页面找到【规格配置】。
5.点击【修改】进行规格修改,然后选择需要的计算规格。
6.在【基本信息】页面找到【存储配置】。
7.点击【添加】进行存储空间的增加,然后选择需要的存储大小。
8.在变更配置及计费信息处【确认】即可完成变更。
您可以在控制台查看和修改部分参数的值,并在控制台查询参数修改记录。
注意事项
修改参数值
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.找到目标MySQL实例,点击实例ID。
4.在顶部导航栏中选择【更多】-【参数配置】。
5.您可以进行如下操作:
修改单个参数:
I)在【可修改参数】列表内找到需要修改的参数,单击运行参数值列的。
II)根据提示的取值范围输入参数值。
III)单击【确定】。
IV)在右上角点击【提交参数】。
说明:
批量修改参数:
I)单击【导出参数】,会将txt格式的参数文件保存到本地,该txt文件包含该实例所有可修改的参数值。
II)修改导出的参数文件。
III)修改完成后,单击【导入参数】,将参数文件内容粘贴到对话框中。
IV)单击【确定】。
V)在右上角单击【提交参数】。
说明:
查看参数修改历史
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.找到目标MySQL实例,点击实例ID。
4.在顶部导航栏中选择【更多】-【参数配置】。
5.点击【修改历史】页签。
6.选择时间范围并单击【查询】。
本文介绍如何为云数据库MySQL实例创建账号。
账号类型
云数据库MySQL实例支持两种数据库账号:高权限账号和普通账号。您可以在控制台管理所有账号,账号拥有的具体权限请参见文末账号权限列表。
账号类型 | 说明 |
高权限账号 |
|
普通账号 |
|
创建高权限账号
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.找到目标MySQL实例,点击实例ID。
4.在顶部导航栏中选择【更多】-【用户权限】。
5.点击【创建用户】。
6.设置以下参数:
参数 | 说明 |
用户名 |
填写账号名称。要求如下:
|
账户类型 | 此处选择高权限账号。 |
密码 |
设置账户密码。要求如下:
|
确认密码 | 再次输入密码。 |
备注说明 | 备注该账户的相关信息,便于后续账户管理。最多支持256个字符。 |
7.单击【确定】。
重置账号权限
如果高权限账号自身出现问题,比如权限被意外回收(REVOKE ),您可以通过重置账号权限的方法恢复。
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.找到目标MySQL实例,点击实例ID。
4.在顶部导航栏中选择【更多】-【用户权限】。
5.单击【高权限账号】右侧的【重置账号权限】。
6.输入高权限账号密码,重置账号权限。
创建普通账号
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.找到目标MySQL实例,点击实例ID。
4.在顶部导航栏中选择【更多】-【用户权限】。
5.点击【创建用户】。
6.设置以下参数:
参数 | 说明 |
用户名 |
填写账号名称。要求如下:
|
账户类型 | 此处选择普通账号。 |
授权数据库 |
为该账号授予一个或多个数据库的权限。本参数可以留空,在创建账号后再给账号授权。 I) 从左侧选中一个或多个数据库,单击添加到右侧。 II) 在右侧框中,为某个数据库选择读写、只读、仅DDL或只DML。 III) 如果要为多个数据库批量设置相同的权限,则单击右侧框里右上角的按钮,如全部设读写。 说明:右上角的按钮会随着点击而变化,例如,单击【全部设读写】后,该按钮会变成【全部设只读】。 |
密码 |
设置账户密码。要求如下:
|
确认密码 | 再次输入密码。 |
备注说明 | 备注该账户的相关信息,便于后续账户管理。最多支持256个字符。 |
7.单击【确定】。
账号权限列表
账号类型 | 授权类型 | 权限 |
高权限账号 | SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER | |
普通账号 | 只读 | SELECT, LOCK TABLES, SHOW VIEW |
读写 | SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER | |
仅DDL | CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE | |
仅DML | SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, SHOW VIEW, EVENT, TRIGGER | |
不指定数据库 | PROCESS, REPLICATION SLAVE, REPLICATION CLIENT, SELECT |
在使用云数据库MySQL过程中,如果忘记数据库账号密码,可以通过控制台重新设置密码。
操作步骤
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.找到目标MySQL实例,点击实例ID。
4.在顶部导航栏中选择【更多】-【用户权限】。
5.找到要修改密码的账号,点击【修改密码】。
6.在弹出的对话框中,输入新密码并确认后,单击【确定】。
说明 密码要求如下:
您可以根据需要修改普通账号的权限。高权限账号的权限只能重置为初始状态,无法修改为指定的权限。
修改普通账号的权限
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.找到目标MySQL实例,点击实例ID。
4.在顶部导航栏中选择【更多】-【用户权限】。
5.找到要修改权限的账号,点击【修改权限】。
6.在【修改账号】页面,调整账号权限。
修改要授权的数据库:选中数据库,单击授权,或单击移除。
设置权限:在【已授权数据库】中,可以将权限设置为读写、只读、只DDL或只DML。还可以通过单击全部设读写、全部设只读、全部设仅DDL或全部设只DML进行批量设置。
您可以通过控制台删除账号,或者通过SQL命令删除普通账号。
通过控制台删除账号
本文为您介绍通过云数据库 MySQL 控制台进入 phpMyAdmin的操作。
操作步骤
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.找到目标MySQL实例,点击实例ID。
4.在顶部导航栏中选择【更多】-【连接数据库】。
5.在弹出框中,输入账号名和密码,点击【确认】。
6.通过phpMyAdmin成功连接到MySQL数据库,在此页面您可以看到MySQL数据库的各种模式和对象,以及进行创建表、数据插入和查询等操作。
创建数据库
1.登陆phpMyAdmin,点击【新建】或者【数据库】,进入创建数据库页面。
2.输入数据库名称,选择排序规则(默认为utf8_general_ci),单击【创建】即可完成数据库的创建。
3.选择需要操作的数据库,单击上方导航栏中的【操作】,即可进入数据库操作页面,在此页面可以对数据库进行【新建数据表】、【复制数据库】等操作。
创建数据表
1.选择需要建表的数据库,单击【新建】或者在【新建数据表】栏输入数据表名和选择字段数后单击【执行】。
2.进入数据表创建页面后,若需要添加字段,请在【添加】处输入所需添加的字段数,然后单击【执行】。【结构】栏为各字段信息的填写。【PARTITION definition】栏为分区信息(请参见 MySQL 分区章节)。填写完信息后单击【保存】,即可完成数据表的创建。
删除数据库
1.登陆phpMyAdmin,单击需要管理的数据库名称,进入数据库管理页面,点击【操作】。。
2.在此页面可以对数据库进行【新建数据表】、【删除数据库】等一系列操作。单击【删除数据库(DROP)】即可完成数据库的删除操作。
删除数据表
选择需要删除的表所在的数据库,在此页面可以对数据表进行【浏览】、【结构】、【搜索】、【插入】、【清空】、【删除】一系列操作,单击【删除】。
登陆phpMyAdmin,点击【SQL】,即可执行SQL命令。
云数据库MySQL提供了丰富的性能监控项,您可以通过控制台查看实例的资源和引擎监控数据。
监控粒度
云数据库MySQL实例支持60s级粒度监控,暂不支持监控粒度的自定义选择。
说明:目前云数据库MySQL最长支持查看15天前的监控数据。
云数据库MySQL系统监控功能提供CPU、内存、磁盘及网络相关的监控数据。
操作步骤
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.找到目标MySQL实例,点击实例ID。
4.在顶部导航栏中选择【更多】-【系统监控】。
5.可以在【监控指标】下拉菜单中选择监控指标。
6.在【设备名称】下拉菜单中选择设备。
说明:
监控指标
监控项 | 说明 |
IOPS | 实例的每秒I/O请求次数,单位:次/秒。 |
内存 |
实例的内存使用量,包括:
|
CPU | 实例的CPU利用率。 |
网络流量 | 实例每秒钟的输入、输出流量,单位:KB。 |
磁盘使用量 |
实例的磁盘空间使用量,包括:
|
提供引擎相关的监控指标,方便您诊断故障及性能优化。
操作步骤
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.找到目标MySQL实例,点击实例ID。
4.在顶部导航栏中选择【更多】-【数据库监控】。
5.可以在【监控指标】下拉菜单中选择监控指标。
说明:
监控指标
监控项 | 说明 |
连接数 | 实例当前总连接数。 |
RAW_DML |
InnoDB每秒钟操作执行次数,包括:
|
InnoDB读写总量 | InnoDB每秒读取和写入的数据量,单位:MB。 |
InnoDB读写次数 | InnoDB每秒钟的读取和写入的次数。 |
InnoDB日志 |
|
COM_DML |
数据库每秒SQL语句执行次数,包括:
|
临时表 | 数据库执行SQL语句时在硬盘上自动创建的临时表的数量。 |
InnoDB缓冲池 |
|
QPS | 平均每秒SQL语句执行次数。 |
TPS | 平均每秒事务数。 |
创建云数据库MySQL实例后,您需要设置实例的白名单,以允许外部设备访问该数据库实例。白名单在创建实例时可选择开启,不开启则默认关闭。默认的白名单只包含默认IP地址127.0.0.1,表示任何设备均无法访问该MySQL实例。
白名单可以让云数据库MySQL实例得到高级别的访问安全保护,建议您定期维护白名单。设置白名单不会影响MySQL实例的正常运行。
操作步骤
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.找到目标MySQL实例,点击实例ID。
4.在基本信息页面找到【白名单】,点击按钮开启。
5.在弹出的对话框中,填写需要访问该实例的IP地址或IP段,然后单击【确定】。
数据备份用于数据损坏或丢失,您可以设置备份策略自动备份或手动备份,备份的方式都为物理备份。
注意事项
自动备份
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.选择需要备份的MySQL实例。
4.在菜单中选择【备份恢复】。
5.在【备份恢复】页面中选择【备份设置】。
6.在备份设置页面设置自动备份策略,参数说明如下:
7.自动备份可以关闭,也可以编辑频率。
手动备份
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.选择需要备份的MySQL实例。
4.在菜单中选择【备份恢复】。
5.在【备份恢复】页面中选择【备份实例】。
6.在【备份设置】页面设置好备份方式和数据保留时长,点击确认即可。参数说明:
当你已经拥有MySQL备份文件,可以通过备份恢复的方式来实现数据修复。
可以通过以下方式将备份恢复到mysql实例:
注意事项
物理备份恢复
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.选择需要备份的MySQL实例。
4.在菜单中选择【备份恢复】。
5.在【备份恢复】页面的备份数据后面选择【恢复】。
6.点击【确认】,当前备份文件的数据就会进行覆盖恢复。
7.恢复数据操作时,数据库的状态为:恢复中。此时,无法对数据库进行操作。恢复完成后,备份状态就会显示恢复的时间点。
热恢复
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.选择需要备份的MySQL实例。
4.在菜单中选择【热恢复】-【解析】。
5.选择日期时间段,选好日期时间段后点击【选择时间】选择时间点,如果不选择则默认当前时间点。
6.选好时间点后点击【确定】确认。
7.点击【解析】开始解析。
8.解析好的文件可以【下载】查看或【删除】。
9.在菜单中选择【热恢复】-【恢复】。
10.在下拉框中选择需要恢复的解析文件,点【恢复】,备份文件的数据就会进行覆盖恢复。
您可以通过控制台查询实例的错误日志,帮助故障定位分析。
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.选择需要备份的MySQL实例。
4.在菜单中选择【更多】-【日志管理】。
5.在【日志管理】页面选择查询【erro日志】,选择节点,点击【查看】。
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.选择需要备份的MySQL实例。
4.在菜单中选择【更多】-【日志管理】。
5.点击【查看】查询日志。
6.点击【下载】按钮,在弹出框中选择日期,点击【确定】即可将日至下载到本地。
如果您有大量实例,可以通过给实例绑定标签,对实例进行分类管理。
限制说明
最多可以添加19个标签,每个实例也最多能绑定19个标签。
操作步骤
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.选择需要备份的MySQL实例。
4.在菜单中选择【更多】-【编辑标签】。
5.在【添加新标签】前面的框中填入新的标签。
6.点击【添加新标签】。
7.在【候选标签】框中选择需要的标签,会自动进入到【已添加标签】框中。
8.点击【确定】完成标签绑定。
操作步骤
删除单个标签
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.选择需要备份的MySQL实例。
4.在菜单中选择【更多】-【编辑标签】。
5.在【候选标签】框中找到需要删除的标签,点击标签后面的X删除标签。
说明:
已与实例绑定的标签不能被删除。
6.在确认删除提示框中点击【确认】。
批量解绑标签
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.选择需要备份的MySQL实例。
4.在菜单中选择【更多】-【删除标签】。
在提示框中点击【确认】解绑该实例所有标签。
测试站点: | 北京E | |||||
测试客户端系统 | ubuntu-16.04 | |||||
测试客户端配置: | 10C32G | |||||
测试命令样例: | sysbench oltp_read_write.lua --tables=10 --table-size=2000000 --threads=300 --time=300 --max-requests=0 --report-interval=10 run | |||||
高性能型MySQL集群版(测试时长20min,工具:sysbench-1.0.17) | ||||||
规格 | 测试类型 | thread数 | QPS | TPS | 连接数 | iops |
2C4G | read_only | 64 | 13289.27 | 893.08 | 800 | 3000 |
write_only | 64 | 12664.63 | 2277.44 | |||
read_write | 64 | 11211.36 | 520.27 | |||
4C8G | read_only | 64 | 23433.15 | 1464.57 | 1600 | |
write_only | 64 | 13143.68 | 2257.28 | |||
read_write | 64 | 12529.98 | 721.35 | |||
8C16G | read_only | 128 | 33943.49 | 2121.47 | 3200 | |
write_only | 128 | 11508.02 | 1918.01 | |||
read_write | 300 | 27933.44 | 1654.34 | |||
8C32G | read_only | 300 | 39387.34 | 2673.32 | 6400 | |
write_only | 300 | 17837.32 | 2784.33 | |||
read_write | 300 | 21898.32 | 2543.44 |
测试站点: | 北京E | |||||
测试客户端系统 | ubuntu-16.04 | |||||
测试客户端配置: | 10C32G | |||||
测试命令样例: | sysbench oltp_read_write.lua --tables=10 --table-size=2000000 --threads=300 --time=300 --max-requests=0 --report-interval=10 run | |||||
高I/O型MySQL集群版(测试时长20min,工具:sysbench-1.0.17) | ||||||
规格 | 测试类型 | thread数 | QPS | TPS | 连接数 | iops |
2C4G | read_only | 64 | 12063.42 | 753.96 | 800 | 5000 |
write_only | 64 | 9376.04 | 1562.67 | |||
read_write | 64 | 11579.42 | 578.97 | |||
4C8G | read_only | 64 | 25456.34 | 1543.34 | 1600 | |
write_only | 64 | 18928.34 | 1789.34 | |||
read_write | 64 | 19789.09 | 1003.45 | |||
8C16G | read_only | 128 | 29098.34 | 1878.45 | 3200 | |
write_only | 128 | 13090.34 | 2109.45 | |||
read_write | 300 | 20989.12 | 1098.32 | |||
8C32G | read_only | 300 | 31811.37 | 1988.21 | 6400 | |
write_only | 300 | 17893.23 | 2789.45 | |||
read_write | 300 | 25090.96 | 1385.45 |
测试站点: | 北京E | |||||
测试客户端系统: | ubuntu-16.04 | |||||
测试客户端配置: | 10C32G | |||||
测试命令样例: | sysbench oltp_read_write.lua --tables=10 --table-size=2000000 --threads=300 --time=300 --max-requests=0 --report-interval=10 run | |||||
高性能型MySQL主从版(测试时长20min,工具:sysbench-1.0.17) | ||||||
规格 | 测试类型 | thread数 | QPS | TPS | 连接数 | iops |
2C4G | read_only | 64 | 10898.28 | 681.14 | 800 | 3000 |
write_only | 64 | 10781.06 | 1796.8 | |||
read_write | 64 | 10198.33 | 598.98 | |||
4C8G | read_only | 64 | 23898.15 | 1498.34 | 1600 | |
write_only | 64 | 14545.45 | 2358.34 | |||
read_write | 64 | 12598.34 | 634.34 | |||
8C16G | read_only | 128 | 39874.34 | 2654.56 | 3200 | |
write_only | 128 | 13092.32 | 2345.44 | |||
read_write | 300 | 28234.34 | 1544.33 | |||
8C32G | read_only | 300 | 38987.34 | 2509.89 | 6400 | |
write_only | 300 | 16565.44 | 2676.73 | |||
read_write | 300 | 20989.96 | 2454.56 |
测试站点: | 北京E | |||||
测试客户端系统 | ubuntu-16.04 | |||||
测试客户端配置: | 10C32G | |||||
测试命令样例: | sysbench oltp_read_write.lua --tables=10 --table-size=2000000 --threads=300 --time=300 --max-requests=0 --report-interval=10 run | |||||
高I/O型MySQL主从版(测试时长20min,工具:sysbench-1.0.17) | ||||||
规格 | 测试类型 | thread数 | QPS | TPS | 连接数 | iops |
2C4G | read_only | 64 | 9893.43 | 656.56 | 800 | 5000 |
write_only | 64 | 10098.32 | 1545.67 | |||
read_write | 64 | 7898.45 | 545.65 | |||
4C8G | read_only | 64 | 13075.6 | 817.22 | 1600 | |
write_only | 64 | 8818.14 | 1469.14 | |||
read_write | 64 | 9768.33 | 455.45 | |||
8C16G | read_only | 128 | 30080.33 | 1819.33 | 3200 | |
write_only | 128 | 33341.93 | 5557.76 | |||
read_write | 300 | 32992.18 | 1653.96 | |||
8C32G | read_only | 300 | 22840.33 | 1428.33 | 6400 | |
write_only | 300 | 24001.33 | 4003.29 | |||
read_write | 300 | 29979.09 | 1512.33 |
除了您正常的数据外,还有数据库实例正常运行所需要的空间,比如系统数据库、数据库回滚日志、重做日志、索引等。同时RDS for MySQL数据库实例产生的一天内的Binlog日志也会占用这个空间。这些文件会保证RDS实例正常稳定运行。
不会,因为每个RDS实例与其他用户的RDS实例是独立的,并且有资源隔离,互不影响。
1、数据空间:数据所占用的空间; 比如每建一张空表就会占用1M空间,随着数据的插入,空间会一直增长。
2、系统文件空间:包括共享表空间,错误日志文件等; RDS 默认推荐使用INNODB引擎,在安装初始化的时候,会生成一个共享表空间生成;用来存放数据库的REDO LOG和UNDO LOG,以及数据字典,是系统必需的。
1、地域不同:
云主机实例和RDS实例位于不同的地域时,无法直接通过内网互通。
解决办法一:将原实例申请退款,重新购买。
解决办法二:通过外网互通。这种方式的性能、安全性、稳定性较差。
2、IP白名单设置有误:
3、连接数已满:
连接数满通常是由于空闲连接过多或活动连接过多,具体原因及解决办法请参见RDS for MySQL 连接数满情况的处理。
无法连接RDS实例的常见报错和解决办法
错误信息 | 原因 | 解决办法 |
|
网络互通问题 | 点此查看 |
|
白名单设置问题 | 点此查看 |
|
用户名或密码错误 | 点此查看 |
RDS for MySQL 连接数满情况的处理
连接数满会导致客户端无法连接到RDS for MySQL数据库。
连接数满通常是两种原因导致的:
空闲连接过多
原因:
解决方法:
ERROR 2003 (HY000): Can’t connect to MySQL server on ‘XXX’(10038或10060或110)
连接RDS for MySQL或MariaDB TX实例时,提示以下其中一种错误信息:
云主机通过内网无法访问RDS的解决办法:
云主机以外的设备无法访问RDS的解决办法:
云主机以外的设备访问RDS时,只能通过外网连接。如果连接失败,解决办法如下:
ERROR 1045 (HY000): #28000ip not in whitelist或ERROR 2801 (HY000): #RDS00ip not in whitelist
问题描述:
连接RDS实例时,提示以下其中一种错误信息:
原因和解决办法
解决办法请参见定位本地IP。
ERROR 1045 (28000): Access denied for user ‘XXX’@’XXX’
问题描述:
连接RDS for MySQL实例时,提示以下错误信息:
ERROR 1045 (28000): Access denied for user ‘XXX’@’XXX’ (using password: YES)
原因和解决办法:
一般都是因为用户名或密码错误,请检查连接信息中的用户名和密码。
类似的错误信息:
连接RDS for MySQL实例时,提示以下错误信息:
ERROR 1045 (28000): Access denied for user ‘XXX’@’XXX’ (using password: NO)
原因:连接信息中没有填写密码。
目前不支持在云主机上搭建从库。
原因如下:
CPU使用率高请参考RDS for MySQL CPU使用率高的原因和解决方法。
内存使用率高请参考MySQL 实际内存分配情况介绍。
IOPS使用率高请参考MySQL IOPS 使用率高的原因和解决方法。
RDS for MySQL CPU使用率高的原因和解决方法
RDS for MySQL使用过程中,会遇到CPU使用率过高甚至达到100%的情况。本文将介绍造成该状况的常见原因以及解决方法,并通过CPU使用率为100%的典型场景,来分析引起该状况的原因及其相应的解决方案。
常见原因:
系统执行应用提交查询(包括数据修改操作)时需要大量的逻辑读(逻辑IO,执行查询所需访问的表的数据行数),所以系统需要消耗大量的CPU资源以维护从存储系统读取到内存中的数据一致性。
说明:大量行锁冲突,行锁等待或后台任务也有可能会导致实例的CPU使用率过高,但这些情况出现的概率低,本文不做讨论。
下文通过一个简化对的模型来说明系统资源、语句执行成本以及QPS(Query Per Second每秒执行的查询数)之间的关系:
条件:应用模型恒定(应用没有修改)。
avg_lgc_io:执行每条查询需要的平均逻辑 IO。
total_lgc_io:实例的 CPU 资源在单位时间内能够处理的逻辑 IO 总量。
关系公式:total_lgc_io = avg_lgc_io x QPS -- 单位时间 CPU 资源 = 查询执行的平均成本 x 单位时间执行的查询数量。
避免出现CPU使用率达到100%的一般原则:
典型示例:
以CPU使用率为100%的典型场景为例,下文介绍了两个引起该状况的原因及其解决方案,即应用负载(QPS)高和查询执行成本(查询访问表数据行数avg_lgc_io)高。其中,由于查询执行成本高(查询访问表数据行数多)而导致实例CPU使用率高是MySQL非常常见的问题。
1、应用负载(QPS)高
现象描述:
解决方案:
2、查询执行成本(查询访问表数据行数avg_lgc_io)高
现象描述:
解决方案:
解决该状况的原则是:定位效率低的查询、优化查询的执行效率、降低查询执行的成本。
操作步骤:
a)通过如下方式定位效率低的查询:
通过show processlist; 或 show full processlist; 命令查看当前执行的查询,如下图所示。
对于查询时间长、运行状态(state列)是sending data、copying to tmp table、copying to tmp table on disk、sorting result、using filesort等都可能是有性能问题的查询(SQL)。
注意:
MySQL 实际内存分配情况介绍
RDS的内存是重要的性能参数,常常出现由于异常的 SQL 请求以及待优化的数据库导致内存利用率升高的情况,严重时还会出现由于 OOM 导致实例发生 HA 切换的情况。
MySQL 的内存大体可以分为共享内存和 session 私有内存两部分,下面将详细介绍各部分的构成。
1、共享内存
执行如下命令,即可查询示例的共享内存分配情况:
show variables where variable_name in ( 'innodb_buffer_pool_size','innodb_log_buffer_size','innodb_additional_mem_pool_size','key_buffer_size'
,'query_cache_size' );
如下是内存规格为 240 M 的 RDS 实例的共享内存分配情况的查询结果:
参数说明:
2、Session 私有内存
共享内存中介绍的内存空间是实例创建时即分配的内存空间,并且是所有连接共享的。而出现 OOM 异常的实例都是由于下面各个连接私有的内存造成的。
执行如下命令,查询示例的 session 私有内存分配情况:
show variables where variable_name in ( 'read_buffer_size','read_rnd_buffer_size','sort_buffer_size','join_buffer_size','binlog_cache_size','tmp_table_size' );
查询结果如下(如下为测试实例配置):
参数说明:
MySQL IOPS 使用率高的原因和解决方法
MySQL实例在日常使用中会出现实例 IOPS 使用率高的情况,本文将介绍造成该状况的主要原因和解决方法。
原因:
解决方法:
您可以通过终止问题查询来解决IOPS使用率高的问题。
终止问题查询
您可以通过命令查询和终止问题查询,建议您将物理读(Physical_sync_read 和 Physical_async_read)高的查询终止掉。
注意:
操作步骤:
1.通过 MySQL 命令行工具连接实例。
2.通过如下方式,查看会话情况,来确定问题会话。
通过执行 show processlist; 命令查询,结果如下图所示。
若当前执行会话比较多,通过执行 show full processlist; 命令来查询,结果如下图所示。
3.执行 kill <Id> 命令,终止相关会话。
参数说明:Id 是上述步骤查询结果中的 Id 列值。
RDS for MySQL管理长时间执行的查询
出现原因:
在使用RDS for MySQL的过程中,由于某些原因,例如被SQL注入、SQL执行效率较差、DDL语句引起表元数据锁等待等等,会出现运行时间很长的查询。
长时间执行的查询带来的问题:
通常来说,除非是BI/报表类查询,否则长时间执行的查询对于应用缺乏意义,而且会消耗系统资源,比如大量长时间查询可能会引起CPU、IOPS和连接数过高等问题,导致系统不稳定。
如何避免长时间执行的查询
应用方面应注意增加防止SQL注入的保护措施。
在新功能模块上线前,进行压力测试,避免执行效率很差的SQL大量执行。
尽量在业务低峰期进行索引创建删除、表结构修改、表维护和表删除操作。
RDS for MySQL如何终止会话
1.通过MySQL命令行工具连接实例。
提示:RDS实例在连接数已满的情况下,是无法通过MySQL命令行工具连接实例的。如果无法通过DMS或MySQL命令行工具连接,建议先在控制台的参数设置中将wait_timeout参数(单位秒)设置为比较小的值(比如60),让RDS实例主动关闭空闲时间超过60秒的连接,以便稍后可以通过MySQL命令行工具连接访问实例。
2.通过如下命令查看当前会话情况,记录想要结束的会话id。
show processlist;
系统显示类似如下:
3.执行如下命令,结束会话。
Kill [$ID];
注:[$ID]为上一步记录的id。
系统显示类似如下:
RDS for MySQL查询缓存(Query Cache)的设置和使用
1.功能和适用范围
功能:
使用范围:
说明:查询缓存并不一定带来性能上的提升,在某些情况下(比如查询数量大,但重复的查询很少)开启查询缓存会带来性能的下降。
2.原理
RDS for MySQL对来自客户端的查询(Select)进行Hash计算得到该查询的Hash值,通过该Hash值到查询缓存中匹配该查询的结果。
如果匹配(命中),则将查询的结果集直接返回给客户端,不必再解析、执行查询。
如果没有匹配(命中),则将Hash值和结果集保存在查询缓存中,以便以后使用。
查询涉及的任何一个表中数据发生变化,RDS for MySQL将查询缓存中所有与该表相关的查询结果集全部释放(删除)。
3.限制
4.设置
参数设置
控制台参数设置如下。
query_cache_type:是否开启查询缓存功能。
取值为 0 :关闭查询功能。
取值为 1 :开启查询缓存功能,但不缓存Select SQL_NO_CACHE开头的查询。
取值为 2 :开启查询缓存功能,但仅缓存Select SQL_CACHE开头的查询。
说明:修改query_cache_type需要重启实例(修改后实例会自动重启)。
5.验证效果
RDS for MySQL物理备份文件恢复到自建数据库
开源软件Percona Xtrabackup可以用于对数据库进行备份恢复,您可以使用该软件将云数据库MySQL的备份文件恢复到自建数据库中,本文将介绍详细的操作步骤。
注意事项
本文使用Linux7的操作系统以及MySQL5.7版本为例进行演示。
操作系统中已安装数据恢复工具Percona XtraBackup,您可以从Percona XtraBackup官网下载安装。
MySQL 5.6及之前的版本需要安装 Percona XtraBackup 2.3,安装指导请参见官方文档Percona XtraBackup 2.3。
MySQL 5.7版本需要安装 Percona XtraBackup 2.4,安装指导请参见官方文档Percona XtraBackup 2.4。
本地MySQL数据库安装在64位的Linux系统中,且与云数据库MySQL版的版本相同。
说明:由于软件限制,目前只支持将云数据库MySQL的备份文件恢复到安装在linux系统中的自建MySQL数据库中。
操作步骤:
1.下载数据备份。
2.执行如下命令,解压已下载的数据备份文件。
说明:本文以自定义路径/home/mysql/data为例,您可以根据实际情况将其替换成实际路径。
目前物理备份集文件格式为:
tar 压缩包 (.tar.gz 后缀)
对于tar 压缩包 (.tar.gz 后缀),使用命令:
tar -izxvf <数据备份文件名>.tar.gz -C /home/mysql/data
说明:-C:指定文件要解压到的目录。可选参数,若不指定就解压到当前目录。
3.执行如下命令,查询解压后生成的文件。
ls -l /home/mysql/data
命令执行成功后,系统会返回如下结果,其中蓝色字体为生成备份文件时RDS实例所包含的数据库。
4.执行如下命令,恢复解压好的备份文件。
Innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data
若系统返回如下类似结果,则说明备份文件已成功恢复到本地数据库。
说明:请确保您的Percona XtraBackup版本正确。
5.为避免版本问题,需修改backup-my.cnf参数,具体操作步骤如下。
a)执行如下命令,以文本方式编辑backup-my.cnf文件。
vi /home/mysql/data/backup-my.cnf
b)自建数据库不支持如下参数,需要注释掉。
#innodb_log_checksum_algorithm
#innodb_fast_checksum
#innodb_log_block_size
#innodb_doublewrite_file
#rds_encrypt_data
#innodb_encrypt_algorithm
#redo_log_version
#master_key_id
c)按Esc键,然后输入:wq并回车进行保存。
6.执行如下命令,修改文件属主,并确定文件所属为MySQL用户。
chown -R mysql:mysql /home/mysql/data
7.执行如下命令,启动MySQL进程。
mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data &
说明:
8.执行如下命令,登录MySQL数据库以验证进程启动成功。
mysql -uroot -p<数据库密码>
若系统返回如下结果,进程启动成功,则说明已成功执行参数注释和修改文件属主。
RDS for MySQL各timeout参数的设置
RDS for MySQL提供了很多的timeout参数供用户设置,本文详细介绍下这些timeout参数的含义。
参数名 | 说明 |
connect_timeout | 该参数控制与服务器建立连接的时候等待三次握手成功的超时时间,该参数主要是对于网络质量较差导致连接超时,建议外网访问波动较大可以提高该参数。 |
delayed_insert_timeout | 指INSERT语句执行的超时时间。 |
innodb_lock_wait_timeout | 指锁等待的超时时间,该锁不同于死锁是指正常一个事务等待另外一个事务的S锁或者X锁的超时时间。 |
innodb_rollback_on_timeout | 当事务超时超过该参数后即会回滚,如果设置为OFF即只回滚事务的最后一个请求。 |
interactive_timeout | mysql在关闭一个交互式/非交互式的连接之前所要等待的时间。建议不需要设置太长的时候,否则会占用实例的连接数资源。 |
net_read_timeout net_write_timeout |
指服务器端等待客户端发送的网络包和发送给客户端网络包的超时时间,这两个参数是对TCP/IP链接并且是Activity状态下的线程才有效的参数。 |
max_connections参数的设置
max_connections 修改后,规格升级也会升级参数值,并覆盖原有参数值,不建议客户自己修改这个值。