云数据库MySQL

参数修改问题

如何查看数据库 TencentDB for MySQL 的参数列表?

您可以通过登录腾讯云控制台查看数据库 TencentDB for MySQL 的参数。

如何修改云数据库配置参数?

开发者可通过命令行和 phpMyAdmin 控制台,修改云数据库配置参数:

1. 命令行方式 步骤1:登录腾讯云 管理控制台 ,进入管理中心后,在【云产品】模块单击【云数据库】,进入关系型数据库页面。

1

步骤2:在关系型数据库页面,单击【MySQL】下的【实例列表】,找到目标地域(此例中以广州为例)中待重置密码的 MySQL 数据库实例,单击【管理】按钮,进入 MySQL 数据库管理页面。

2

步骤3:在 MySQL 数据库管理页面,单击管理列表下的参数设置,其中常见的 var_name 包括如下变量:

变量说明
character_set_server服务器默认字符集
connect_timeout连接超时
long_query_time超过该时间的查询为慢查询
max_allowed_packet最大包长度
max_connections最大连接数
sql_mode当前的服务器 SQL 模式
table_open_cache全部线程打开表的个数,增大该值可以增加 mysqld 被请求打开的文件描述符个数
wait_timeout非交互连接超时时间

2. phpMyAdmin 控制台方式 通过 phpMyAdmin 登录云数据库后,单击上面菜单中的【变量】,在下面的变量列表中,单击需要修改的变量对应的【编辑】按钮,对其进行修改后单击【保存】

3

更多请参考 云数据库可以修改的配置

数据库 TencentDB for MySQL 怎么设置中文查询?

数据库 TencentDB 目前不支持中文字符。

如何设置开启 MySQL 的定时器功能?

数据库 TencentDB for MySQL 的参数设置中可以修改参数,实现开启定时器功能。 进入 云数据库控制台,找到需要修改的实例单击【管理】按钮,进入数据库管理页面,接着单击【参数设置】。在控制台参数设置中修改将 event 开启 。

4

MySQL 超时连接设置太短,如何增加时间?

数据库 TencentDB for MySQL 的参数设置中可以增加超时连接时间。 进入 云数据库控制台,找到需要修改的实例单击【管理】按钮,进入数据库管理页面,接着单击【参数设置】。在控制台参数设置中修改 wait_timeout 参数 。

5

数据库 TencentDB for MySQL 怎样调整 group_concat 参数?

数据库 TencentDB for MySQL 的参数设置中可以调整 group_concat 参数。 进入 云数据库控制台,找到需要修改的实例单击【管理】按钮,进入数据库管理页面,接着单击【参数设置】。在控制台参数设置中修改 group_concat 参数 。

6

MySQL 全表扫描的 SQL 语句有什么方法可以找到吗?

默认是不记录全表扫描的语句,可在云数据库控制台参数设置中开启 log_queries_not_using_indexes 参数。注意:不要开太久。

云数据库的默认字符集编码如何修改?

云数据库与 MySQL 数据库一样,默认字符集编码格式是:latin1,即 ISO-8859-1 编码格式,开发者可以在云数据库的管理控制台修改 Server 端的数据库字符集,目前支持 latin1,gbk,utf8,utf8mb4 四种字符集设置。虽然云数据库支持默认字符集编码的设置,但我们还是建议您在创建表时,显式的指定表的编码,并在连接建立时指定连接的编码,这样,您的应用将会有更好的移植性,MySQL 默认字符集说明以及修改方法请参考 云数据库使用限制。可通过 TencentDB 管理控制台修改字符集。

回档相关问题

MySQL 回档时是否会把当前表数据覆盖?

回档操作会产生新的数据库或表至原实例中。回档完后,您可以看到原来的数据库或表,以及新建的数据库或表。回档后的库表名是原库表名_bak。

MySQL 误删了数据如何恢复?

通过回档恢复解决。不过回档仅支持回档到 5 天内的任意时间节点。

可以参考 数据回档 教程 。

MySQL 如何批量回档?

请参考 批量回档

MySQL 执行某个存储过程中误删了部分未备份的数据,能否还原数据?

可以使用控制台的回档功能 。 可以恢复五天之内任意时间点的数据 。

7

MySQL 回档过程中,如何实时查询回档进度?

回档过程中,可实时查询回档的进度。 详细操作请参考 数据回档 文档。

MySQL 回档过程中是否可以实时查询回档日志?

回档过程中,可实时查询回档的进度。 详细请参考 数据回档 文档。

MySQL 如何实例回档?

详细操作可以参考 数据回档 教程 。

备份相关问题

为什么我下载的备份文件用 tar 解包解压失败?

说明:

新版的备份文件由于采用的全新的压缩算法,使用原有 tar 工具无法正常解包解压,需要使用 xbstream 和 qpress 的工具来进行解包解压。

  1. 下载新版的备份文件后,应该先用 xbstream (xbstream 为 Percona 的一种打包/解包工具)将其解包: xbstream -x < test_import_57_backup_20181114115236.xb 用 xbstream 解包后会得到后缀名为 .qb 的文件,如:test_import_57_backup_20181114115236.sql.qb
  2. 解包后还需要使用 qpress 解压备份文件: qpress -d test_import_57_backup_20181114115236.sql.qp 解压后得到完整的备份文件,如:test_import_57_backup_20181114115236.sql

如何下载 xbstream 和 qpress 的工具?

  • xbstream 为 Percona 的 xtrabackup 备份工具下的一个子程序,要使用 xbstream,需要先安装 Percona 的 xtrabackup,可以使用 yum 安装和二进制安装两种方式来安装 xtrabackup。
  • qpress下载地址,下载之后通过 tar 命令解出 qpress 二进制文件。 具体 xtrabackup 和 qpress 的安装方式请参见:使用物理备份恢复数据库

为什么我无法进行分库表的逻辑备份和下载?

此次备份新版升级过程中,不论是逻辑备份还是物理备份功能都采用了新的压缩算法,故部分下载功能暂时无法使用,若您需要逻辑分库表备份,可以使用 API 调用来生成分库表逻辑备份, 待我们备份升级完毕后,在控制台依旧会提供手动逻辑的分库表备份和下载功能。

如何自己手动设置 MySQL 备份?

您可以通过离线迁移到本地来备份 MySQL 数据,请参考 离线迁移数据

MySQL 手动备份的注意事项?

由于 cdb_mydumper 采用多线程导出,所以无法保证导出顺序和使用 mysqldump 一致,可能会给某些依赖时间的特性(routine,event 等)带来数据不一致,建议用户把 mysql 库和其他数据库分开导出导入。 由于 cdb_mydumper 提供的库提取和库合并功能依赖于分割符,所以要求用户数据库名不包含点号(.),表名不包含减号(-)。

MySQL 每日备份的时间什么时候?

每日备份开始时间可自定义设置,默认为凌晨 2 点到 6 点。 需注意的是,备份完成时间受实例所存储的数据量影响,因此备份不一定能在所选择的时间段内完成。

开发者自己如何备份数据?

云数据库实例每天会进行全量备份,开发者也可以采用云数据库提供的多线程快速导入导出工具进行备份,详见 备份方式,或者通过 mysqldump 工具自己备份数据。

MySQL 怎么设置备份方式?

在实例列表页,单击实例,进入【备份管理】,再单击【自动备份设置】,即可进行设置备份方式。

8 9

MySQL 支持什么方式的备份?

逻辑备份支持实例级和库表级下载,物理备份仅支持实例级的下载。 MySQL 低于 5.6 版本的仅支持逻辑备份。

MySQL 异步复制模式有备份库,备份库在哪里?

云数据库实例每天会进行全量备份,开发者可以在控制台外网或者内网下载备份数据,也可以在 phpMyAdmin 中手动备份数据库。

