我是MySQL的新手,我正在找出使用它进行在线热逻辑备份的最佳方法mysqldump
. 此页面显示此命令行:
mysqldump --single-transaction --flush-logs --master-data=2
--all-databases > backup_sunday_1_PM.sql
Run Code Online (Sandbox Code Playgroud)
但是......如果你仔细阅读文档,你会发现:
在
--single-transaction
转储正在进行时,为了确保有效的转储文件(正确的表内容和二进制日志位置),其他任何连接都不应使用以下语句:ALTER TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE
.一致读取不会与这些语句隔离,因此在要转储的表上使用它们会导致SELECT
执行者mysqldump
检索表内容以获取不正确的内容或失败.
那么,有没有办法防止这种可能的转储损坏情况?即可以暂时阻止这些语句的命令.
PS:关于这个主题的MySQL错误条目http://bugs.mysql.com/bug.php?id=27850
DNS循环(DRR)允许进行廉价的负载平衡(分配是一个更好的术语).它具有允许无限水平缩放的优点.问题是,如果其中一个Web服务器出现故障,即使DNS实现了故障转移,一些客户端仍会继续使用损坏的IP几分钟(最小TTL 300秒)或更长时间.
硬件负载平衡器(HLB)透明地处理此类Web服务器故障,但无法无限扩展其带宽.还需要热备件.
一个好的解决方案似乎是在一组HLB对前面使用DRR.每个HLB对永远不会停机,因此DRR永远不会让客户端失灵.另外,当带宽不足时,您可以向该组添加新的HLB对.
问题:DRR在HLB对之间随机移动客户端,因此(AFAIK)会话粘性不起作用.
我可以避免使用会话粘性,但它更好地使用缓存,因此我想保留.
问题:是否可能/存在HLB实现,其中实例可以与其他实例共享其(sessionid,webserver)映射?
如果可以,则客户端将由路由请求的HLB独立路由到同一Web服务器.
提前致谢.
我在build.gradle上有这个:
testCompile(group: 'junit', name: 'junit', version: '4.+')
Run Code Online (Sandbox Code Playgroud)
决议为:
junit:junit:4.+ -> 4.12-beta-1
Run Code Online (Sandbox Code Playgroud)
我不想使用beta版本,但同时我想使用动态版本。在这种情况下,我想依靠4.11。
可能吗?怎么样?
注意:Maven“版本”插件-如何从响应中排除alpha / beta版本?有一个Maven的答案,但我不确定如何在Gradle中翻译。
corruption ×1
dns ×1
gradle ×1
gslb ×1
junit ×1
maven ×1
mysql ×1
mysqldump ×1
persistence ×1
session ×1