Mysql八小时断连问题及事务超时、自动重连、回滚等设置

以下内容来源于Mysql官网操作手册

https://dev.mysql.com/doc/refman/8.0/en/preface.html

MySQL server has gone away错误的最常见原因是服务器超时并关闭了连接。
对于这种情况,通常会获得以下错误代码(所获得的错误代码取决于操作系统)

错误代码及描述
CR_SERVER_GONE_ERROR:客户端无法向服务器发送问题。
CR_SERVER_LOST:客户端写入服务器时并没有收到错误,但是没有得到问题的完整答案(或任何答案)。

默认情况下,Mysql如果没有任何操作,服务器将在8小时后关闭连接。
可在启动mysqld时通过设置wait_timeout 的值来更改时间限制。

  1. wait_timeout
    命令行格式:–wait-timeout=#
    类型:Integer
    默认值:28800
    最小值:1
    最大值(其他系统):31536000
    最大值(Windows):2147483

服务器在关闭非交互式连接之前等待的时间(秒)。

在线程启动时,session的 wait_timeout值是根据全局的wait_timeout值 interactive_timeout初始化时的值来定义的,具体取决于客户端的类型(在 mysql_real_connect()使用CLIENT_INTERACTIVE选项)。

  1. interactive_timeout
    命令行格式:–interactive-timeout=#
    类型:Integer
    默认值:28800
    最小值:1

关闭交互式连接之前服务器等待的时间(秒)。
交互式客户端定义为在 mysql_real_connect()使用CLIENT_INTERACTIVE选项。


Mysql事务超时、自动重连等设置

  1. slave_transaction_retries
    命令行格式:–slave-transaction-retries=#
    类型:Integer
    默认值:10
    最小值:0
    最大值(64-bit platforms):18446744073709551615
    最大值(32-bit platforms):4294967295

对于单线程或多线程,可通过设置SQL从线程的最大次数,在停止前自动重试连接失败的事务。
设置此变量将立刻对所有复制通道(包括正在运行的通道)生效。
此变量默认值为10。将变量设置为0将禁用事务的自动重试。

  1. innodb_lock_wait_timeout
    命令行格式:–innodb-lock-wait-timeout=#
    类型:Integer
    默认值:50
    最小值:1
    最大值:1073741824

InnoDB 事务在放弃之前等待行锁定的时间长度(秒)。默认值为50秒。
发出以下错误前,尝试访问被另一个InnoDB事务锁定的行的事务最多等待此时间(秒),才能发出对该行的写操作访问权限。

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

发生锁定等待超时,将回滚当前语句 (不是整个事务)。
要使整个事务回滚,可使用–innodb-rollback-on-timeout 启动服务器 。

对于高交互程序或OLTP系统,可以降低此值,以快速显示用户反馈或后续处理队列中的更新操作。
可为长时间运行的后端操作增加此值,例如:数据仓库中等待其他大型插入或更新操作的转换步骤。

innodb_lock_wait_timeout适用于 InnoDB行锁。
MySQL 表锁不会在InnoDB内部发生并且此超时不适用于表锁。

  1. innodb_rollback_on_timeout
    命令行格式:–innodb-rollback-on-timeout[={OFF|ON}]
    类型:Boolean
    默认值:OFF

InnoDB 默认情况下,仅回滚事务超时状态时的最后一条语句。
如果 --innodb-rollback-on-timeout被指定开启,则事务超时会引起 InnoDB中止并回滚整个事务。

注意
如果启动事务的语句是 START TRANSACTION或BEGIN 语句,则回滚不会取消该语句。
导致更多的SQL语句成为事件中的一部分,直到COMMIT, ROLLBACK或其他导致隐式提交的SQL语句出现。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值