MySQL如何查看 binlog 日志?

控制台下载 binlog 到本地,比如下载到云服务器。 使用 mysqlbinlog 命令查看。mysql5.6 需要安装 3.4 或以上版本的 mysqlbinlog 方支持本地服务器查看 binlog。

云数据库的 binlog 保存时间是多久?

由于 MySQL binlog 会占用大量的存储空间,所以云数据库只保存最近 5 天的 binlog。另外,如果 binlog 数据量增加太快,服务器磁盘存储不下 5 天的 binlog,需要人工删除 binlog,释放空间,详见 云数据库的binlog保存时间说明

把 MySQL 数据根据备份进行恢复,应该怎么处理?

详细可参考 物理备份文件恢复数据库 教程。

配置 MySQL 同城双备,能够实现两个实例实时数据同步吗?

可以在控制台购买 灾备实例 来实现您这个需求 。

MySQL 数据备份保留多久?

支持 7-732 天的备份保留时长,目前免费,后续备份空间收费将另行通知。 详细请参考 备份方式 文档 。

实例升级问题

MySQL 有什么实例类型?

  • 常规实例 不含只读实例的实例被称为常规实例。常规实例可读可写,在实例列表可见。MySQL 5.6 版本开启 GTID 后常规实例可通过购买只读实例从而升级为主实例。

    • 主实例 含有只读实例的实例被称为主实例。主实例可读可写,在实例列表可见。在主实例的实例详情页中可对其所属的只读实例进行管理。

    • 只读实例 仅提供读功能的实例被称为只读实例。只读实例无法单独存在,必须隶属于某个主实例,唯一数据来源是从主实例同步数据,在实例列表中不可见。

如何查询 MySQL 实例的地域?

您可以在控制台的实例详情中查看实例的地域。 步骤1:登录腾讯云 管理控制台 ,进入管理中心后,在【云产品】模块单击【云数据库】,进入关系型数据库页面。

10

步骤2:在关系型数据库页面,单击【MySQL】下的【实例列表】,找到目标地域(此例中以广州为例)中待重置密码的 MySQL 数据库实例,单击【实例名】或者【管理】按钮,进入 MySQL 数据库管理页面。

11

步骤3:在 MySQL 数据库管理页面,基本信息中包括实例的地域。

12

如何查看 MySQL 实例的所属网络?

您可以在控制台的实例详情中查看实例的所属网络。 步骤1:登录腾讯云 管理控制台 ,进入管理中心后,在【云产品】模块单击【云数据库】,进入关系型数据库页面。 13

步骤2:在关系型数据库页面,单击【MySQL】下的【实例列表】,找到目标地域(此例中以广州为例)中待重置密码的 MySQL 数据库实例,单击【实例名】或者【管理】按钮,进入 MySQL 数据库管理页面。 14

步骤3:在 MySQL 数据库管理页面,基本信息中包括实例的所属网络。

15

如何自助调整云数据库实例规格?

自助调整云数据库实例规格请参考 调整数据库实例规格

如何设置实例可维护时间?

设置实例可维护时间请参考 设置实例维护时间

MySQL 实例调整配置如何计费?

对包年包月实例,用户自助调整数据库实例时,系统将计算实例规格间的差价,并从用户的账户中扣除或退还差价。实例调整后将按照新的实例规格进行计费。对按量计费实例,实例调整后下一个计费周期将按照新的实例规格进行计费。

自助调整 MySQL 实例有什么限制吗?

仅支持包年包月和按量计费用户自助调整实例规格。 仅当实例处于可调整配置状态下时允许进行调整操作。对正在调整配置的实例,需等本次调整完成后,才允许再次调整。 调整过程中,不允许取消本次调整操作。 MySQL 怎样创建只读用例? 创建只读用例请参考 只读用例

如何查看 MySQL 实例的状态?

您可以在控制台的实例详情中查看实例的状态。

步骤1:登录腾讯云 管理控制台 ,进入管理中心后,在【云产品】模块单击【云数据库】,进入关系型数据库页面。

16

步骤2:在关系型数据库页面,单击【MySQL】下的【实例列表】,找到目标地域(此例中以广州为例)中待重置密码的 MySQL 数据库实例,单击【实例名】或者【管理】按钮,进入 MySQL 数据库管理页面。

17

步骤3:在 MySQL 数据库管理页面,基本信息中包括实例的状态。

18

怎样查看刚建立的 MySQL 实例 ID?

您可以在控制台的实例详情中查看实例 ID。 步骤1:登录腾讯云 管理控制台 ,进入管理中心后,在【云产品】模块单击【云数据库】,进入关系型数据库页面。 19

步骤2:在关系型数据库页面,单击【MySQL】下的【实例列表】,找到目标地域(此例中以广州为例)中待重置密码的 MySQL 数据库实例,单击【实例名】或者【管理】按钮,进入 MySQL 数据库管理页面。 20

步骤3:在 MySQL 数据库管理页面,基本信息中包括实例 ID。

21

怎么查询 MySQL 实例的内网地址?

您可以在控制台的实例详情中查看实例的内网地址。 步骤1:登录腾讯云 管理控制台 ,进入管理中心后,在【云产品】模块单击【云数据库】,进入关系型数据库页面。

22

步骤2:在关系型数据库页面,单击【MySQL】下的【实例列表】,找到目标地域(此例中以广州为例)中待重置密码的 MySQL 数据库实例,单击【实例名】或者【管理】按钮,进入 MySQL 数据库管理页面。

23

步骤3:在 MySQL 数据库管理页面,基本信息中包括实例的内网地址。

24

如何查询 MySQL 实例的端口?

您可以在控制台的实例详情中查看实例的端口。

步骤1:登录腾讯云 管理控制台 ,进入管理中心后,在【云产品】模块单击【云数据库】,进入关系型数据库页面。

25

步骤2:在关系型数据库页面,单击【MySQL】下的【实例列表】,找到目标地域(此例中以广州为例)中待重置密码的 MySQL 数据库实例,单击【实例名】或者【管理】按钮,进入 MySQL 数据库管理页面。

26

步骤3:在 MySQL 数据库管理页面,实例详情中的基本信息,可以查看到实例的端口。

27

如何查看 MySQL 实例的所属项目?

您可以在控制台的实例详情中查看实例的所属项目。

步骤1:登录腾讯云 管理控制台 ,进入管理中心后,在【云产品】模块单击【云数据库】,进入关系型数据库页面。

28

步骤2:在关系型数据库页面,单击【MySQL】下的【实例列表】,找到目标地域(此例中以广州为例)中待重置密码的 MySQL 数据库实例,单击【实例名】或者【管理】按钮,进入 MySQL 数据库管理页面。

29

步骤3:在 MySQL 数据库管理页面,实例详情中的基本信息,可以查看到实例的所属项目。

30

如何查询 MySQL 实例 GTID 的状态?

您可以在控制台的实例详情中查看实例GTID的状态。

步骤1:登录腾讯云 管理控制台 ,进入管理中心后,在【云产品】模块单击【云数据库】,进入关系型数据库页面。

31

步骤2:在关系型数据库页面,单击【MySQL】下的【实例列表】,找到目标地域(此例中以广州为例)中待重置密码的 MySQL 数据库实例,单击【实例名】或者【管理】按钮,进入 MySQL 数据库管理页面。

32

步骤3:在 MySQL 数据库管理页面,实例详情中的基本信息,可以查看到实例GTID的状态。

33

如何查看 MySQL 的示例配置信息?

您可以在控制台的实例详情中查看实例的配置信息。

步骤1:登录腾讯云 管理控制台 ,进入管理中心后,在【云产品】模块单击【云数据库】,进入关系型数据库页面。

34

