AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 546460
Accepted
Ed Manet
Ed Manet
Asked: 2013-10-17 07:38:41 +0800 CST2013-10-17 07:38:41 +0800 CST 2013-10-17 07:38:41 +0800 CST

从机脱机并再次联机后,MySQL 复制挂起

  • 772

我有一个主服务器和几个从服务器复制一个数据库。我在 SLES 11 中的 MySQL 5.0 中使用。在容错测试期间,我发现当从属设备的网络连接断开(拔下电缆)然后恢复时,复制挂起。它没有显示任何错误,并且从站似乎正在运行,但Read_Master_Log_Pos和Exec_Master_Log_Pos值与主服务器上的日志位置不匹配。

这Slave_IO_State是“等待主人发送事件”。

和Slave_IO_Running值Slave_SQL_Running都是“是”。

和Master_Log_File匹配Relay_Master_Log_File。

如果我停止并启动从属服务器或重新启动 mysql 守护程序,复制将再次开始工作。

关于我能做些什么的任何想法?

mysql
  • 1 1 个回答
  • 2224 Views

1 个回答

  • Voted
  1. Best Answer
    Michael - sqlbot
    2013-11-12T19:30:45+08:002013-11-12T19:30:45+08:00

    当 MySQL 从站连接到主站时,它会请求二进制日志流,并且主站会在发生时自动发送二进制日志事件,除非您使用半同步复制,否则不需要从站确认。

    从站不发起任何流量,除了由 TCP 堆栈处理的低级确认。连接中断(在堆栈的各个层,不限于未插入的电缆)可能会导致连接以多种方式中断,包括由于超时或 ICMP 不可达消息或状态防火墙而导致主设备的 TCP 堆栈断开连接在机器“忘记” TCP 会话并默默地丢弃后续数据包之间,从服务器静静地坐着等待来自主服务器的下一个数据包。

    这里的解决方案是全局变量slave_net_timeout。

    在从属设备认为连接断开、中止读取并尝试重新连接之前等待来自主设备的更多数据的秒数。

    这是在从站上配置的。当 slave 连接到 master 时,在请求 binlog 流之前,它要求 master 发送心跳事件,这些事件的格式类似于 binlog 事件并流式传输,就好像它们是 master 的 binlog 中的下一个事件一样,但实际上并不增加二进制日志位置计数器。它们在正常操作中基本上是零开销,因为它们不会被发送,除非主服务器没有为从服务器的一半slave_net_timeout设置(默认值;或您可以在 期间配置的另一个值CHANGE MASTER TO)生成新的 binlog 事件,因此心跳事件实际上只是当交通非常少时产生......所以据我所知,将这个值设置为低至几秒钟并没有任何真正的伤害。

    如果从站看到超时到期,它将关闭其连接并重新连接到主站。

    在master没有意识到slave已经离开的远程机会上,当slave重新连接时,master会关闭原来的连接,因为一个MySQL master在接受一个新的slave连接时,会检查另一个slave是否有相同的连接server_id已连接,如果是,则断开原始连接。顺便说一句,这就是为什么配置相同server_id(不受支持的配置)的两个从站无法成功保持连接到同一个主站的原因——一旦其中一个连接,就会导致另一个被碰撞,并且循环随之而来,每个从站强制断开另一个从站的连接。

    在 my.cnf 中将此变量设置为适当的低值并重新启动从站应该可以解决此问题。

    • 3

相关问题

  • 开源与专有关系 db mgt 系统的优缺点是什么?

  • 在 solaris 10 上为 mysql 设置 max_allowed_pa​​cket

  • 如何移动 MySQL 的数据目录?

  • 通过 VPN 连接什么是远程服务器 IP?

  • mysql崩溃

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve