我用ReplicationDriver使用mysql主/从复制(写入主服务器并读取到从服务器).我的连接URL如下:
"jdbc:mysql:replication://master:3306,slave1:3307,slave2:3308/sampledb?allowMasterDownConnections=true"
Run Code Online (Sandbox Code Playgroud)
我使用Spring + Spring MyBatis模块.
我已将事务标记为readOnly,如下所示:
@Override
@Transactional(rollbackFor=Exception.class,readOnly=true)
public Sample getSample(SampleKey sampleKey) throws SampleException {
//Call MyBastis based DAO with "select" queries.
}
Run Code Online (Sandbox Code Playgroud)
但是当我看到事务/ db日志时,它表明即使是"readOnly"事务,ReplicationDriver也会首先命中master.注意"获取连接"和"释放JDBC连接"行.
为什么会这样?
1)无论是否为只读查询,JDBC驱动程序是否仍然"ping"master以检查它是否存在然后转到slave以进行实际查询?
2)如果readOnly = true,Spring是否设置了底层Connection对象的readOnly(true)?
2014-03-19 12:32:28,280 DEBUG [http-8080-2] [AbstractPlatformTransactionManager.java:365] - Creating new transaction with name [com.rakuten.gep.foo.businesslogic.impl.SampleBusinessLogicImpl.getSample]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly; '',-java.lang.Exception
2014-03-19 12:32:28,390 DEBUG [http-8080-2] [DataSourceTransactionManager.java:204] - Acquired Connection [jdbc:mysql://master:3306/, UserName=root@10.174.10.72, MySQL Connector Java] for JDBC transaction
CACHED DAO
Trying to retrive from the Cache
2014-03-19 12:32:31,334 DEBUG [http-8080-2] [Slf4jImpl.java:47] - ooo Using Connection [jdbc:mysql://slave1:3307/, UserName=root@10.174.10.72, …Run Code Online (Sandbox Code Playgroud) 我是CouchDB和PouchDB的新手,并且正在使用它来创建一个可以在移动和桌面设备上同步的联系人管理系统,并且可以脱机使用.我发现使用PouchDB比编写PHP/MySQL后端要容易得多.
我一直在成功使用它,当我在离线设备上做出相互矛盾的更改时,CouchDB使用一种算法随意挑选一个胜利者,然后将其正确地推送到所有设备.
我想要做的是实现自定义算法来合并冲突的记录.这是我想要使用的算法:
CouchDB的指南有一个很好的解释,但我不知道如何在连续复制期间使用PouchDB API实现它.根据PouchDB API,复制选项中有一个"onChange"侦听器,但我不明白如何使用它来拦截冲突.
如果有人可以写一个简短的教程,包括一些示例代码,我和我相信很多其他PouchDB用户会很感激!
有人可以建议检查pgsql复制状态的步骤,以及何时说复制没有正确进行?
我们使用pgsql9.0和pgsql9.4进行流复制
谢谢.
我正在研究ASP.NET Web API中的一个需求,它需要两个相同的数据库.
我在同一台服务器上创建了两个相同的数据库.假设一个用于开发,另一个用于测试.
我想立即将所有模式(如存储过程,视图和表)从另一个数据库复制到另一个数据库.
我并不担心数据复制,我只需要确保两个数据库具有完全相同的模式定义.
我已经尝试从一个数据库生成一个模式,并定期更新另一个.但现在,我想立即将更改复制到其他数据库.因此,当我更新开发数据库中的存储过程或视图时,也应立即对测试数据库应用相同的更改.
我要求你告诉我是否有可能或者是否有另一种方法来实现这一目标
database sql-server asp.net database-replication sql-server-2012
目前,我正在使用Vagrant 1.4.3与运行Unix(Centos)的VirtualBox一起用于我的开发服务器(使用MariaDB).
我自己没有设置盒子(因此我对设置它的知识有限)我基本上想做以下(如果可能的话)...
请注意,我可以理解,执行此操作的完整说明可能超出了StackOverflow的范围.
基本上我想:
例如,假设"数据库1"具有端口3306并且将是主设备,而"数据库2"具有端口4406将是从设备.我希望对数据库1所做的任何更改都自动"推送"到数据库2.
我以前从来没有这样做过.
关于此事的任何建议都会受到赞赏,我认为我不是唯一一个与mysql-replication斗争的人:)
如果它有帮助 - 我目前的流浪文件如下所示:
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Config Github Settings
github_username = "ACMEINC"
github_repo = "vagrant"
github_tag = "0.11"
github_path = "https://raw.github.com/#{github_username}/#{github_repo}/#{github_tag}/"
# Server Configuration
# Set a local private network IP address.
# See http://en.wikipedia.org/wiki/Private_network for explanation
# You can use the following IP ranges:
# 10.0.0.1 - 10.255.255.254
# 172.16.0.1 - 172.31.255.254
# 192.168.0.1 - 192.168.255.254
server_ip = "192.168.30.10" …Run Code Online (Sandbox Code Playgroud) database master-slave database-replication vagrant vagrantfile
我正在开发一个在客户端PC(Win)上运行的应用程序,它配置了一个MySQL服务器5.1实例,它将作为远程主机的只读从属设备.远程主服务器有几十个模式,但我每个客户端只需要一个模式,所以我在my.ini中提供了replication-do-db设置,只复制客户端需要的模式.复制工作正常,但是当我们的客户进入世界上只能通过3G无线接入互联网的地区时,他们会迅速超出数据计划限制并遇到昂贵的问题.
据我了解,MySQL将所有模式的所有事务写入单个binlog文件,这意味着每个客户端必须下载在主服务器上的每个模式上执行的所有事务,然后一旦下载,每次复制应用数据库过滤器 - 客户端的my.ini文件中的do-db设置.
为了最大限度地降低这种低效率,我采用了slave_compressed_protocol = 1设置,这似乎将传输的数据减少了50%,但仍然导致我们的客户端快速超过其数据限制,增加了3G账单.
我无法想象我是唯一一个面对这一点的人,所以我相信我会通过设置x = y来获得大量关于如何实现这一目标的答案.但是,我找不到任何关于这种设置的文档,也没有建议的方法.
到目前为止,我想到了一个可能的解决方案,请提供反馈或备用路线:
这应该导致客户端仅为其架构提取binlog数据.缺点(据我所知),它大大增加了我们设置的复杂性,可能使它更脆弱.
思考?这种方法会起作用吗?
注意,我们在RedHat上运行MySQL 5.0服务器,但是如果它产生解决方案我们可以升级到5.5.
我需要将来自多个服务器的不同 MySQL数据库复制到单个从属服务器中.如何才能做到这一点?对于每个主服务器,我是否需要在从属设备上使用单独的MySQL实例?或者有没有办法定义多个主主机?
我们基本上使用奴隶作为多个网站的热备份.我们应该考虑群集而不是复制吗?
我正在考虑将Java应用程序移植到.NET,该应用程序目前使用EhCache并且坚持要求它支持强一致性(http://ehcache.org/documentation/get-started/consistency-options).
我想用Redis代替EhCache,但Redis是否支持强一致性或仅支持最终的一致性?
我已经看过有关Redis集群的讨论,但我想这还有一段时间了.
或者我看错了吗?如果Redis实例完全坐在不同的服务器上并为两个前端服务器提供服务,那么在我们需要查看Master/Slave风格之前它有多大?
我们有几个生产的couchdb数据库已经爆发到30GB,需要进行压缩.这些由24/7运营网站使用,并使用连续复制与另一台服务器复制.
从测试开始,我们需要大约3分钟来压缩这些数据库.
在生产站点和复制仍在运行时,压缩复制的一面是否安全?
我为 RDS 实例创建了一个只读副本,AWS 是否自动处理负载平衡,或者需要在代码中进行其他配置或实现?如果有的话有参考吗?
编辑以获得更多说明 当我创建只读副本时,它将如何工作并处理请求?我问是因为它给了我一个端点,所以必须有一种实现才能正常工作,对吧?(与主 RDS 一起)
mysql ×3
couchdb ×2
database ×2
amazon-rds ×1
asp.net ×1
jdbc ×1
master-slave ×1
postgresql ×1
pouchdb ×1
redis ×1
replication ×1
spring ×1
sql-server ×1
vagrant ×1
vagrantfile ×1