步骤2:在关系型数据库页面,单击【MySQL】下的【实例列表】,找到目标地域(此例中以广州为例)中待重置密码的 MySQL 数据库实例,单击【实例名】或者【管理】按钮,进入 MySQL 数据库管理页 面。

35

步骤3:在 MySQL 数据库管理页面,实例详情中的配置信息,可以查看到实例相关配置。

36

如何查看 MySQL 的数据库版本?

您可以在控制台的实例详情中查看实例的数据库版本。

步骤1:登录腾讯云 管理控制台 ,进入管理中心后,在【云产品】模块单击【云数据库】,进入关系型数据库页面。

37

步骤2:在关系型数据库页面,单击【MySQL】下的【实例列表】,找到目标地域(此例中以广州为例)中待重置密码的 MySQL 数据库实例,单击【实例名】或者【管理】按钮,进入 MySQL 数据库管理页面。

38

步骤3:在 MySQL 数据库管理页面,实例详情中的配置信息,可以查看到实例的数据库版本。

39

如何查看 MySQL 实例的存储空间?

您可以在控制台的实例详情中查看实例的存储空间。

步骤1:登录腾讯云 管理控制台 ,进入管理中心后,在【云产品】模块单击【云数据库】,进入关系型数据库页面。

40

步骤2:在关系型数据库页面,单击【MySQL】下的【实例列表】,找到目标地域(此例中以广州为例)中待重置密码的 MySQL 数据库实例,单击【实例名】或者【管理】按钮,进入 MySQL 数据库管理页面。

41

步骤3:在 MySQL 数据库管理页面,实例详情中的配置信息,可以查看到实例的存储空间。

42

如何查询已经使用了的 MySQL 存储空间?

您可以在控制台的实例详情中查看实例已经使用了的存储空间。

步骤1:登录腾讯云 管理控制台 ,进入管理中心后,在【云产品】模块单击【云数据库】,进入关系型数据库页面。

43

步骤2:在关系型数据库页面,单击【MySQL】下的【实例列表】,找到目标地域(此例中以广州为例)中待重置密码的 MySQL 数据库实例,单击【实例名】或者【管理】按钮,进入 MySQL 数据库管理页面。

44

步骤3:在 MySQL 数据库管理页面,实例详情中的配置信息,可以查看到实例已经使用了的存储空间。

45

如何查询 MySQL 实例的创建时间?

您可以在控制台的实例详情中查看实例的创建时间。

步骤1:登录腾讯云 管理控制台 ,进入管理中心后,在【云产品】模块单击【云数据库】,进入关系型数据库页面。

46

步骤2:在关系型数据库页面,单击【MySQL】下的【实例列表】,找到目标地域(此例中以广州为例)中待重置密码的 MySQL 数据库实例,单击【实例名】或者【管理】按钮,进入 MySQL 数据库管理页面。

47

步骤3:在 MySQL 数据库管理页面,实例详情中的配置信息,可以查看到实例的创建时间。

48

MySQL 如何升级实例规格?

登录云数据库的管理控制台后,可通过【升级】操作升级指定实例的实例规格。详细可参见 升级数据库实例规格 文档。

自己升级 MySQL 实例有什么限制吗?

仅支持预付费和按量计费用户自助升级实例规格。 仅支持由小规格的实例向大规格实例进行升级,不支持降级操作。 仅当实例处于可升级状态下时允许进行升级操作。对正在升级的实例,需等本次升级完成后,才允许再次升级。 升级过程中,不允许取消本次升级操作。

使用 MySQL 5.5 版本和小容量的实例,如何开通只读实例?

只读实例基于 GTID 功能,所以 MySQL5.5 需要升级到 5.6 以上 GTID 版本。 另外实例规格必须满足内存 4G 硬盘 100G 规格以上。

MySQL 只读实例是干什么用的?能否外网连接?

  • 只读实例用于用户做读写分离和读扩展。
  • 仅支持内网连接。

MySQL 只读实例和灾备实例的区别。

  • 只读实例
    • 只能与主实例同地域。
  • 灾备实例
    • 必须与主实例异地。

MySQL 主实例和灾备实例间数据同步频率。

开启同步后,完成初始同步后,后续数据实时同步。

MySQL 支持监控的实例类型是什么?

腾讯云 MySQL 支持云数据库主实例及只读实例的监控,并为每个实例提供独立的监控视图供查询。详细参阅 MySQL监控功能 文档。

什么是 MySQL 实例的异步复制?

应用发起数据更新(含 insert、update、delete 操作)请求,Master 在执行完更新操作后立即向应用程序返回响应,然后 Master 再向 Slave 复制数据。 数据更新过程中 Master 不需要等待 Slave 的响应,因此异步复制的数据库实例通常具有较高的性能,且 Slave 不可用并不影响 Master 对外提供服务。但因数据并非实时同步到 Slave,而 Master 在 Slave 有延迟的情况下发生故障则有较小概率会引起数据不一致。 腾讯云数据库 MySQL 异步复制采用一主一备的架构。

什么是 MySQL 实例的半同步复制?

应用发起数据更新(含 insert、update、delete 操作)请求,Master 在执行完更新操作后立即向 Slave 复制数据,Slave 接收到数据并写到 relay log 中(无需执行) 后才向 Master 返回成功信息,Master 必须在接受到 Slave 的成功信息后再向应用程序返回响应。 仅在数据复制发生异常(Slave 节点不可用或者数据复制所用网络发生异常)的情况下,Master 会暂停(MySQL 默认约 10 秒左右)对应用的响应,将复制方式降级为异步复制。当数据复制恢复正常,将恢复为强同步复制。 腾讯云数据库 MySQL 半同步复制采用一主一备的架构。

什么是 MySQL 实例的强同步复制?

应用发起数据更新(含 insert、update、delete 操作)请求,Master 在执行完更新操作后立即向 Slave 复制数据,Slave 接收到数据并执行完 后才向 Master 返回成功信息,Master 必须在接受到 Slave 的成功信息后再向应用程序返回响应。 因 Master 向 Slave 复制数据是同步进行的,Master 每次更新操作都需要同时保证 Slave 也成功执行,因此强同步复制能最大限度的保障主从数据的一致性。但因每次 Master 更新请求都强依赖于 Slave 的返回,因此 Slave 如果仅有单台,它不可用将会极大影响 Master 上的操作。 腾讯云数据库 MySQL 强同步复制采用一主两备的架构,仅需其中一台 Slave 成功执行即可返回,避免了单台 Slave 不可用影响 Master 上操作的问题,提高了强同步复制集群的可用性。

如何使用命令行方式登录 MySQL 的实例?

在 MySQL 客户端 使用标准 MySQL 语句登录云数据库(云数据库的帐号默认为 root)。

  1. mysql -h [云数据库IP] -P [云数据库端口号] -uroot -p[云数据库密码]

注:

  • 需要先安装 MySQL 客户端,可到 MySQL官方下载安装
  • 命令行中第一个“-P”为大写,第二个“-p”为小写。

登录云数据库后,即可执行 MySQL 语句管理云数据库。MySQL语句说明详见: MySQL手册 。 示例如下:

49

如何使用云数据库管理界面登录 MySQL 的实例?

目前提供使用命令行和云数据库管理界面两种方式,下面是使用云数据库管理界面登录到数据库 TencentDB for MySQL 的实例。

首先,登录腾讯云关系型数据库 控制台 ,在云数据库 MySQL 【实例列表】页面,找到要登录的云数据库实例,单击右侧的【登录】按钮。

50

其次,在 phpMyAdmin 登录界面,输入正确的云数据库密码,单击【执行】后进入 phpMyAdmin 管理界面。

51

最后,您即可在 phpMyAdmin 管理界面对数据库进行相关操作。

52

如何复制 MySQL 中的实例?

