华为云用户手册

  • 测试连通性并安装MySQL客户端 登录E CS 实例,请参见《弹性云服务器用户指南》中“Linux弹性 云服务器远程登录 (VNC方式)”。 在ECS上测试是否可以正常连接到 GaussDB (for MySQL)实例读写公网地址和端口,连接地址和端口通过查询需要连接的实例的公网IP地址获取。 telnet 读写公网地址 端口 如果提示command not found,请根据ECS使用的操作系统不同,自行安装telnet工具。 如果可以通信,说明网络正常。 如果无法通信,请检查安全组规则。 查看ECS的安全组的出方向规则,如果目的地址不为“0.0.0.0/0”且协议端口不为“全部”,需要将GaussDB(for MySQL)实例的读写公网地址和端口添加到出方向规则。 图6 ECS的安全组 查看GaussDB(for MySQL)的安全组的入方向规则,需要将ECS实例的弹性公网IP地址和端口添加到入方向规则。 在浏览器下载Linux系统的MySQL客户端安装包。建议您下载的MySQL客户端版本高于已创建的GaussDB(for MySQL)实例中数据库版本。 在下载页面找到对应版本链接,以mysql-community-client-8.0.21-1.el6.x86_64为例,打开页面后,即可下载安装包。 图7 下载 将安装包上传到ECS。 您可以使用任何终端连接工具(如WinSCP、PuTTY等工具)将安装包上传至ECS。 执行以下命令安装MySQL客户端。 rpm -ivh mysql-community-client-8.0.21-1.el6.x86_64.rpm 如果安装过程中报conflicts,可增加replacefiles参数重新安装,如下: rpm -ivh --replacefiles mysql-community-client-8.0.21-1.el6.x86_64.rpm 如果安装过程中提示需要安装依赖包,可增加nodeps参数重新安装,如下: rpm -ivh --nodeps mysql-community-client-8.0.21-1.el6.x86_64.rpm
  • 绑定弹性公网IP 在“实例管理”页面,选择目标实例,单击实例名称,进入实例的“基本信息”页面。 在“网络信息”模块,单击“读写公网地址”后面的“绑定”。 图1 绑定弹性IP 在弹出框的弹性公网IP地址列表中,选择目标弹性公网IP,单击“确定”,提交绑定任务。 如果没有可用的弹性公网IP,您可单击“查看弹性公网IP”,跳转到网络控制台创建弹性公网IP,创建完成后请返回实例的基本信息页面绑定弹性公网IP。 图2 选择弹性IP 在“网络信息”模块“读写公网地址”处查看绑定成功的弹性公网IP。
  • GaussDB(for MySQL)超大表删除索引有哪些风险 删除索引是一个风险很大的操作,建议非必要不删除索引,主要原因如下: 删除索引会导致使用该索引的查询操作性能下降,慢SQL占满系统资源,影响业务正常运行。 删除索引的过程中会导致表锁定,其他用户无法访问该表,影响系统可用性。 在删除索引的过程中,可能会丢失索引数据或者发生数据损坏,影响数据一致性。 删除索引后,一旦业务受到影响,需要重建索引,对于大表而言,该过程耗时会很长。 父主题: 数据库基本使用
  • 如何查看GaussDB(for MySQL)数据库的连接情况 您可以通过以下任意一种方式查看GaussDB(for MySQL)数据库的连接情况: 在GaussDB(for MySQL)实例上以管理员账户root执行以下命令,查看当前实例上正在运行的线程。 show full processlist; 图1 查询线程 Id:线程ID标识,可通过kill id终止语句。 User:当前连接用户。 Host:显示这个连接从哪个IP的哪个端口上发出。 db:数据库名。 Command:连接状态,一般是sleep(休眠),query(查询),connect(连接)。 Time:连接持续时间,单位是秒。 State:显示当前SQL语句的状态。 Info:显示这个SQL语句。 CPU_time:显示当前连接已经建立的时间。 在实例管理页面单击“查看监控指标”,进入指标信息页面。 图2 查看监控指标 查看“数据库总连接数”指标,一般情况下,主备实例会占用2个连接,除此之外的连接为当前实例有用户在连接使用。 图3 数据库总连接数 父主题: 数据库连接
  • GaussDB(for MySQL)跨区域内网能访问吗 跨区域内网默认不能访问,不同区域的云服务之间内网互不相通。您可以通过云连接或者VPN打通网络实现内网访问。 云连接:对于不同区域的VPC,不区分是否同一账号,都可以互连,跨区域连接实现全球云上网络。具体请参见跨区域VPC互连。 虚拟专用网络 VPN:基于Internet使用加密隧道将不同区域的VPC连接起来。具备成本低、配置简单、即开即用等优点。但它的网络质量依赖Internet。具体请参见通过VPN连接VPC。 父主题: 数据库连接
  • 设置指定用户的密码过期策略 创建用户的同时设置密码过期策略 create user 'script'@'localhost' identified by '*********' password expire interval 90 day; 创建用户后设置密码过期策略 ALTER USER 'script'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY; 设置密码永不过期 CREATE USER 'mike'@'%' PASSWORD EXPIRE NEVER; ALTER USER 'mike'@'%' PASSWORD EXPIRE NEVER; 设置密码遵从全局到期策略 CREATE USER 'mike'@'%' PASSWORD EXPIRE DEFAULT; ALTER USER 'mike'@'%' PASSWORD EXPIRE DEFAULT;
  • 如何将GaussDB(for MySQL)数据库备份到弹性云服务器上 您可以通过导出SQL语句的方式将数据库备份到弹性云服务器上。弹性云服务器不限制存放哪些数据,但是数据必须符合国家法律法规。您可以在弹性云服务器上存放数据库备份,但不建议将弹性云服务器作为数据库备份空间使用。 强烈推荐使用云数据库GaussDB(for MySQL)的自动备份和手动备份将备份数据存放到专业的 对象存储服务 上,以获得更高的数据可靠性和服务保障。 父主题: 备份与恢复
  • GaussDB(for MySQL)如何设置表名大小写敏感 表名大小写敏感可以通过在管理控制台或API创建数据库实例时指定。 已创建完成的实例不支持修改表名大小写敏感。 通过管理控制台的购买实例页面设置是否区分表名大小写。 图1 数据库设置 通过API创建数据库实例设置“lower_case_table_names”指定大小写是否敏感,默认值是“1”。详情请参考创建数据库实例。 取值范围: 0:表名称大小写敏感。 1:表名将被存储成小写且表名称大小写不敏感。 父主题: 数据库参数修改
  • 原因分析 查看查询变慢对应的时间段中,实例CPU监控指标并无飙升情况且使用率一直都较低,因此排除了CPU冲高导致查询变慢的可能。 图1 CPU使用率 分析对应时间段该实例的慢日志,该SQL执行快时其扫描行数为百万级,当SQL执行慢时其扫描行数为千万级,与业务确认该表短期内并无大量数据插入,因此推断执行慢是因为未走索引或选错索引。且通过EXPLAIN查看该SQL的执行计划确实是全表扫描。 图2 慢日志 在实例上对该表执行SHOW INDEX FROM检查三个字段的基数,。 图3 查看基数 可知基数最小的字段“query_date”在联合索引的第一位,基数最大的字段“group_id”在联合索引最后一位,而且原SQL包含对“query_date”字段的范围查询,导致当索引走到“query_date”就会停止匹配,后面两个字段已经无序,无法走索引。 所以该SQL本质上只能利用到对“query_date”这一列的索引,而且还有可能因为基数太小,导致优化器成本估计时选择了全表扫描。 业务重新创建了联合索引将“group_id”字段放在第一位,“query_date”字段放在最后一位后,查询耗时符合预期。
  • 主备机分别执行MATCH AGAINST语句后结果不一致的原因 MATCH (columnName) AGAINST ('keywords')用于检索MySQL的FullText index,其返回的结果是keywords在每一行的columnName列中的相关度。主机采用persistent方式获取统计信息,备机采用transient方式获取统计信息,获取表的统计信息中的行数字段(stat_n_rows)会存在一些误差,导致同一张表的统计信息的行数字段(stat_n_rows)在主备是不一样的,而 MATCH … AGAINST …的结果,也就是相关度的计算中使用了stat_n_rows,导致主备的MATCH … AGAINST …的结果不一致。 父主题: 数据库基本使用
  • 原因分析 查看监控指标“行锁花费时间”,监控到行锁等待时间较长,说明该系统出现过锁冲突的现象。 监控指标详细内容请参考查看监控指标。 登录实例,执行如下SQL,查看系统当前存在的长事务,以及事务持有的行锁信息。 select trx_mysql_thread_id, trx_id, trx_state, trx_started, trx_tables_locked, trx_rows_locked, trx_isolation_level, trx_query, trx_operation_state from information_schema.innodb_trx order by trx_started; information_schema.innodb_trx表包含了当前innodb内部正在运行的事务信息。 trx_started:表示事务的开始时间,用来判断当前事务是否是长事务,当前时间减去开始时间就是事务的执行时间。 trx_state :表示当前事务的状态,取值如下: RUNNING:运行。 LOCK WAIT:等待锁。 如果事务当前的状态是LOCK WAIT,即表示事务持有行锁。 ROLLING BACK:正在回滚。 COMMITTING:正在提交。
  • GaussDB(for MySQL)实例在空负载下CPU占用说明 GaussDB(for MySQL)实例上包括操作系统进程、mysqld进程、监控进程、增量备份进程等。mysqld进程包含多个线程比如主备通信线程、连接线程、刷新线程等。监控进程负责实时监控实例的状态,增量备份进程负责进行增量数据备份。因此在实例空载情况下,仍然有多个进程和线程在后台持续运行,CPU的占用率不会为0,通常空载时CPU占用率为10%~15%。 父主题: 数据库性能
  • 问题分析 主要从以下方面考虑: 排除数据库实例异常 例如:实例状态异常。 (常见)使用正确的客户端连接方式 内网连接需要GaussDB(for MySQL)与ECS实例在同一区域、VPC内。 公网连接需要购买或使用已有EIP,并对GaussDB(for MySQL)实例绑定该EIP 。 使用正确的SSL方式安全连接 界面SSL开关开启和关闭,分别对应不同的连接命令。例如: 开关开启:mysql -h 172.16.0.31 -P 3306 -u root -p --ssl-ca=/tmp/ca.pem 开关关闭:mysql -h 172.16.0.31 -P 3306 -u root -p 排除连接命令错误 例如:连接地址错误、端口参数错误、用户名和密码错误、SSL方式连接时参数配置错误、JDBC连接参数配置错误等。 (常见)排除网络不通 内网访问 确认ECS与GaussDB(for MySQL)是否在同一区域、VPC内。 检查安全组规则。 在ECS上测试是否可以正常连接到GaussDB(for MySQL)实例地址的端口。 公网访问 检查安全组规则。 检查网络ACL规则。 相同区域主机进行ping测试。 (常见)排除实例的连接数满的情况 实例连接数过多,可能会导致业务侧无法正常连接。 连接失败的常见报错 包含连接失败的常见报错,以及相应的解决方法。
  • GaussDB(for MySQL)支持导入哪些数据库引擎的数据 相同引擎数据库之间数据导入导出,称之为同构型数据库之间数据导入导出。 不同引擎数据库之间数据导入导出,称之为异构型数据库之间数据导入导出。例如,从Oracle导入数据到GaussDB(for MySQL)支持的数据库引擎。 异构型数据库之间由于格式不同,不支持直接导入导出。但只要导入导出的格式数据兼容,理论上,导入表数据也是可行的。 异构型数据库之间数据导入导出,一般需要使用Ugo或第三方软件,通过数据复制的方式来实现。比如,先使用工具从Oracle中,以文本的格式导出表记录,然后利用Load语句导入到云数据库GaussDB(for MySQL)支持的数据库引擎。 父主题: 数据库迁移
  • 如何防止任意源连接数据库 数据库开放EIP后,如果公网上的恶意人员获取到您的EIP DNS和数据库端口,那么便可尝试破解您的数据库并进行进一步破坏。因此,强烈建议您保护好EIP、DNS、数据库端口、数据库账号和密码等信息,并通过云数据库GaussDB(for MySQL)实例的安全组限定源IP,保障只允许可信源连接数据库。 为避免恶意人员轻易破解您的数据库密码,请按照云数据库GaussDB(for MySQL)实例的密码策略设置足够复杂度密码,并定期修改。 父主题: 网络安全
  • 导入Windows操作系统 单击“开始”,运行框输入“MMC”,回车。 在MMC控制台菜单栏中单击“文件”,选择“添加/删除管理单元”。 在“添加或删除管理单元”对话框,选择“可用管理单元”区域的“证书”。单击“添加”添加证书。 在“证书管理”对话框,选择“计算机账户”,单击“下一步”。 在“选择计算机”对话框,单击“完成”。 在“添加或删除管理单元”对话框,单击“确定”。 在MMC控制台,双击“证书”。 右键单击“受信任的根证书颁发机构”,选择“所有任务”,单击“导入”。 单击“下一步”。 单击“浏览”,将文件类型更改为“所有文件 (*.*)”。 找到下载的根证书ca.pem文件,单击“打开”,然后在向导中单击“下一步”。 您必须在浏览窗口中将文件类型更改为“所有文件 (*.*)”才能执行此操作,因为“.pem”不是标准证书扩展名。 单击“下一步”。 单击“完成”。 单击“确定”,完成根证书导入。
  • 使用GaussDB(for MySQL)要注意些什么 实例的操作系统,对用户都不可见,这意味着,只允许用户使用应用程序访问数据库对应的IP地址和端口。 对象存储服务(Object Storage Service,简称OBS)上的备份文件以及GaussDB(for MySQL)服务使用的弹性云服务器(Elastic Cloud Server,简称ECS),都对用户不可见,它们只对GaussDB(for MySQL)服务的后台管理系统可见。 查看实例列表时请确保与购买实例选择的区域一致。 申请GaussDB(for MySQL)后,您还需要做什么。 申请GaussDB(for MySQL)实例后,您不需要进行数据库的基础运维(比如高可用、安全补丁等),但是您还需要重点关注以下事情: GaussDB(for MySQL) 实例的CPU、内存等资源是否足够,如果资源不足需及时变更规格。 GaussDB(for MySQL) 实例的数据存储空间是否足够,如资源不足需及时扩容。(超出时会自动扩容,但超出部分是按需收费,价格比自行扩容贵)。 GaussDB(for MySQL)实例是否存在性能问题,是否有大量的慢SQL,SQL语句是否需要优化,是否有多余的索引或者缺失的索引等。 父主题: 产品咨询
  • 解决方案 通过查看慢SQL日志来确定是否存在运行缓慢的SQL查询以及各个查询的性能特征(如果有),从而定位查询运行缓慢的原因。 查询MySQL日志,请参见查看慢日志。 查看华为云GaussDB(for MySQL)实例的CPU使用率指标,协助定位问题。 请参见通过Cloud Eye监控。 创建只读节点专门负责查询。减轻主实例负载,分担数据库压力。 多表关联查询时,关联字段要加上索引。 尽量避免用select * 语句进行全表扫描,可以指定字段或者添加where条件。
  • GaussDB(for MySQL)的备份是如何收费的 云数据库GaussDB(for MySQL)的备份文件存储在对象存储服务上,不占用用户购买实例的存储空间,GaussDB(for MySQL)提供了和实例磁盘大小相同的免费存储空间,用于存放您的备份数据。 举个例子,假如用户购买实例时,存储空间选择了200GB,那么所有的备份空间合计,只有超过200GB才开始计费,前200GB是免费的。对于超过免费容量的存储空间,目前仅支持按需计费,用多少收取多少费用,具体收费请参见计费说明。 免费的存储空间是在收取了数据盘的存储空间费用后赠送的,数据盘存储空间冻结以后不再收费,因此不再享受备份赠送空间。 用户实例冻结后,将没有免费的存储空间,会导致实例原有自动备份收费。 如果选择解冻实例,将恢复免费的存储空间。 如果直接删除冻结的实例,原有的自动备份将会同时被删除,备份空间不会继续收费。 父主题: 备份与恢复
  • 关于max_connections max_connections:允许同时连接的客户端总数。如果设定值为default,表示该参数和数据库实例的内存(单位:GB)相关,计算公式如下: max_connections上限估计数值 = 节点可用内存 / 单个连接预估占用内存。 节点可用内存=总内存 - Buffer Pool占用内存 - 1GB(mysqld进程、操作系统、监控程序等)。 单个连接预估占用内存(single_thread_memory) = thread_stack(256KB) + binlog_cache_size(32KB) + join_buffer_size(256KB) + sort_buffer_size(256KB) + read_buffer_size(128KB) + read_rnd_buffer_size(256KB)= 大约1MB。
  • 大表高效创建索引的方法 对于千万或亿级大数据量的表,建议使用如下方法提升创建索引的效率。 索引字段尽量小。 选择区分度高的列作为索引列。 如果表中每个字段都无法保证唯一、无法保证NOT NULL,或者不适合做索引,推荐自定义一个ID自增列作为主键,自动满足有序插入。 需要创建索引时,建议先把数据插入完,再使用alter table add index的方式添加索引。 使用GaussDB(for MySQL)的并行DDL功能来创建索引。当数据库硬件资源空闲时,您可以通过并行DDL功能加速DDL执行,避免阻塞后续相关的DML操作,缩短执行DDL操作的窗口期。
  • 大表高效写入数据的方法 对于千万或亿级大数据量的表,建议使用如下方法提升数据写入效率。 删除不必要的索引。 更新数据时候,同时会更新索引数据。对于大数据量的表,避免创建大量的索引,影响更新速度。请根据业务评估,删除不必要的索引。 插入多条数据时,尽量选择批量插入。 因为批量插入只需要远程请求一次数据库。 示例如下: insert into tb1 values(1,'value1'); insert into tb2 values(2,'value2'); insert into tb3 values(3,'value3'); 优化为: insert into tb values(1,'value1'),(2,'value2'),(3,'value3'); 插入多条数据时,尽量选择手动控制事务插入 通过手动控制事务,可以将多条执行单元合并为一个事务,避免多个事务的开销,同时保证数据的完整性和一致性。 示例如下: insert into table1 values(1,'value1'),(2,'value2'),(3,'value3'); insert into table2 values(4,'value1'),(5,'value2'),(6,'value3'); insert into table3 values(7,'value1'),(8,'value2'),(9,'value3'); 优化为: start transaction; insert into table1 values(1,'value1'),(2,'value2'),(3,'value3'); insert into table2 values(4,'value1'),(5,'value2'),(6,'value3'); insert into table3 values(7,'value1'),(8,'value2'),(9,'value3'); commit; 合并的语句不能过多,过多时可能会出现大事务,导致表被长时间锁定。请根据业务评估,合理控制事务中的语句个数。 使用主键,在插入数据时,尽量选择主键顺序插入,选择使用AUTO_INCREMENT自增主键。 因为当主键乱序插入时,会产生“页分裂”,消耗性能。 示例如下: 主键乱序插入 : 6 2 9 7 2 主键顺序插入 : 1 2 4 6 8 尽量不要使用UUID做主键或者是其他自然主键,如身份证号。 每次生成的UUID之间无序,插入时为主键乱序插入,会产生“页分裂”,消耗性能。 业务操作时,避免对主键的修改。 修改主键后还需对索引结构进行修改,花费代价较大。 满足业务需求的情况下,尽量降低主键的长度。 不要使用外键来维护外键关系,通过程序来控制。 读写业务分离。读业务放到备库上,避免因IO导致插入慢。
  • GaussDB(for MySQL)提供root账号或super权限吗 GaussDB(for MySQL)提供的管理员账号为root账号,具有去除super、file、shutdown和create tablespace后的最高权限。 大部分的云数据库服务平台,都未给root账号提供super权限。因为一旦用户拥有了super权限,就可以执行很多管理性的命令,比如reset master,set global…,kill,reset slave等,这类操作很有可能导致GaussDB(for MySQL)出现不可预知的异常和故障。 对于需要使用super权限的场景,GaussDB(for MySQL)提供了服务化能力,也可以通过其他方法绕过super权限的限制。 示例1:有些用户喜欢登录数据库执行如下命令来修改参数,这在GaussDB(for MySQL)是被禁止的,您只能通过GaussDB(for MySQL)界面中的参数修改功能来实现。 set global 参数名=参数值; 如果您的脚本中包含set global命令导致super缺失,请删除set global命令,通过GaussDB(for MySQL)控制台的参数修改。 示例2:有些用户执行如下命令报错,这也是因为没有super权限导致的,只需要去除definer='root’关键字即可。 create definer='root'@'%’ trigger(procedure)… 如果您缺失super权限,可以使用mysqldump导入数据,请参考使用mysqldump迁移MySQL数据导入和导出数据。 父主题: 数据库权限
  • 解决方案 如果数据变化较多,表中实际数据量远小于自增主键的容量,则可以考虑将该表的数据全量导入新表,删除原表,然后rename将新表名改回原表名。(使用数据导入导出的方法有多种实现方法,此处仅举其中一种例子) 创建表auto_test5_tmp。 create table auto_test5_tmp(id tinyint not null AUTO_INCREMENT, name varchar(8), PRIMARY KEY (`id`)); Query OK, 0 rows affected (0.07 sec) 插入数据。 insert into auto_test5_tmp select 0,name from auto_test5; Query OK, 6 rows affected (0.01 sec) Records: 6 Duplicates: 0 Warnings: 0 查询表数据。 select * from auto_test5_tmp; +----+------+ | id | name | +----+------+ | 1 | A | | 2 | B | | 3 | C | | 4 | X | | 5 | Y | | 6 | Z | +----+------+ 删除表。 drop table auto_test5; 重命名。 rename table auto_test5_tmp to auto_test5; Query OK, 0 rows affected (0.12 sec) 如果自增主键的取值范围不够,则修改自增主键的字段类型。 alter table auto_test6 modify column id int NOT NULL AUTO_INCREMENT; Query OK, 6 rows affected (0.15 sec) Records: 6 Duplicates: 0 Warnings: 0
  • 场景描述 MySQL用户创建表失败,出现如下报错信息: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
  • 问题分析 查询确认后,发现消失的账号在mysql.user表中已经被删除,故控制台不再显示; 使用账号名和旧密码还能连接登录,说明使用的是delete from mysql.user方式删除用户。使用这种方式删除用户,需要执行flush privileges后,才会清理内存中相关数据,该用户才彻底不能登录。 使用delete from mysql.user方式删除用户,无法重新创建相应账户(报错ERROR 1396),原因是内存中相关数据仍然存在。
  • 场景描述 14点~15点之间数据库出现大量行锁冲突,内核中大量update/insert会话在等待行锁释放,导致CPU使用率达到70%左右,数据库操作变慢。 查看 CES 指标行锁等待个数、MDL锁数量,下图仅供参考: 发生死锁的表: ********* 1. row ********* Table: table_test Create Table: CREATE TABLE table_test( ... CONSTRAINT act_fk_exe_parent FOREIGN KEY (parent_id_) REFERENCES act_ru_execution (id_) ON DELETE CASCADE, CONSTRAINT act_fk_exe_procdef FOREIGN KEY (proc_def_id_) REFERENCES act_re_procdef (id_), CONSTRAINT act_fk_exe_procinst FOREIGN KEY (proc_inst_id_) REFERENCES act_ru_execution (id_) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT act_fk_exe_super FOREIGN KEY (super_exec_) REFERENCES act_ru_execution (id_) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
  • 默认选择方式 在创建数据库时,如果未显式指定库的字符集和字符序,则库的字符集和字符序采用character_set_server和collation_server参数的值;如果显式指定,则使用指定的字符集和字符序。 在创建数据表时,如果未显式指定表的字符集和字符序,则表默认字符集和字符序使用所在数据库的字符集和字符序;如果显式指定,则使用指定的字符集和字符序。 在创建数据表时,如果未显式指定字段的字符集和字符序,则字段使用所在表的字符集和字符序;如果显式指定,则使用指定的字符集和字符序。 示例1:不显式指定字符集、字符序的情况下创建数据库和数据表。 示例2:显式指定库的字符集、字符序的情况下创建数据库。 示例3:显式指定表的字符集、字符序的情况下创建数据表。 示例4:显式指定字段的字符集、字符序的情况下创建数据表。
  • 解决方案 ERROR 2013是MySQL常见错误,一般为配置错误导致。 “wait_timeout”:服务器关闭非交互连接之前等待活动的秒数。 “interactive_timeout”:服务器关闭交互连接之前等待活动的秒数。 查看实例状态是否处于正常状态。 经查看实例状态正常,继续排查其他问题。 查看错误日志。 使用MySQL命令行客户端连接数据库,执行status命令,确认数据库实例是否频繁重启。 Uptime代表实例的运行时间,从排查结果可知,数据库并没有频繁重启,因而,客户端连接被断开,不是因数据库重启引起的。 查看“wait_timeout”和“interactive_timeout”参数设置,MySQL会自动断开超时的空连接。 您可根据实际应用需求量,修改“wait_timeout”和“interactive_timeout”参数值,无需重启实例。 恢复结果确认,等到10分钟左右,再次执行show databases命令,确认连接是否正常。 如图所示,说明连接正常。
  • 场景案例 假定max_allowed_packet参数大小为1073741824。 创建表。 CREATE TABLE IF NOT EXISTS zstest1 ( id int PRIMARY KEY not null, c_longtext LONGTEXT ); 向表中插入数据。 insert into zstest1 values(1, repeat('a', 1073741800)); insert into zstest1 values(2, repeat('a', 1073741800)); insert into zstest1 values(3, repeat('a', 1073741800)); insert into zstest1 values(4, repeat('a', 1073741800)); insert into zstest1 values(5, repeat('a', 1073741800)); insert into zstest1 values(6, repeat('a', 1073741800)); insert into zstest1 values(7, repeat('a', 1073741800)); insert into zstest1 values(8, repeat('a', 1073741800)); insert into zstest1 values(9, repeat('a', 1073741800)); insert into zstest1 values(10, repeat('a', 1073741800)); 删除数据。 delete from zstest1; 执行查询语句。 select id from zstest1; //执行缓慢
共100000条