关系型云数据库服务(RDS)MySQL版让您可以快速在云端使用、操作MySQL数据库。在管理数据库任务的同时,可以根据业务情况调整和设置数据库,从而满足您不同业务发展需求,并且提供监控、运维工具等数据库运维全套解决方案,而且具有高性价比,您无需预先采购硬件资源。省心的关系型云数据库MySQL服务让您能更加专注于业务的发展。
高可用版采用一主 N 从的高可用模式,实时热备,提供宕机自动检测和故障自动转移。覆盖游戏、互联网、金融、物联网、零售电商、物流、保险、证券等行业应用。
链路是VDC用于访问数据库的方式,在您创建实例的时候,需要选择链路类型。现在提供的链路类型有两种,默认链路和连接器链路。
默认链路使用的是租户内网带宽,提供高可用,但是每个服务实例都将占用内网IP。使用默认链路避免了连接器中复杂的传输路径,能降低网络延迟,对于延时敏感型业务,建议选择默认链路。
拓扑图
连接器链路提供高可用,支持横向扩展的负载。一个连接器下可以连接多个实例,除连接器自身占用的IP外,该连接器下的服务实例将不需要再占用IP,因此帮助客户节约了内网IP地址,但是由于连接器自身的架构特性,会增加延迟。
提示:从2021-03-19号起不再提供连接器链路
拓扑图
1.登陆控制台。
2.左侧选择数据库服务。
3.在页面右上角选择【创建数据库服务】。
4.选择数据库服务MySQL【开通服务】。
5.设置以下参数。
虚拟数据中心 |
实例所在的可用区和资源组。购买后无法更换地域。 请根据目标用户所在的地理位置就近选择地域,提升用户访问速度。 请确保RDS实例与需要连接的云主机实例创建于同一个地域,否则它们无法通过内网互通,只能通过外网互通,无法发挥其性能。 |
计费方式 | 实例的计费方式为按需计费。 |
数据库类型 | 实例的数据库类型为MySQL。 |
引擎版本 | 指MySQL的版本,支持MySQL 5.6和MySQL 5.7。 |
架构类型 |
MySQ5.6.25实例的架构类型为集群版; MySQ5.7.24实例的架构类型为主从版。 |
链路类型 |
指实例的网络类型,分为默认链路和连接器链路. 默认链路:用户需要自己选择需要的内网网段,系统会自动分配此网段未占用的IP地址给数据库实例使用。 连接器链路:连接器提供高可用链路,防范单点故障,保障业务不受影响。没有连接器时需要创建连接器。目前连接器不收费。 |
计算类型 | 实例的计算类型有高性能型和高I/0型。 |
实例规格 |
每种规格对应不同的CPU核数、内存、最大连接数。有以下选择: 集群版: 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块硬盘。性能型硬盘默认3000IOPS,超高性能型默认5000IOPS,支持扩展到最高10000IOPS。 预置性能包: 购买超高性能型存储支持添加预置性能包,预置性能包每份可扩展100IOPS及3.2MBps吞吐量,可根据业务需要自行添加,最高支持添加50份预置性能包。 |
实例名称 |
支持设置实例名称,可选择创建后设置或立即命名。 如果选择创建后设置将生成一个默认名称。 |
6.检查当前配置,确认配置和费用。
7.阅读并勾选同意《云关系型数据库服务等级协议》。
8.点击【创建】完成实例创建。
为保障云数据库MySQL实例的稳定性,系统会不定期对实例进行维护操作。默认可维护时间段为03:00~04:00,您可以根据业务规律,将可维护时间段设置在业务低峰期,以免维护过程中可能对业务造成的影响。
操作步骤
1. 登陆控制台。
2. 在左侧菜单中选择【数据库服务】。
3. 找到目标MySQL实例,点击实例ID。
4. 在【基本信息】页面找到【维护信息】,单击【修改】。
5. 在弹出的对话框中,选择您所需的“维护周期”和“维护时间”
6. 设置好维护时间的任务之后,可以点击【查看维护时间任务】进行任务查看和修改。
变配方式
变配后,新的配置立即生效。
变更项
本文将介绍如何变更实例的规格、存储空间
说明:
注意事项
在变更配置生效期间,RDS服务可能会出现一次约30秒的闪断,而且与数据库、账号、网络等相关的大部分操作都无法执行,请尽量在业务低峰期执行变配操作,并确保您的应用有自动重连机制。
操作步骤
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.找到目标MySQL实例,点击实例ID
4.在【基本信息】页面找到【规格配置】。
5.点击【修改】或【添加】进行规格修改。
6.然后选择需要的计算规格或需要添加的存储大小。
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.选择时间范围并单击【查询】。
本文将介绍如何通过控制台修改实例的字符集。
注意事项
操作步骤
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.找到目标MySQL实例,点击实例ID。
4.4.在【基本信息】处找到字符集。
5.点击【修改】,选择需要的字符集,单击确定即可。
云数据库 MySQL 支持用户创建1个或至多3个只读实例,以支持用户的读写分离和一主多从应用场景,可显著提高用户数据库的读负载能力。 目前暂不支持统一读写分离地址,即自动分离读请求与写请求。只读实例需要通过单独的 IP、PORT 来访问。
注意事项
创建只读实例
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.找到目标MySQL实例,点击实例ID。
4.在【基本信息】页中,单击实例架构图中的【添加只读实例】,进入只读实例管理页。
5.在【只读实例】功能页中,单击【新建只读实例】,创建只读实例。
进入购买页,选择只读实例的相应配置,确认无误后单击【立即购买】购买只读实例。
本文介绍如何为云数据库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命令。
数据备份用于数据损坏或丢失,您可以设置备份策略自动备份或手动备份,备份的方式都为物理备份。
物理备份
物理备份,物理数据全拷贝(自动备份与手动备份均支持)。
注意事项
自动备份
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.选择需要备份的MySQL实例。
4.在菜单中选择【备份恢复】。
5.5.在【备份恢复】页面中选择【自动备份设置】。
6.在备份设置页面设置自动备份策略,参数说明如下:
7.自动备份可以关闭,也可以编辑频率。
手动备份
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.选择需要备份的MySQL实例。
4.在菜单中选择【备份恢复】。
5.在【备份恢复】页面中选择【备份实例】。
6.在【备份设置】页面设置好备份方式和数据保留时长,点击确认即可。参数说明:
说明:备份文件保留天数跟随自动备份设置的保留天数。
当你已经拥有MySQL备份文件,可以通过备份恢复的方式来实现数据回档,回档是基于数据备份 + 日志备份(binlog),可进行实时数据回档
可以通过以下方式将备份恢复到mysql实例:
注意事项
物理备份恢复
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.选择需要备份的MySQL实例。
4.在菜单中选择【备份恢复】。
5.在【备份恢复】页面中选择【数据恢复】。
6.设置回档时间后,点【确认】。
7.提交成功后,返回实例列表页,单击实例名称后面的【临】可以看到临时实例的创建进度。
8.临时实例创建完成后,你可以进行以下操作
“转正”:将临时实例转为独立于原实例的正式实例,供业务使用。
“删除”:删除该临时实例。
说明:
每个实例至多回档到3个临时实例。
每个临时实例最多保留48小时,过期不处理将会被删除。
为方便用户查看和掌握实例的运行信息,云数据库 MySQL 主从版提供了丰富的性能监控项。用户可登录控制台,进入实例管理页的【监控功能】查看。
注意事项
单个实例的表数量超过100万后,可能会影响数据库监控,请合理规范表的数量,控制单个实例表数量不超过100万。
支持的实例类型:MySQL主从版、只读实例
说明:目前云数据库MySQL最长支持查看30天前的监控数据。
监控分类
云数据库 MySQL 包括资源监控、引擎监控(普通)、引擎监控(扩展)、部署监控4种监控类型,通过查看不同监控类型的指标,可快速、准确的了解实例性能及运行状况。
资源监控:提供 CPU、内存、磁盘及网络相关的监控数据。
引擎监控(普通):提供连接数、锁信息、热点表、慢查询等相关的监控数据,方便您诊断故障及性能优化。
引擎监控(扩展):提供更为丰富引擎相关的监控指标,协助您发现数据库存在或潜在的健康问题。
部署监控:提供主从延迟相关的监控指标。部署监控分为主机和备机:
部署监控为主机:仅当监控实例为只读实例时,其对应复制相关的监控数据才有效,且 IO、SQL 线程才是启动的状态。
部署监控为备机:高可用版的主实例默认为一主一从架构,因此,仅当监控实例为主实例时,其备机下复制相关的监控数据才有效。用于反映主实例与其隐藏从节点的延迟距离及时间,建议关注备机下相关的监控数据,若主实例存在故障时,其监控实例对应隐藏的从节点可快速提升为主实例。
监控粒度
实行自适应策略,不支持自定义选择
时间跨度 |
监控粒度 |
自适应说明 |
保留时长 |
(0h, 4h] |
30 s |
时间跨度在4小时内,监控粒度为30秒 |
90天 |
(4h, 2d] |
1min |
时间跨度超过4小时,但在2天内,监控粒度调整为1分钟 |
90天 |
(2d, 10d] |
5min |
时间跨度超过2天,但在10天内,监控粒度调整为5分钟 |
90天 |
(10d, 30d] |
1h |
时间跨度超过10天,但在30天内,监控粒度调整为1小时 |
90天 |
监控指标
指标中文名 |
指标英文名 |
单位 |
指标说明 |
每秒执行操作数
|
qps |
次/秒 |
数据库每秒执行的 SQL 数(含 insert、select、update、delete、replace),QPS 指标主要体现云数据库MySQL实例的实际处理能力 |
每秒提交事务数
|
tps |
次/秒 |
每秒提交的事务数量, 覆盖commit和rollback语句 |
慢查询数
|
slow_queries |
次 |
查询时间超过 long_query_time 秒的查询的个数 |
全表扫描数
|
select_scan |
次/秒 |
执行全表搜索查询的数量 |
查询数
|
select_count |
次/秒 |
每秒查询数 |
更新数
|
com_update |
次/秒 |
每秒更新数 |
删除数
|
com_delete |
次/秒 |
每秒删除数 |
插入数
|
com_insert |
次/秒 |
每秒插入数 |
覆盖数
|
com_replace |
次/秒 |
每秒覆盖数 |
总请求数
|
queries |
次/秒 |
所有执行的 SQL 语句,包括 set,show 等 |
当前打开连接数
|
threads_connected |
个 |
当前打开的连接的数量 |
连接数利用率
|
connection_use_rate |
% |
当前打开连接数/最大连接数 |
查询使用率
|
query_rate |
% |
每秒执行操作数 QPS/推荐每秒操作数 |
发送数据量
|
bytes_sent |
MB/秒 |
每秒发送的字节数 |
接收数据量
|
bytes_received |
MB/秒 |
每秒接受的字节数 |
磁盘利用率
|
volume_rate |
% |
磁盘使用空间/实例购买空间 |
查询缓存命中率
|
qcache_hit_rate |
% |
查询缓存命中率 |
等待表锁次数
|
table_locks_waited |
次/秒 |
不能立即获得的表的锁的次数 |
临时表数量
|
created_tmp_tables |
次/秒 |
创建临时表的数量 |
innodb 缓存命中率
|
innodb_cache_hit_rate |
% |
Innodb 引擎的缓存命中率 |
innodb 缓存使用率
|
innodb_cache_use_rate |
% |
Innodb 引擎的缓存使用率 |
innodb 读磁盘数量
|
innodb_os_file_reads |
次/秒 |
Innodb 引擎每秒读磁盘文件的次数 |
innodb 写磁盘数量
|
innodb_os_file_writes |
次/秒 |
Innodb 引擎每秒写磁盘文件的次数 |
innodb fsync 数量
|
innodb_os_fsyncs |
次/秒 |
Innodb 引擎每秒调用 fsync 函数次数 |
当前 Innodb 打开表的数量
|
innodb_num_open_files |
个 |
Innodb 引擎当前打开表的数量 |
发送数据量
|
bytes_sent |
字节/秒 |
每秒发送的字节数 |
接收数据量
|
bytes_received |
字节/秒 |
每秒接收的字节数 |
CPU 利用率
|
cpu_use_rate |
% |
允许闲时超用,CPU 利用率可能大于100% |
内存利用率
|
memory use rate |
% |
允许闲时超用,内存利用率可能大于100% |
内存占用
|
memory_use |
MB |
允许闲时超用,实际内存占用可能大于购买规格 |
磁盘读延迟
|
disk_read_delay |
% |
磁盘读延迟率 |
磁盘写延迟
|
disk_write_delay |
% |
磁盘写延迟率 |
磁盘读IOPS
|
disk_read_io |
B/s |
磁盘读IOPS |
磁盘写IOPS
|
disk_read_io_speed |
B/s |
磁盘写IOPS |
磁盘读 IO数据量速率
|
disk_read_io_speed |
MB/s |
磁盘读 I/O数据量速率 |
磁盘写 I/O数据量速率
|
disk_write_io_speed |
MB/s |
磁盘写 I/O数据量速率 |
临时文件数量
|
created_tmp_files |
次/秒 |
每秒创建临时文件的次数 |
已经打开的表数
|
opened_tables |
个 |
实例维度 |
提交数
|
com_commit |
次/秒 |
每秒提交次数 |
回滚数
|
com_rollback |
次/秒 |
每秒回滚次数 |
已创建的线程数
|
threads_created |
个 |
创建用来处理连接的线程数 |
运行的线程数
|
threads_running |
个 |
激活的(非睡眠状态)线程数 |
最大连接数
|
max_connections |
个 |
最大连接数 |
磁盘临时表数量
|
created_tmp_disk_tables |
次/秒 |
每秒创建磁盘临时表的次数 |
读下一行请求数
|
handler_read_rnd_next |
次/秒 |
每秒读取下一行的请求次数 |
内部回滚数
|
handler_rollback |
次/秒 |
每秒事务被回滚的次数 |
内部提交数
|
handler_commit |
次/秒 |
每秒事务提交的次数 |
InnoDB 总页数
|
innodb_buffer_pool_pages_total |
个 |
Innodb 引擎占用内存总页数 |
InnoDB 逻辑读
|
innodb_buffer_pool_read_requests |
次/秒 |
Innodb 引擎每秒已经完成的逻辑读请求次数 |
InnoDB 物理读
|
innodb_buffer_pool_reads |
次/秒 |
Innodb 引擎每秒已经完成的物理读请求次数 |
InnoDB 读取量
|
innodb_data_read |
Byte/秒 |
Innodb 引擎每秒已经完成读取数据的字节数 |
InnoDB 总读取量
|
innodb_data_reads |
次/秒 |
Innodb 引擎每秒已经完成读取数据的次数 |
InnoDB 总写入量
|
innodb_data_writes |
次/秒 |
Innodb 引擎每秒已经完成写数据的次数 |
InnoDB 写入量
|
innodb_data_written |
Byte/秒 |
Innodb 引擎每秒已经完成写数据的字节数 |
InnoDB 行删除量
|
innodb_rows_deleted |
次/秒 |
Innodb 引擎每秒删除的行数 |
InnoDB 行插入量
|
innodb_rows_inserted |
次/秒 |
Innodb 引擎每秒插入的行数 |
InnoDB 行更新量
|
innodb_rows_updated |
次/秒 |
Innodb 引擎每秒更新的行数 |
InnoDB 行读取量
|
innodb_rows_read |
次/秒 |
Innodb 引擎每秒读取的行数 |
InnoDB 平均获取行锁时间
|
innodb_row_lock_time_avg |
毫秒 |
Innodb 引擎行锁定的平均时长 |
InnoDB 等待行锁次数
|
innodb_row_lock_waits |
次/秒 |
Innodb 引擎每秒等待行锁定的次数 |
等待表锁次数
|
table_locks_waited |
次/秒 |
不能立即获得的表的锁的次数。如果该值较高,并且有性能问题,你应首先优化查询,然后拆分表或使用复制。 |
键缓存内未使用的块数量
|
key_blocks_unused |
个 |
myisam 引擎未使用键缓存块的个数 |
键缓存内使用的块数量
|
key_blocks_used |
个 |
myisam 引擎已使用键缓存块的个数 |
键缓存读取数据块次数
|
key_read_requests |
次/秒 |
myisam 引擎每秒读取键缓存块的次数 |
硬盘读取数据块次数
|
key_reads |
次/秒 |
myisam 引擎每秒读取硬盘数据块的次数 |
数据块写入键缓冲次数
|
key_write_requests |
次/秒 |
myisam 引擎每秒写键缓存块的次数 |
数据块写入磁盘次数
|
key_writes |
次/秒 |
myisam 引擎每秒写硬盘数据块的次数 |
主从延迟距离
|
master_slave_sync_distance |
MB |
主从 binlog 差距 |
主从延迟时间
|
seconds_behind_master |
秒 |
主从延迟时间 |
IO 线程状态
|
slave_io_running |
状态值(0-Yes,1-No,2-Connecting) |
IO 线程运行状态 |
SQL 线程状态
|
slave_sql_running |
状态值(0-Yes,1-No) |
SQL 线程运行状态 |
操作步骤
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.找到目标MySQL实例,点击实例ID。
4.在顶部导航栏中选择【更多】-【监控功能】。
5.可以在【监控指标】下拉菜单中选择监控指标。
说明:
功能区:区域缩放按钮,区域还原按钮,还原按钮,保存下载按钮。(功能区按钮的使用可以点击【使用说明】查看)
您可以创建告警用于在云数据库状态改变时触发警报并发送相关消息。创建的告警会根据每隔一段时间监控的指标相对于给定阈值的情况判断是否需要触发相关通知。
状态改变触发告警后,您可以及时进行相应的预防或补救措施。因此,合理地创建告警能帮助您提高应用程序的健壮性和可靠性。
当用户需要针对云数据库产品的某个状态发送告警时,需要先创建告警规则。告警规则包括名称、关联资源、告警触发条件和通知方式三个必要组成部分。每个告警规则是一系列告警触发条件的集合,告警触发条件是“或”关系,即一个条件满足,就会发送告警。告警将发送至告警规则关联的所有人,用户接收到告警后可以及时查看并采取相应措施。
注意:
在设置报警规则前请先设置报警接收联系人。
创建报警规则
1.登陆控制台。
2.在左侧菜单中选择【弹性计算】-【计算监控中心】。
3.在左侧栏中选择【报警规则】。
4.在报警规则页中,点击右上角的【创建报警规则】。
5.在创建报警规则页面中,设置关联资源、触发条件、通知方式等。
产品类型
I)分为云数据库MySQL-主机监控和云数据库MySQL-备机监控,分别适用于不用的实例类型。
II)部署类监控为主机:当监控实例为主实例时,由于其主实例不为任何实例的从实例,因此其主机下复制相关的监控数据无效,此时其 IO、SQL 线程状态为未启动。仅当监控实例为灾备实例和只读实例时,其对应复制相关的监控数据才有效,且 IO、SQL 线程才是启动的状态。
III)部署类监控为备机:高可用版的实例默认为一主一从架构,因此,仅当监控实例为主实例时,其备机下复制相关的监控数据才有效。用于反映主实与其隐藏从节点的延迟距离及时间,建议关注备机下相关的监控数据,若主实例存在故障时,其监控实例对应隐藏的从节点可快速提升为主实例。
IV)可通过选择对象所在的地域或搜索对象的实例名称找到需要关联的对象实例。
说明:
设置告警接收对象:
1.选择需要通知的用户组。
2.设置报警级别。
Critiacl(严重):同时发送短信及邮件。
Warning(警告):发送邮件。
6.确认无误后,单击【确定】即可。
创建云数据库MySQL实例后,您需要设置实例的白名单,以允许外部设备访问该数据库实例。白名单在创建实例时可选择开启,不开启则默认关闭。默认的白名单只包含默认IP地址127.0.0.1,表示任何设备均无法访问该MySQL实例。
白名单可以让云数据库MySQL实例得到高级别的访问安全保护,建议您定期维护白名单。设置白名单不会影响MySQL实例的正常运行。
操作步骤
1.登陆控制台。
2.在左侧菜单中选择【数据库服务】。
3.找到目标MySQL实例,点击实例ID。
4.在基本信息页面找到【白名单】,点击按钮开启。
5.在弹出的对话框中,填写需要访问该实例的IP地址或IP段,然后单击【确定】。
您可以通过控制台查询实例的错误日志,帮助故障定位分析。
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 | 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 的操作系统为例进行演示。
• 操作系统中已安装数据恢复工具 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 8.0 版本需要安装 Percona XtraBackup 8.0,安装指导请参见官方文档 Percona XtraBackup 8.0。
• 本地 MySQL 数据库安装在 64 位的 Linux 系统中,且与云数据库 MySQL 版的版本 相同。
• 在 Linux 服务器上,安装解压工具 qpress。
wget -d --user-agent="Mozilla/5.0 (Windows NT x.y; rv:10.0) Gecko/20100101
Firefox/10.0" http://www.quicklz.com/qpress-11-linux-x64.tar
tar xvf qpress-11-linux-x64.tar
cp qpress /usr/bin
说明:由于软件限制,目前只支持将云数据库MySQL的备份文件恢复到安装在linux系统中的自建MySQL数据库中。
操作步骤:
1.下载数据备份。
2.执行如下命令,解压已下载的数据备份文件。
说明:本文以自定义路径/home/mysql/data 为例,您可以根据实际情况将其替换成实际路 径。
目前物理备份集文件格式为:
MySQL 5.6、5.7 备份文件格式为 tar 压缩包 (.tar.gz 后缀)
MySQL 8.0 备份文件格式为 xb 文件(.xb 后缀)
对于 tar 压缩包 (.tar.gz 后缀),使用命令:
tar -izxvf <数据备份文件名>.tar.gz -C /home/mysql/data
对于 xb 文件(.xb 后缀),使用命令:
cat mysql_data_backup.xb | xbstream -x -v -C /home/mysql/data
xtrabackup --decompress --remove-original --target-dir=/home/mysql/data
说明:-C:指定文件要解压到的目录。可选参数,若不指定就解压到当前目录。
3.执行如下命令,查询解压后生成的文件。
ls -l /home/mysql/data
命令执行成功后,系统会返回如下结果,其中蓝色字体为生成备份文件时 RDS 实例所包含 的数据库。
4.执行如下命令,恢复解压好的备份文件。
MySQL 5.6、5.7:
Innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data
MySQL 8.0:
xtrabackup --prepare --target-dir=/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
#server_uuid
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 修改后,规格升级也会升级参数值,并覆盖原有参数值,不建议客户自己修改这个值。