# MySQL

微信云托管 MySQL 数据库是全 Serverless 架构的云原生数据库。开通即可使用，支持按实际计算和存储资源使用量收取费用。

当前支持 5.7/8.0 版本的 MySQL。

## 使用限制

- 不支持 MyISAM 引擎。
- MySQL 8.0 开通后不支持修改大小写敏感。
- 不支持从 MySQL 5.7 原地升级到 MySQL 8.0，需要注销后重新开通。

## 使用规格

- 带宽：20Mbps
- 链接数（每分钟并发链接数）：10000
- CPS（每秒新建链接数）：1000
- QPS（每秒查询数）：1000

## 开通

[微信云托管控制台-MySQL](https://cloud.weixin.qq.com/cloudrun/mysql)，首次进入 MySQL 页面会显示开通弹窗内容。

输入数据库密码后，点击「确定」即可开通使用 MySQL 数据库；

![](https://res8.wxqcloud.qq.com.cn/wxdoc/40276567-18e9-4629-b4bc-d268da656da1.png)

- 数据库开通后，会创建出 3 个系统数据库用于创建系统表，预计占用数据库 28 M 内存，将额外产生 0.01/月的费用；
- 微信云托管不会存储数据库密码，请妥善保管，如忘记重置密码即可；
- 数据库开通需要几分钟，请耐心等待；

![](https://res8.wxqcloud.qq.com.cn/wxdoc/e5e04936-40ec-4d1a-a936-40b7fd8a2932.png)

## 数据库管理

点击数据库页面中的「数据库管理」按钮，页面将跳转至[数据库管理页面](https://dms.cloud.tencent.com/#/login)，将自动带入相关实例信息，输入密码即可登录；

你可以按照正常的 MySQL 数据库使用方式对其进行调配，既可以通过上述 WEB 控制台管理，也可以通过数据库页面中显示的外网地址（开启时）链接本地的数据库管理软件操作。

需要注意，因为此 MySQL 是 Serverless 架构，所以在登录时，必须将数据库活跃，否则将会报错，第一次报错时会自动触发活跃，你只需要稍等一会儿再次尝试即可成功登录。

## 账号管理

MySQL 可创建 3 个账号，root 账号不支持删除及编辑；

### 1. 新建账号

开通成功后，进入数据库账号管理及数据库信息页面，点击「新建账号」，弹窗显示需配置内容；

![](https://res8.wxqcloud.qq.com.cn/wxdoc/3ff59f63-2610-4d96-959f-ebfeb0802713.png)

可按权限范围及主机内容分配账号角色，新建完成后，将在账号列表中显示该条账号信息；

创建账号需要的信息描述如下：

- 账号名：自定义 3-16 个字符，由字母、数字和特殊字符组成；以字母开头，字母或数字结尾；特殊字符为_
- 主机：账号允许登录的 IP 地址，如果无限制则填 `%` ，多个 IP 由 `,`、`;`、`|`、`空格`、`换行`分隔
- 权限：数据库相关权限，根据自己的需要进行配置
- 密码：8-64 个字符，包含大小写英文字母、数字和符号任意三种
- 备注意：用于自己的备注信息

``` bash
主机设置：
主机地址支持单个 IP 形式的地址，也支持填入%（表示不做 IP 范围限制）。
示例1：填入%，表示不做 IP 范围限制，即允许所有 IP 地址的客户端使用该账号访问数据库。
示例2：填入10.5.10.%，表示允许 IP 范围在10.5.10.%内的客户端使用该账号访问数据库。
```

### 2. 重置密码

选择对应的账号点击「重置密码」，输入新的密码，保存即可；

### 3. 编辑账号

非 root 账号支持编辑账号，可修改主机、权限及备注内容；

- root 账号不支持编辑，默认拥有所有主机的所有权限；

## 网络信息

- 内网地址：内网访问 MySQL 数据库的 IP 及端口。同一个环境下的云托管服务和数据库天然在同一个 VPC（或内网互联）内，可以内网调用。
- 外网地址：可在外网通过该外网地址访问当前数据库。**开放数据库外网地址有安全风险，不建议开启。请自行评估风险，微信云托管对此不提供保障与赔偿。**
- 网络：VPC 及子网

## 参数设置

数据库开通后会有默认参数信息，如果默认设置不满足你的要求，可以在控制台自行设定。

目前支持的参数信息如下，其他信息请在工单联系我们。

|参数名|描述|
|---|---|
|character_set_server|字符集|
|event_scheduler|开启 event 定时任务|
|lower_case_table_names|大小写敏感，8.0 版本不支持|
|max_connections|最大连接数|
|sql_mode|sql 模式|

> 注意：以上参数目前只能手动在控制台进行操作，不支持执行 SQL 语句设置。

![](https://res8.wxqcloud.qq.com.cn/wxdoc/f0b53db3-6312-44ab-b3c2-9deb9b52f8bd.png)

**注意：8.0 版本中，大小写敏感参数不支持配置。**

开通数据库选择 8.0 版本，需要选择是否大小写敏感，选定创建数据库成功后，不支持修改。

针对这种情况，我们建议你如下处理，请选择任意一种执行：

1. 选择用 5.7 版本的，开通 8.0 则需要注销后重新开通 5.7
2. 更改表名为大小写不混合的。
3. 直接用腾讯云的 TDSQL-C，配置在与云托管服务同一 VPC（或内网互联）下即可，具体可以参考[这里](/minigame/dev/wxcloudrun/src/scene/deploy/otherres)

## 数据库信息

- 数据库架构：数据库采用了存算分离的模式，在云托管环境所在地域的随机单可用区内部署实例，没有多 AZ 特性；
- 数据库版本：目前支持 MySQL 5.7 版本和 MySQL 8.0 版本，通过模板一键部署开通的环境，默认选择的是 MySQL 5.7 版本；选定数据库版本后不可修改，需要注销数据库后重新开通；
- 自动暂停：数据库默认在 10 min 内无连接和 CPU 使用将自动进入暂停状态，暂停后计算将不再计费，但存储仍然按实际使用量计费；关闭后，数据库将保持持续运行，无连接和 CPU 使用时按最小 CCU 算力进行计费。
- 数据库存储使用量：显示当前数据库已使用多少存储；也可以在[资源监控](https://cloud.weixin.qq.com/cloudrun/analysis/usage)中进行查看；
- 算力：计算单位为 CCU，1 个 CCU 近似等于 1 个 CPU 和 2GB 内存的计算资源；算力范围为 0.25-16 个 CCU（即最大可等效于使用 16 核 32GB 的数据库实例），可按业务实际需求自动伸缩，无需人工干预；
- 字符集：utf8

## 常见问题

### 1. 部署日志/业务日志中出现报错信息“CynosDB serverless instance is resuming, please try connecting again.” 什么意思？怎么处理？

MySQL 开启了「自动暂停」功能，则连续 10 分钟没有收到任何数据库请求以及没有登录访问过数据库（比如通过数据库管理工具），则会将数据库暂停运行（已存储的数据不受影响），等到下一次接收到数据库请求或数据库登录操作，再重新启动数据库。

目前数据库的冷启动还需要耗费一定时间（我们正在持续优化性能），在数据库启动还未完成的时候，请求数据库有概率返回这个报错。等数据库启动完毕，报错即会消失。

数据库暂停期间，CCU 使用量为 0，数据库存储持续消耗。

处理方式可任选一种：

- 关闭 MySQL「自动暂停」功能，彻底避免冷启动。这可能会带来更多的 CCU 资源使用，在无任何数据库请求的情况下也会以 0.25 的最小算力消耗资源。
- 在代码中增加兜底逻辑，如果收到这个报错，则再次重试发送请求，直至成功。

### 2. 如何进行数据库备份和回滚

微信云托管目前没有集成备份服务，如果有备份需求可以前往[腾讯云控制台](https://console.cloud.tencent.com/dbs/overview)建立备份计划。

### 3. 如何查看 8.0 版本数据库是否开启大小写敏感？

进入数据库实例，执行命令行 `show VARIABLES like "lower_case_table_names"`

![](https://res.wx.qq.com/op_res/Ao-PxSoNMtQNCprE0ZHt5inpWdz2Vs115pui2AAmpqN7g2yyhq9KNrvurWYa9Acn8NVfnfdF6bVY9byDnW7cuQ)

### 4. 数据库事务隔离级别是什么？

云托管 MySQL 数据库引擎是 innoDB，支持 4 种隔离级别，业务可按需自行操作，[参考文档](https://www.cnblogs.com/fengzheng/p/12557762.html)

### 5. 5.7 版本数据库修改大小写敏感的数据库参数，一直修改不成功怎么办？

需要先将数据库中所有的库表统一修改为小写或者大写，然后再次修改参数进行保存才可生效。
