首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysqldump: Error 2013:转储表时查询期间与MySQL服务器的连接丢失

mysqldump: Error 2013:转储表时查询期间与MySQL服务器的连接丢失
EN

Ask Ubuntu用户
提问于 2019-01-17 10:18:42
回答 1查看 5.6K关注 0票数 2

最近,我试图让一个奴隶通过ssh数据库转储工作。

我有discart,因为我喜欢选择我喜欢同步的数据库。

为了使从数据库工作,我使用了下一个脚本,它连接到主服务器,生成select数据库的转储并还原它:

代码语言:javascript
复制
#!/bin/bash

sql_error_check()
{
    if [ $? -ne 0 ]; then
        echo "ERROR at mysql command!"
        exit 1
    fi
}


DBS=( db1 db2 db3 db4 db5... )
PASSW="SuperSecurePass"

for i in ${DBS[*]}
do
    echo "- Deleting ${i}"
    mysql -p${PASSW} -e "drop database IF EXISTS ${i}"
    sql_error_check
    echo "- Creating ${i}"
    mysql -p${PASSW} -e "create database ${i}"
    sql_error_check
    echo "- Dumping & restoring ${i}"
    ssh -C root@master.hostname "mysqldump -p${PASSW} -q --max_allowed_packet=1024M ${i}" | pv | mysql -p${PASSW} ${i}
    sql_error_check 
done

似乎每件事都很完美,但在一些查询(巨大的alter )中,我得到了错误:

mysqldump: Error 2013:转储表时查询期间与MySQL服务器的连接丢失

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2019-01-17 10:18:42

解决办法很容易。这个问题是在转储通过ssh运河时发生的,像"alter“这样的操作正在运行,数据传输需要停止才能完成。连接等待新数据的时间是在my.cnf中定义的,时间非常短(默认情况下是30秒)。

要修复此错误,唯一需要的是修改mysql配置中的这两个参数:

代码语言:javascript
复制
net_read_timeout    = 3600 
net_write_timeout   = 3600

这将阻止连接获得超时并提示此错误。

由于docu,定义为:

在中止读取之前等待连接中的更多数据的秒数。当服务器从客户端读取时,net_read_timeout是控制何时中止的超时值。当服务器写入客户端时,net_write_timeout是控制何时中止的超时值。另见slave_net_timeout。

票数 2
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1110509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档