TencentDB for MySQL 数据库实例有如下三种数据复制方式:

  • 异步复制
  • 强同步复制
  • 半同步复制

MySQL 不允许添加临时实例吗?

临时实例是由回档功能生成的临时存在的实例,用于回档后数据校验,可通过切换为主实例功能,将校验后的临时实例恢复为主实例,目前暂不支持添加临时实例。

MySQL 的临时实例什么时间会有?

临时实例上线时,腾讯云会有公告通知,您可以关注 腾讯云官网 。

自助修改 MySQL 实例的配置

MySQL 实例的配置由云数据库统一管理,并支持部分参数的自助修改。 您可以通过命令行和 phpMyAdmin,修改云数据库配置参数:

1. 命令行方式 以下变量可以通过执行 “set global var_name=var_value” 语法运行时动态修改,10 分钟左右将自动同步到本机文件,迁移或重启将保持设置后的值。其中常见的 var_name 包括如下变量:

53

  1. phpMyAdmin 通过 phpMyAdmin 登录云数据库后,单击上面菜单中的“变量”,在下面的变量列表中,单击需要修改的变量对应的值,对其进行修改。

54

更多请参考. 云数据库可以修改的配置

MySQL升级影响多大?需要多长时间呢?

升级过程可能涉及数据搬迁,期间您的业务访问不受影响,搬迁完毕后会有秒级别的闪断,建议您业务实现重连机制,并且在升级操作时选择维护时间内切换,将影响降到最低。升级时长受数据量大小影响,一般耐心等待即可。

性能内存问题

性能相关问题

为什么 MyISAM 引擎不能使用?

TencentDB for MySQL 不支持 MyISAM 引擎的主要原因有如下几个:

  • MyISAM 不支持事务。
  • MyISAM 是表锁机制,并发支持不如 InnoDB。
  • 现在 InnoDB 已经完全可以替代 MyISAM,官方最新版本已经放弃了 MyISAM,不再使用。

云数据库 MySQL 执行任务时,为什么会卡死?

是并发操作导致的锁等待,属于正常现象。

高 IO 版,内存 1000MB,硬盘 45GB,1000 次/秒 MySQL5.5 这里的 1000 次每秒指的是什么?

1000 次/秒是每秒执行操作数,是增删改查的总数。

为什么查看云数据库中的中文数据时出现乱码?

您将数据存储到云数据库中时,请先到 云数据库的管理控制台 进入相应实例的【管理视图】页面查看该实例的默认字符集。在编写程序时,将 character_set_clientcharacter_set_resultscharacter_set_connection 设置为和云数据库实例相同的字符集。否则,如果存储的数据中有中文,会出现中文数据乱码的现象。 例如:云数据库实例的默认字符集为 utf8,在编写程序连接数据库时,需要先执行以下语句,再将中文数据存储到云数据库。

SET NAMES 'utf8';

MySQL 连接数占用满了的常见原因和解决方法?

  • sleep 线程数很多,建议在控制台调低 wait_timeout 和 interactive_timeout 参数值;
  • 慢查询堆积,long_query_time 参数值默认 10s,建议调成 1~2s,观察慢查询日志;
  • sleep 线程数很少,也没有慢查询堆积,建议在控制台调大 max_connections 参数值。

MySQL CPU 占比过高的常见原因和解决方法?

  • 慢查询堆积,请查看实例监控上的慢查询和全表扫描,结合慢查询日志(控制台可下载)进行分析优化,若监控上没有慢查询只有全表扫描,建议在控制台将 long_query_time 调小至 1~2s,使用一段时间后再分析慢查询;
  • 没有慢查询堆积,请查看实例监控上的内存占用,若超出实例规格很多,并且磁盘读写量明显增大,表明内存遇到瓶颈,建议升级内存。

如何查看 MySQL 慢查询日志?

MySQL 慢查询时间(long_query_time)的默认值是 10s,在遇到性能问题时,若没发现有慢查询,建议调成 1~2s 再查看 。 登录腾讯云 管理控制台 ,进入管理中心后,在【云产品】模块单击【云数据库】,进入关系型数据库页面。 在关系型数据库页面,单击【MySQL】下的【实例列表】,找到目标地域(此例中以广州为例)中的 MySQL 数据库实例,单击【管理】按钮,进入 MySQL 数据库管理页面。

55

在 MySQL 数据库管理页面,单击管理列表下的参数设置,修改的变量如下:

56

变量说明
long_query_time超过该时间的查询为慢查询

在【操作日志】查看并导出慢查询日志。

57

内存分配问题

云数据库 MySQL 的内存是重要的性能参数,常出现由异常 SQL 请求以及待优化的数据库导致的内存利用率升高的情况,严重时还会出现由于 OOM 导致实例发生 HA 切换,影响业务的稳定及可用性。

MySQL 的内存大体可以分为 global 级的共享内存和 session 级的私有内存两部分,共享内存是实例创建时即分配的内存空间,并且是所有连接共享的。私有内存用于每个连接到 MySQL 服务器时才分配各自的缓存,一些特殊的 SQL 或字段类型会导致单个线程可能分配多次缓存,因此当出现 OOM 异常,都是由各个连接私有内存造成的。下面将详细介绍各部分的构成。

共享内存

执行如下命令,即可查询示例的共享内存分配情况:

  1. 1. show variables where variable_name in (
  2. 2. 'innodb_buffer_pool_size','innodb_log_buffer_size','innodb_additional_mem_pool_size','key_buffer_size','query_cache_size'
  3. 3. );

备注:5.7版本不支持innodb_additional_mem_pool_size。

如下参数是内存规格为1000MB实例的共享内存分配情况的查询结果(以下为测试实例配置):

  1. 1. +---------------------------------+-----------+
  2. 2. | Variable_name | Value |
  3. 3. +---------------------------------+-----------+
  4. 4. | innodb_additional_mem_pool_size | 8388608 |
  5. 5. | innodb_buffer_pool_size | 524288000 |
  6. 6. | innodb_log_buffer_size | 67108864 |
  7. 7. | key_buffer_size | 16777216 |
  8. 9. | query_cache_size | 0 |
  9. 10. +---------------------------------+-----------+
  10. 11. 5 rows in set (0.01 sec)

参数说明:

  • innodb_buffer_pool_size 该部分缓存是 Innodb 引擎最重要的缓存区域,是通过内存来弥补物理数据文件的重要手段,在云数据库 MySQL 上会采用实例规格配置的50% - 80%作为该部分大小(上图为1000MB * 0.5 = 500MB)。其中主要包含数据页、索引页、undo 页、insert buffer、自适应哈希索引、锁信息以及数据字典等信息。在进行 SQL 读和写的操作时,首先并不是对物理数据文件操作,而是先对 buffer_pool 进行操作,再通过 checkpoint 等机制写回数据文件。该空间的优点是可以提升数据库的性能、加快 SQL 运行速度,缺点是故障恢复速度较慢。

  • innodb_log_buffer_size 该部分主要存放 redo log 的信息,在云数据库 MySQL 上会设置64MB的大小。InnoDB 会首先将 redo log 写在这里,然后按照一定频率将其刷新回重做日志文件中。该空间不需要太大,因为一般情况下该部分缓存会以较快频率刷新至 redo log(Master Thread 会每秒刷新、事务提交时会刷新、其空间少于1/2时同样会刷新)。

  • innodb_additional_mem_pool_size 该部分主要存放 InnoDB 内的一些数据结构,在云数据库 MySQL 中统一设置为8MB。通常是在 buffer_pool 中申请内存的时候还需要在额外内存中申请空间存储该对象的结构信息。该大小主要与表数量有关,表数量越大需要更大的空间。

  • key_buffer_size 该部分是 MyISAM 表的重要缓存区域,所有实例统一为16M。该部分主要存放 MyISAM 表的键。MyISAM 表不同于 InnoDB 表,其缓存的索引缓存是放在 key_buffer 中的,而数据缓存则存储于操作系统的内存中。云数据库 MySQL 的系统是 MyISAM 引擎的,因此需给予该部分一定量的空间的。

  • query_cache_size 该部分是对查询结果做缓存,以减少解析 SQL 和执行 SQL 的开销,在云数据库 MySQL 上关闭了该部分的缓存。主要适合于读多写少的应用场景,因为它是按照 SQL 语句的 hash 值进行缓存的,当表数据发生变化后即失效。

