- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 MySql 主/从复制问题,谷歌似乎无法回答。使用 com.mysql.jdbc.ReplicationDriver 时,驱动程序如何处理只读副本上的故障?它是否将它们列入黑名单,是否尝试继续尝试它们并每次抛出异常(在配置了任何超时之后)?根据我的测试,当我杀死只读副本时,我的应用程序似乎挂起。我正在使用 tomcat,这是我的 context.xml....
<Resource auth="Container"
driverClassName="com.mysql.jdbc.ReplicationDriver"
defaultAutoCommit="false"
initialSize="10"
minIdle="5"
logAbandoned="false"
maxIdle="10"
maxWait="10000"
name="jdbc/db"
removeAbandoned="true"
testOnBorrow="true"
removeAbandonedTimeout="86400"
testWhileIdle="true"
type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
username="powerptc"
password="password"
url="jdbc:mysql:replication://localhost:3306,host1,host2:3306/db?allowSlavesDownConnections=true&readFromMasterWhenNoSlaves=true"
validationQuery="/* ping */ SELECT 1"
validationQueryTimeout="5" />
有没有办法让驱动程序将失败的只读副本(x 分钟)列入黑名单,而不是一遍又一遍地重试?
最佳答案
在这种情况下,MySQL 驱动程序使用 LoadBalanced 驱动程序作为从属设备,并且仅当从 LoadBalanced 从属设备集群中选择连接失败时才切换到主设备。应用程序因 retriesAllDown = 120
的默认值而挂起。如果您设置 retriesAllDown = 4
,则负载均衡器将 sleep 4 次,持续 250 毫秒,然后再切换到主服务器。
默认情况下loadBalanceBlacklistTimeout = 0
,这意味着从站的负载均衡器不使用黑名单。即使你设置了loadBalanceBlacklistTimeout > 0,它也没有帮助,因为黑名单的实现很奇怪,如果所有主机都添加到黑名单中,则黑名单为空。但是您可以使用下一个技巧:使用ServerAffinityStrategy
并将主主机名添加到从属列表中,但仅将从属服务器设置为关联服务器。
我的工作网址是:
jdbc:mysql:replication://master:3306,slave1,slave2:3306/db?allowSlaveDownConnections=true&readFromMasterWhenNoSlaves=true&loadBalanceBlacklistTimeout=30000&retriesAllDown=4&loadBalanceStrategy=serverAffinity&serverAffinityOrder=slave1,slave2
结果,只有在没有可用的从属设备时才会使用主设备
关于java - Mysql ReplicationDriver - 故障处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44684544/
我有一个 MySql 主/从复制问题,谷歌似乎无法回答。使用 com.mysql.jdbc.ReplicationDriver 时,驱动程序如何处理只读副本上的故障?它是否将它们列入黑名单,是否尝试继
可以直接使用com.mysql.jdbc.ReplicationConnection和com.mysql.jdbc.ReplicationDriver来分割与复制数据源之一的只读连接当使用主从拓扑时?
我有一个 Spring 应用程序,它当前使用存储过程执行一些查询。配置是这样的: 数据源: DAO: public class Jd
我们使用 MySql 5.5.37 和 JBoss 7.1.3,以及 mysql-connector-java-5.1.22-bin.jar。我如何配置我的 JBoss 的 standalone.xm
我们正在使用 com.mysql.jdbc.ReplicationDriver 连接主/从。我们配置 transactionManager 如下。
我有一个使用 spring (4.2.9.RELEASE)、hibernate (5.1.3.Final) 和 mysql 复制驱动程序的 Web 应用程序,在 Tomcat 上运行。所有查询都将发送
我是一名优秀的程序员,十分优秀!