Mysql/MaraDb 数据库同步超时设置

本文介绍在MySQL/MariaDB数据库同步过程中,如何通过调整超时参数避免因数据量过大导致的同步失败。详细解释了net_read_timeout、net_write_timeout、connect_timeout等参数的作用,并提供了设置示例。

在MySql/MaraDb数据库进行同步时,常常会因为数据量过大而导致同步

因此在进行同步时需对几个超时参数设置

执行如下语句查看相关超时参数设置:

SHOW GLOBAL VARIABLES LIKE '%timeout';

执行如下语句进行参数设置

SET GLOBAL net_write_timeout=28800;  
SET GLOBAL net_read_timeout=6000;  
SET GLOBAL connect_timeout=6000;  
SET GLOBAL long_query_time=100; 
SET GLOBAL wait_timeout=600000;

当然这里的参数值设置相对较大,可根据自己实际情况而定。

 

  • net_read_timeout / net_write_timeout

解释:这个参数只对TCP/IP链接有效,分别是数据库等待接收客户端发送网络包和发送网络包给客户端的超时时间,这是在Activity状态下的线程才有效的参数。
根据以上的解释,在对远端数据库同步的过程中,主要是这2个参数在起作用。

  • connect_timeout

解释:在获取链接时,等待握手的超时时间,只在登录时有效,登录成功这个参数就不管事了。主要是为了防止网络不佳时应用重连导致连接数涨太快,一般默认即可。

  • wait_timeout

解释: 默认值为28800(即8小时).在默认配置不改变的情况下,如果连续8小时内都没有访问数据库的操作,再次访问mysql数据库的时候,mysql数据库会拒绝访问。

 

  • long_query_time

 

解释:这句是记录超过给定值内的SQL执行语句 例如 long_query_time =1 则是记录1秒内的SQL执行语句

 

补充:

 

后来有次同步时遇到类似的问题,以上参数也设置了,就是出问题,原因是因为有张表中的数据太大导致,所以执行以下

set global max_allowed_packet = 2*1024*1024

 

解释:

当查询的结果集超过 max_allowed_packet 也会出现这样的报错。定位方法是打出相关报错的语句。用select * into outfile 的方式导出到文件,查看文件大小是否超过 max_allowed_packet ,如果超过则需要调整参数,或者优化语句。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值