私有内存

执行如下命令,查询示例的 session 私有内存分配情况:

  1. 1. show variables where variable_name in (
  2. 2. 'read_buffer_size','read_rnd_buffer_size','sort_buffer_size','join_buffer_size','binlog_cache_size','tmp_table_size'
  3. 3. );

查询结果如下(如下为测试实例配置):

  1. 1. +----------------------+-----------+
  2. 2. | Variable_name | Value |
  3. 3. +----------------------+-----------+
  4. 4. | binlog_cache_size | 32768 |
  5. 5. | join_buffer_size | 262144 |
  6. 6. | read_buffer_size | 262144 |
  7. 7. | read_rnd_buffer_size | 524288 |
  8. 8. | sort_buffer_size | 524288 |
  9. 9. | tmp_table_size | 209715200 |
  10. 10. +----------------------+-----------+
  11. 11. 6 rows in set (0.00 sec)

参数说明:

  • read_buffer_size 分别存放了对顺序扫描的缓存,当 thread 进行顺序扫描数据时会首先扫描该 buffer 空间以避免更多的物理读。

  • read_rnd_buffer_size 分别存放了对随机扫描的缓存,当 thread 进行随机扫描数据时会首先扫描该 buffer 空间以避免更多的物理读。

  • sort_buffer_size 需要执行 order by 和 group by 的 SQL 都会分配 sort_buffer,用于存储排序的中间结果。在排序过程中,若存储量大于 sort_buffer_size,则会在磁盘生成临时表以完成操作。

  • join_buffer_size MySQL 仅支持 nest loop 的 join 算法,处理逻辑是驱动表的一行和非驱动表联合查找,这时就可以将非驱动表放入 join_buffer,不需要访问拥有并发保护机制的 buffer_pool。

  • binlog_cache_size 该区域用来缓存该 thread 的 binlog 日志,在一个事务还没有 commit 之前会先将其日志存储于 binlog_cache 中,等到事务 commit 后会将其 binlog 刷回磁盘上的 binlog 文件以持久化。

  • tmp_table_size 不同于上面各个 session 级的 buffer,这个参数可以在控制台上修改。该参数是指用户内存临时表的大小,如果该 thread 创建的临时表超过它设置的大小会把临时表转换为磁盘上的一张 MyISAM 临时表。

运维常见问题

TencentDB for MySQL 使用 pt-online-schema-change 问题 TencentDB for MySQL 5.6 版本开始支持 Online DDL。5.5 的版本做变结构变更时,为了避免锁表导致的业务影响,仍然建议用户使用 pt-online-schema-change 等开源工具完成该类操作,但不少用户通过 CVM 使用 pt-online-schema-change 对 MySQL 表结构变更时,遇到问题;

常见报错信息:

Use of uninitialized value $host in string eq at /usr/local/percona-toolkit-3.0.3/bin/pt-online-schema-change line 4284.

查看对应的源码:

  1. sub _find_slaves_by_processlist {
  2. my ( $self, $dsn_parser, $dbh, $dsn ) = @_;
  3. my @slaves = map {
  4. my $slave = $dsn_parser->parse("h=$_", $dsn);
  5. $slave->{source} = 'processlist';
  6. $slave;
  7. }
  8. grep { $_ }
  9. map {
  10. my ( $host ) = $_->{host} =~ m/^([^:]+):/;
  11. if ( $host eq 'localhost' ) {
  12. $host = '127.0.0.1'; # Replication never uses sockets.
  13. }
  14. $host;
  15. } $self->get_connected_slaves($dbh);
  16. return @slaves;
  17. }

从代码上看是在通过 processlist 的方式寻找 slave 的信息,由于 TencentDB 对复制账号相关的信息做过处理,导致通过 processlist 拿不到 slave 的信息; 修复方式: 使用 pt-osc 的时候加上如下参数,不去检查 slave 的状态; --recursion-method=none

TencentDB 导入数据报错:Specified key was too long

报错原因 ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes 客户通过 CVM 的命令行向 MySQL 导入 XXXX.sql 文件时,MySQL 返回 Specified key was too long 的报错。 对于报错信息 “ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes”,其实意思就是“索引字段长度太长,超过了 767 bytes”。

  1. innodb 存储引擎,多列索引的长度限制如下: 每个列的长度不能大于 767 bytes;所有组成索引列的长度和不能大于 3072 bytes

  2. myisam 存储引擎,多列索引长度限制如下: 每个列的长度不能大于 1000 bytes,所有组成索引列的长度和不能大于 1000 bytes

TIPS:768/2=384个双字节 或者767/3=255个三字节的字段(GBK 是双字节的,UTF8 是三字节的,UTF8MB4 是四字节的)

为什么在自建的数据库上是 OK 的,但是把数据导入 MySQL 后就报 Specified key was too long 错误呢? 在 MySQL 5.6 及其以上版本,所有 myisam 表都会被自动转换为 innodb,所以在自建数据库上有超过 767 bytes 的组合索引列,但是由于在自建库上 myisam 存储引擎,同样的建表语句在自建库上运行没问题,但是在 MySQL 5.6 版本以上就会有问题。

解决方案

  1. 修改备份文件中出错行组合索引列的长度 常见: create table test(test varcahr(255) primary key)charset=utf8; — 成功 create table test(test varcahr(256) primary key)charset=utf8; — 失败 ERROR 1071(42000):Specified key was too long; max key length is 767 bytes
  2. 使用 TencentDB5.5 版本,myisam 引擎不会被自动转换为 innodb。

select * from XX into outfile xxxx 报错,什么原因呢?

您好 , 非常抱歉 ,出于平台安全性原因 , 不支持开通 file 权限 ,不支持使用 select into outfile 方式导出数据的 , 建议您使用其他方式导出 , 敬请谅解

MySQL数据库插入emoji表情乱码,怎么办?

如果要实现存储 emoji 表情到 MySQL 实例,需要客户端、到 MySQL 实例的连接、MySQL 实例内部 3 个方面统一使用或者支持 utf8mb4 字符集。

  1. 首先需要 MySQL 实例设置字符集为 utf8mb4; 可以通过登录控制台修改:character_set_server参数。需要注意的是,修改此参数会使数据库重启,建议您提前备份数据库,避免出现不必要的损失
  2. 用户的程序客户端需要保证输出的字符串的字符集为 utf8mb4;
  3. 应用程序创建连接是需要指定执行字符集,以常见的 jdbc 连接为例: 对于jdbc连接,需要使用 MySQL Connector/J 5.1.13(含)以上的版本,示例代码如下:

    1. String query = set names utf8mb4”;
    2. stat.execute(query);

常见参数修改以及意义

腾讯云MySQL数据库已在官方的默认值基础之上进行了优化,但基于客户不同的业务场景,在购买实例后,根据您的业务场景建议对以下参数进行合理的配置:

  1. character_set_server

默认值:LATIN1

是否需要重启:是

作用:用于配置 MySQL 服务器的默认字符集。腾讯云 MySQL 数据库提供4种字符集,分别为 LATIN1、UTF8、GBK、UTF8MB4,其中 LATIN1 支持英文字符,一个字符占用一个字节; UTF8 包含全世界所有国家需要用到的字符,是国际编码,通用性强,一个字符占用三个字节;GBK 的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示; UTF8MB4 作为 UTF8 的超集,完全向下兼容,一个字符占用四个字节,且支持 emoji 表情。

