疑难解答-问题-mysql-replication-1

最常见的MySQL操作之一是在主服务器和从服务器之间复制数据库。 虽然大多数这样的连接都很容易建立和维护,但有时也会出错:例如,一些主数据可能无法在从设备上复制,或者读请求可能被路由到主设备而不是服务器。 寻找复制失败的解决方案有时需要一些额外的检测工作。

复制是MySQL和任何其他数据库中最基本的操作之一。 它用于将数据从一个数据库服务器(主服务器(复制到一个或多个其他服务器(从服务器(。 该过程通过允许在多个从服务器之间分配读取负载和限制主服务器写入负载来提高性能。

复制的其他好处是通过从属备份的安全性;分析,可以在不影响主机性能的情况下sqlserver数据库同步 对从机执行;和广泛的数据分发,这是在不需要访问主机的情况下完成的。 (有关复制的更多信息,请参见MySQL参考手册。)

与数据库管理的任何其他方面一样,复制并不总是按预期进行。 《MySQL参考手册》的“复制故障排除”部分指导您在复制出现问题时检查错误日志中的消息。 如果错误日志没有为您指出解决方案,请通过发出一条语句来确保在主服务器中启用二进制日志记录。 如果启用,则非零;如果不是,请确保主服务器正在运行该选项。

该手册提供了其他几个复制故障排除步骤:

  • 主服务器和从服务器都必须以选项开始,并且每个服务器都必须有唯一的标识值;
  • 运行以确保和值都是。
  • 运行并查看状态列,以验证从机是否连接到主机;
  • 如果一条语句在主服务器上成功,但在从服务器上失败,核心选项是执行完全数据库重新同步,这需要删除从服务器的数据库并从主服务器复制一个新的快照。 (MySQL手册中描述了几种不太激烈的替代方案。)

当MySQL显示主从连接正常,但是主服务器上的一些数据没有被复制到从服务器上时,你会怎么做? 这是2010年3月的一篇堆栈溢出帖子中描述的情况。

疑难解答-问题-mysql-replication-1

即使复制配置正确,数据也不会从主机复制到从机。 来源:堆栈溢出。

第一步是在主数据库上运行或,为从数据库获取正确的值。 上面的从机状态表示从机已连接到主机并正在等待日志事件。 同步正确的日志文件位置应该会恢复复制到从机。

为了确保良好的同步,停止主机,转储数据库,记录主日志文件位置,重新启动主机,将数据库导入从机,并以正确的主日志文件位置在从机模式下启动从机。

2014年3月的另一篇堆栈溢出文章介绍了一个使用JDBC驱动程序的主/从设置,其中标记为只读的事务仍在探查主设备。 由于MySQL JDBC驱动程序管理到物理服务器(主服务器和从服务器)的连接,连接池和Spring事务管理器并不知道数据库连接正在链接到多个服务器。

解决方案是将控制权返回给Spring,之后将提交连接上的事务。 事务调试消息将指示查询将被路由到从属服务器,只要连接处于只读模式。 通过在连接返回到池之前重置连接,只读模式被清除,最后的日志消息将显示查询现在被路由到主服务器。