建议:建议您购买实例后,根据业务所需要支持的数据格式选择适合的字符集,确保客户端与服务器端设置相同的字符集,避免因字符集设置不正确而引发乱码的问题和不必要的重启操作。

  1. lower_case_table_names:

默认值:0

是否需要重启:是

作用:创建数据库及表时,存储与查询时是否大小写敏感。该参数可以设置的值为 0、1,默认的参数值为 0,表示创建数据库及表时,存储与查询均区分大小写,反之则不做区分。

建议:腾讯云 MySQL 数据库默认大小写敏感,建议根据您的业务需求及使用习惯进行合理的配置。

  1. sql_mode:

默认值:

  1. NO_ENGINE_SUBSTITUTION5.6版本),ONLY_FULL_GROUP_BYSTRICT_TRANS_TABLESNO_ZERO_IN_DATENO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERONO_AUTO_CREATE_USERNO_ENGINE_SUBSTITUTION5.7版本)

是否需要重启:否

作用:MySQL 可以运行在不同 sql 模式,sql 模式定义了 mysql 应该支持的 sql 语法,数据校验等。该参数 5.6 版本的默认参数值为 NO_ENGINE_SUBSTITUTION, 表示使用的存储引擎被禁用或未编译则抛出错误;5.7 版本的默认参数值为 ONLY_FULL_GROUP_BYSTRICT_TRANS_TABLESNO_ZERO_IN_DATENO_ZERO_DATEERROR_FOR_DIVISION_BY_ZERONO_AUTO_CREATE_USERNO_ENGINE_SUBSTITUTION

其中:

  • ONLY_FULL_GROUP_BY 表示在 GROUP BY 聚合操作时,如果在 SELECT 中的列、HAVING 或者 ORDER BY 子句的列,必须是 GROUP BY 中出现或者依赖于 GROUP BY 列的函数列;
  • STRICT_TRANS_TABLES 为启用严格模式;NO_ZERO_IN_DATE 是否允许日期中的月份和日包含 0,且受是否开启严格模式的影响;
  • NO_ZERO_DATE 数据库不允许插入零日期,且受是否开启严格模式的影响;
  • ERROR_FOR_DIVISION_BY_ZERO 在严格模式下,INSERT 或 UPDATE 过程中,如果数据被零除,则产生错误而非警告,而非严格模式下,数据被零除时 MySQL 返回 NULL;
  • NO_AUTO_CREATE_USER 禁止 GRANT 创建密码为空的用户;
  • NO_ENGINE_SUBSTITUTION 使用的存储引擎被禁用或者未编译则抛出错误; 建议:由于不同的SQL模式支持不同的SQL语法,建议根据您的业务场景及开发习惯进行合理的配置。

  • long_query_time:

默认值:10

是否需要重启:否

作用:用于指定慢查询的界定时间,默认值为 10s;当某个查询执行时间为 10s 及以上,该查询的执行情况会记录与慢日志中,便于过后对慢查询进行分析。

建议:基于客户业务场景及性能敏感度不同,建议根据各自业务场景设置合理的值,以便事后进行性能分析。

功能特性问题

云数据库适用于哪些业务场景?

MySQL 数据库适用的地方都可以使用云数据库。相比于自行搭建 MySQL,使用云数据库更加方便和可靠。 云数据库完全兼容 MySQL 协议,同时提供 master-slave 热备和定时冷备服务,此外支持实例无缝升级,可最大程度减少开发者在部署、监控、扩容和故障恢复等方面的投入,使开发者可以集中精力进行产品开发和运营。

使用云数据库前要做什么准备?

在使用云数据库前您需要考虑以下两个问题:

您的应用是否适合使用 DB?比如数据量小、访问量高、key-value 存储的场景就应该考虑使用内存级持久化存储服务 云数据库 Memcached。 您的数据库设计是否合理?比如有明显访问热点或者数据量过大的表,则应该考虑拆分成多个表。 云数据库如何对 MySQL 进行管理? 开发者不需要对 MySQL 进行日常管理,日常的维护和调整由云数据库运维系统完成。 当 MySQL 出现异常时,运维系统会及时发现并通知运维人员处理,开发者不需要做任何变更操作。

云数据库后面是否是实体机?

云数据库后面是实体机。

云数据库 MySQL 连接方式?

连接方式有两种:

  • 外网访问:借助外网账号的方式。默认不开通外网访问,大陆地区的 MySQL 实例,在控制台实例管理页面可以开通外网访问,通过外网连接云数据库。
  • 内网访问:借助自动分配的内网地址,使用在同一个账号同一个地域的云服务器对数据库进行访问。这种方式由于使用内网高速网络,延迟低。

MySQL 支持中文字符吗?

目前不支持中文字符。

云数据库会帮我做分库分表吗?

因为分库分表的标准和业务逻辑相关,所以云数据库不会帮业务做分库分表。

云数据库占用空间与使用空间的区别是什么?

目前云数据库用户实际使用空间与 binlog 等日志数据已分开统计,开发者在云数据库控制台看到的占用空间即等于使用空间。

云数据库执行任务是否有缓冲?

问题描述: 在很短的时间,送入了 N 条 SQL 语句给云数据库执行,此时云数据库会逐条执行,还是卡死?如果会卡死,那么同时的连接并发数限制是多少? 问题解答: 云数据库提供的 MySQL 实例与平时我们自己安装的 MySQL 实例是一样的。并发执行的语句是否会卡死跟系统资源和 SQL 语句本身有关。 如果连接数 max_connections 到达极限值,那么该实例基本上已经无法正常提供服务,一般是由以下原因造成的:

  • 业务程序 bug 导致的空连接过多;
  • 前端过来的访问远远超出实例的处理能力;
  • 某个连接执行了太久,独占了 MySQL 的资源,导致大量的访问请求被阻塞。

云数据库对数据量有什么限制?*

关于云数据库的限制详情请参阅 云数据库数量限制 文档。

使用云数据库的注意事项?

关于使用云数据库的注意事项详情请参阅 云数据库操作限制 文档。

如何申请云数据库实例 slave 只读权限开放/关闭?

如果需要开放或关闭 slave 只读实例,请按照模版 提交工单申请

云数据库的连接数有限制吗?

关于云数据库连接数的限制详情请参阅 云数据库链接数限制 文档。

是否支持从库访问?

为了数据库的安全,例如当主实例出现问题时,能快速切换到从库,所以目前不支持对从库进行读写; 若希望扩展读写能力,可以考虑升级实例配置或者在实例详情页,购买 只读实例

如何更换数据库地域?

暂不支持数据库实例更换地域,您可以使用 数据传输服务 DTS 来实现两地实例间数据迁移,此DTS工具支持实时数据同步。数据迁移完毕后,可自助退换源实例即可。

MySQL实例销毁了怎么办?

实例销毁后会保留在回收站一段时间,包年包月实例会保留 7 天,按量计费实例保留 1 天;在此时间段内,可在回收站内找到对应实例,然后进行恢复操作即可找回。

帐号误删与忘记密码怎么办? 帐号误删后,可通过实例详情页中【数据库管理】-【帐号管理】-【创建帐号】或 使用 sql 语句进行新建。 root 密码忘记了,可通过实例详情页中【数据库管理】-【帐号管理】找到对应账号进行【重置密码】操作即可。 以上操作也可以通过云 API 接口实现,了解详情

需要使用 MyISAM 数据库引擎怎么办? 可以使用MySQL5.5版本,此版本支持 MyISAM 引擎。不过,还是建议使用更高版本,如 MySQL 5.7 等,使用 Innodb 引擎,提供更细粒度行级锁,写入性能更高;提供数据完整性保障,可实现数据库故障后数据不丢失。

数据库支持跨地域访问吗? 默认 VPC 网络下不支持跨地域访问的,各地域间 VPC 网络相互隔离。建议数据库购买与云服务器同地域的实例,数据就近访问,提供业务服务速率及稳定性。

数据迁移问题

如何把本地的 sql 文件导入到 MySQL 数据库中?*

步骤1:在腾讯云控制台的左上角,单击【云产品】菜单下的【关系型数据库】,进入数据库产品页面。

58

步骤2:在关系型数据库页面中,单击【MySQL】下的【实例列表】,找到目标地域(此例中以广州为例)中要操作的状态为“未初始化” MySQL 数据库实例。

59

步骤3:单击【初始化】对要操作的 MySQL 实例执行初始化。

60

步骤4:配置初始化相关参数,然后单击【确定】开始初始化。 支持的字符集 :选择 MySQL 数据库支持的字符集。 表名大小写敏感 :表名是否大小写敏感,默认为是。 自定义端口 :数据库的访问端口,默认为 3306。 root 账户密码:新创建的 MySQL 数据库的用户名默认为 root,此处用来设置此 root 账户的密码。 确认密码 :再次输入密码。

61

步骤5:目标 MySQL 实例的状态变为“运行中”,说明已初始化成功。

62

步骤6:单击操作里面的【管理】,然后单击【导入数据库】,选择导入文件,接下来选择目标数据库,最后确认导入(导入的单个 sql 文件不超过 2GB,文件名允许英文、数字,下划线)。

63

如何导出数据库数据?

  1. 如果需要导出冷备数据,可在控制台实例【备份管理】下载。
  2. 如果需要导出实时数据,可以购买只读实例,通过只读实例 mysqldump 获取。

原数据库大概 7G,哪种方式最快迁移至腾讯云购买的 MySQL 数据库中?

建议您使用 数据迁移 功能,可以直接连到您的源库进行数据同步。

想配置同城双备,能够实现两个实例实时数据同步吗?如何做?

可以在控制台购买 灾备实例 来实现您这个需求 。

如何了解更多有关数据迁移、数据审计、数据订阅的问题?

详见 数据迁移问题 详见 数据审计问题 详见 数据订阅问题

连接登录问题

一键连接检查工具

如果您无法通过内、外网正常访问 MySQL 实例,连接检查工具可协助您轻松排查内、外网的连接问题。

内网连接检查

当您通过 CVM 访问 MySQL 实例遇到访问异常的问题时,可以通过 MySQL 控制台所提供的连接检查工具进行内网连接相关问题的排查,仅需简单的操作便能轻松解决内网无法连接的问题。

  1. 登录 MySQL 控制台,选择需要排查的 MySQL 实例,在实例详情页中选择【连接检查】页。
  2. 检查内网连接问题时,需单击【添加访问此实例的云主机】,添加访问此 MySQL 实例的 CVM 实例。

64

说明:

选择 CVM 实例时,默认仅提供同地域云服务器,如果您需要跨地域访问,请通过 对等连接 实现网络互通。

  1. 添加完成后,单击【开始检查】,在检查任务完成后,会生成检查报告。
  2. 在检查报告的状态列,可查看检查结果,单击【查看报告】可查看报告详情。

65

  • 若检查状态为【正常】,则表示 CVM 实例允许通过内网正常访问该 MySQL 实例。
  • 若检查状态为【异常】,则表示 CVM 实例无法通过内网正常访问该 MySQL 实例。请参考异常检查项的【处理建议】进行设置,更多内网访问的问题,请参见 无法连接实例问题

66

外网连接检查

当您通过外网服务器访问 MySQL 实例遇到访问异常的问题时,可以通过 MySQL 控制台所提供的连接检查工具进行外网连接相关问题的排查,仅需简单的操作便能轻松解决外网无法连接的问题。

  1. 登录 MySQL 控制台,选择需要排查的 MySQL 实例,在实例详情页中选择【连接检查】>【外网检查】页。
  2. 检查外网连接问题时,需单击【添加访问此实例的外网服务器】,添加访问此 MySQL 实例的外网服务器。

67

  1. 添加完成后,单击【开始检查】,在检查任务完成后,会生成检查报告。
  2. 在检查报告的状态列,可查看检查结果,单击【查看报告】可查看报告详情。
    • 若检查状态为【正常】,则表示外网服务器允许通过外网正常访问该 MySQL 实例。
    • 若检查状态为【异常】,则表示外网服务器无法通过外网正常访问该 MySQL 实例。请参考异常检查项的【处理建议】进行设置,更多外网访问的问题,请参见 无法连接实例问题。

68

连接登录相关问题

云服务器与云数据库部署在相同区域上,如何连接 MySQL?

云服务器与云数据库部署在相同区域上时,请使用内网访问,连接方式请参考 访问MySQL数据库

云服务器与云数据库部署在不同区域上,如何连接 MySQL?

云服务器与云数据库部署在不同区域上时,请使用外网访问,连接方式请参考 外网访问

同一账号 TencentDB 数据库在上海一区,云服务器也在上海一区内网无法 PING 通?

TencentDB 是默认禁 ping 的,可以使用 telnet 来检测连通性。

如何使用外网访问数据库 TencentDB for MySQL?

外网访问请参考 外网访问

如何使用内网访问数据库 TencentDB for MySQL?

内网访问请参考 访问 MySQL 数据库

云数据库连接故障诊断及解决方案

当使用云数据库出现连接登录问题时,首先 telnet 验证云数据库的网络端口连通性,然后在您的云服务器上通过命令行登录云数据库(云数据库的帐号默认为 root,密码为之前在初始化选项中配置的帐号密码):

  1. mysql -h [云数据库IP] -P[云数据库端口号] -uroot -p[云数据库密码]

下面是常见的问题类型及解决方案:

  1. 当出现 “ERROR 1045(28000):Access denied for user…” 的提示语时,请确认您输入的云数据库帐号、密码是否正确,忘记密码请参考 密码重置,如果重复输入正确信息后仍然报该错误,请查看您的实例是否有对访问 IP 做限制,在 MySQL 控制台 实例详情页的【数据库管理】>【帐号管理】。

  2. 当出现 “ERROR 1040(00000):Too many connections” 的提示语时,表明云数据库实例当前最大连接数超过了限制。常见原因及解决方案: i. sleep 线程数很多,建议在控制台调低 wait_timeout和interactive_timeout 参数值。 ii. 慢查询堆积,long_query_time参数值默认10s,建议调成1s - 2s,观察慢查询日志。 iii. sleep 线程数很少,也没有慢查询堆积,建议在控制台调大 max_connections 参数值。

  3. 当出现 “ERROR 2003 (HY000): Can’t connect to MySQL server…” 的提示语时,请确认您输入的云数据库的 IP、端口信息是否正确。如果重复输入正确信息后仍然报该错,可以查看该实例控制台的“安全组”策略,确认该 CVM 是否有访问该 TencentDB 的权限。详见 云数据库安全组操作指引

  4. 如果是在数据迁移时遇到连通性测试不通时,请查看是否对提示的迁移代理 IP 做了安全策略的开通。
  5. 用户设置了init_connect参数,例如:mysql>set global init_connect=’insert into db_monitor.accesslog(thread_id,log_time,localname,matchname) values(connection_id(),now(),user(),current_user())’;
  6. 这会触发每个非 super 权限用户的连接,在每次连接 DB 都会向 db_monitor.accesslog 表里插入一条记录,一旦 db_monitor.accesslog 表上存在未提交的事务或相关的锁等待,那么 insert into db_monitor.accesslog 表的操作都会被卡住,进而导致非 super 权限用户的所有连接都会被卡住,影响到用户正常使用云数据库。请用户谨慎配置 init_connect 参数。

无法连接实例问题

网络类型不同

若 CVM 实例和 MySQL 实例的网络类型不一致,则 CVM 实例无法直接通过内网访问 MySQL 实例。

CVM 实例采用专有网络(VPC),MySQL 实例采用基础网络

  • 解决办法一(推荐):将 MySQL 实例从基础网络切换为 VPC 网络。 注意:

    • 切换后,两者必须处于同一 VPC 网络,才能内网互通。
    • 基础网络切换至 VPC 网络后,无法再切换回来。
    • 切换后,VPC 网络访问立即生效,原有基础网络的访问将保留24小时,请在24小时内将该实例相关联的实例迁至 VPC 网络,以保证相关实例的访问。
  • 解决办法二:重新购买基础网络的 CVM 实例(CVM 实例不支持从 VPC 迁移到基础网络)。但是 VPC 网络比基础网络更安全,建议您使用 VPC 网络。

  • 解决办法三:CVM 实例使用 MySQL 实例的外网连接地址连接 MySQL 实例。这种方式的性能、安全性、稳定性较差,建议您使用 VPC 网络。

CVM 实例采用基础网络,MySQL 实例采用专有网络(VPC)

  • 解决办法一(推荐):将 CVM 实例从基础网络迁移到 VPC 网络,具体操作请参见 CVM 迁移示例注意:

  • 切换后,两者必须处于同一 VPC 网络才能内网互通。

  • 迁移前,请自行解绑内外网 LB 以及弹性网卡,并释放主网卡的辅助 IP,迁移后再进行绑定。

  • 迁移过程中,实例需要进行重启,请勿进行其他操作。
  • 迁移后,请注意检查实例运行状态,内网访问以及远程登录是否正常。
  • 基础网络切换 VPC 网络后不可逆,CVM 切换至 VPC 网络后与其他基础网络的云服务不互通。
  • 解决办法二:使用基础网络互通
  • 解决办法三:CVM 实例使用 MySQL 实例的外网连接地址连接 MySQL 实例。这种方式的性能、安全性、稳定性较差,建议您使用 VPC 网络。
私有网络不同

默认情况下,CVM 实例与 MySQL 实例的网络类型都为 VPC 网络且两者都位于同一 VPC 网络时,才能直接通过内网互通。如果位于不同 VPC,可以采取以下方法使 CVM 和 MySQL 进行互通。

  • 解决办法一(推荐):将 CVM 实例迁移到 MySQL 实例所在的 VPC 网络。 具体操作:参考CVM的 切换私有网络服务,将 CVM 实例的 VPC 网络切换成 MySQL 实例所在的 VPC 网络。
  • 解决办法二:在两个 VPC 网络之间建立 对接连接。 若不采取以上办法,则位于不同 VPC 网络的 CVM 和 MySQL 只能通过公网互通。这种方式的性能、安全性、稳定性较差。
安全组配置有误

若 CVM 实例和 MySQL 实例的安全组配置有误,则 CVM 实例无法直接通过内网或外网访问 MySQL 实例。

CVM 实例安全组配置有误 若想要使用 CVM 实例通过内网访问 MySQL 实例,需要在 CVM 安全组中配置出站规则,当出站规格的目标配置不为0.0.0.0/0且协议端口不为 ALL 时,需要把 MySQL 实例的内网 IP 及端口添加到出站规则中

  1. 登录 安全组控制台,单击 CVM 实例绑定安全组的详情页。

69

  1. 选择出站规则,单击 [添加规则]。

70

您可以参考下图模版填写您的IP地址(段)及需要放通的端口信息(MySQL 内网地址),选择允许放通。 71

MySQL 实例安全组配置有误

若想要指定的 CVM 实例通过内网访问 MySQL 实例或者使用外网访问 MySQL 实例,需要在 MySQL 安全组中配置入站规则,当入站规则的源端配置不为0.0.0.0/0且协议端口不为ALL时,需要把 CVM 实例的内网 IP 或者外网客户端 IP 及端口添加到入站规则中

  1. 登录安全组控制台,单击 MySQL 实例绑定安全组的详情页。

72

  1. 选择入站规则,单击 [添加规则]。

73

您可以参考下图模版填写您允许访问的 IP 地址(段)及需要放通的端口信息(MySQL 内网端口),选择允许放通。

74

注意:

  • MySQL 内网默认端口为3306,同时支持自定义端口,若修改过默认端口号,安全组中需放通 MySQL 新端口信息。
  • 使用外网访问 MySQL 实例时,安全组入站规则需要放通 MySQL 实例的3306端口。
  • 使用外网访问 MySQL 实例时,需将外网客户端的 IP 地址加入安全组入站规中。

云数据库禁 ping 原因

问题描述

为防止云数据库不被 DDoS 攻击,MySQL 默认禁止使用 ping 命令来检查网络的连通性。

解决方案

建议您使用 telnet 命令来快速排查和定位网络连通性问题。

  • 命令格式如下

    1. telnet 内网/外网IP地址 内/外网端口
  • 执行命令后网络访问情况如下:

    • 网络访问正常的情况 75
    • 网络访问异常的情况 76

说明:

若使用 telnet 命令也无法连接,您可以使用 连接检查工具,来协助您轻松排查内、外网的连接问题。

控制台相关问题

如何重置 MySQL 的密码?

如何重置密码请参考 密码重置

MySQL 实例的存储空间是多少?

您可以在控制台的实例详情中查看实例的存储空间。 步骤1:登录腾讯云 管理控制台 ,进入管理中心后,在【云产品】模块单击【云数据库】,进入关系型数据库页面。

77

步骤2:在关系型数据库页面,单击【MySQL】下的【实例列表】,找到目标地域(此例中以广州为例)中待重置密码的 MySQL 数据库实例,单击【实例名】或者【管理】按钮,进入 MySQL 数据库管理页面。

78

步骤3:在 MySQL 数据库管理页面,实例详情中的配置信息,可以查看到实例的存储空间。

79

怎样查看 MySQL 数据表?

您可以登录云数据库 MySQL 管理控制台 ,选中目标实例,单击操作栏中的【登录】按钮,跳转到DMC数据管理工具,登录后单击【前往PMA】,来到 MySQL 数据库操作工具。在这里您可以查看对应数据库和表的结构,并且可以运行 sql 语句,如下图所示:

80

MySQL 的 max_connections 实例监控中这个数值始终显示为 1000,而不是实际的当前最大连接数。 实例监控中 max_connections 表示允许的最大连接个数,您可以自定义,最大取值 10240;【当前打开连接数】表示当前时刻实际的连接数,是个实时变化的值,具体如下图:

81

怎样才能知道 MySQL 实例的访问次数?

您可以在控制台的实例详情中查看实例的访问次数。 步骤1:登录腾讯云 管理控制台 ,进入管理中心后,在【云产品】模块单击【云数据库】,进入关系型数据库页面。

82

步骤2:在关系型数据库页面,单击【MySQL】下的【实例列表】,找到目标地域(以广州为例)中的目标 MySQL 数据库实例,单击【实例名】或者【管理】按钮,进入 MySQL 数据库管理页面。

83

步骤3:在 MySQL 数据库管理页面,实例详情中的配置信息,可以查看到实例的访问次数。

84

MySQL 的临时实例什么时间会有?

临时实例上线时,腾讯云会有公告通知,您可以关注 腾讯云官网

如何获知磁盘空间不足?

监控中心对云数据库的磁盘空间进行了监控,当云数据库的使用空间超过 90% 的时候就会触发短信和邮件告警,这里只需要在云监控中配置好对应的告警接收人(如何配置请参考 告警功能),当空间不足的时候就能收到告警。