目前我有两个运行MySQL的Linux服务器,一个位于我旁边的机架上,位于10 Mbit/s上传管道(主服务器)下,另一个位于几英里外的3 Mbit/s上传管道(镜像)上.
我希望能够连续在两台服务器上复制数据,但遇到了几个障碍.其中一个是,在MySQL主/从配置下,时不时地,一些语句掉落(!),意思是; 登录镜像URL的某些人看不到我知道的数据在主服务器上,反之亦然.假设这种情况每月发生在一个有意义的数据块上,所以我可以忍受它,并假设它是一个"丢包"问题(即上帝知道,但我们会补偿).
另一个最重要(也很烦人)反复出现的问题是,当由于某种原因我们在一端进行主要上传或更新(或重新启动)并且必须切断链接时,那么LOAD DATA FROM MASTER不起作用我有要在一端手动转储并在另一端上传,现在相当重要的任务是移动一些0.5 TB的数据.
有这个软件吗?我知道MySQL("公司")提供这是一项非常昂贵的服务(完整的数据库复制).那里的人做了什么?它的结构方式,我们运行自动故障转移,如果一台服务器没有启动,那么主URL就会解析到另一台服务器.
我正在尝试自己的第一个大型数据库项目.我在服务器1上有一个myisam mysql数据库,其中一个php应用程序消耗了大量的各种数据.我在服务器2上有mysql myisam,php应用程序选择并显示数据.
我想在服务器2上复制这些数据.
问题:
我尝试在Mongolabs中部署我的Mongo数据库,一切正常,我创建了一个新的数据库.请看我的连接字符串.
public DbHelper()
{
MongoClientSettings settings = new MongoClientSettings()
{
Credentials = new MongoCredential[] { MongoCredential.CreateCredential("dbname", "username", "password") },
Server = new MongoServerAddress("ds011111.mongolab.com", 11111),
//ConnectTimeout = new TimeSpan(30000)
};
Server = new MongoClient(settings).GetServer();
DataBase = Server.GetDatabase(DatabaseName);
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试连接数据库时,它显示的错误如下:
我正在为运行一堆数据库(每个客户端一个)的服务器设置复制,并计划在my.cnf上一直添加更多数据库,而不是:
binlog-do-db = databasename 1
binlog-do-db = databasename 2
binlog-do-db = databasename 3
...
binlog-do-db = databasename n
Run Code Online (Sandbox Code Playgroud)
我可以宁可拥有
binlog-ignore-db = mysql
binlog-ignore-db = informationschema
Run Code Online (Sandbox Code Playgroud)
(并且没有指定日志的数据库)并假设其他所有内容都已记录?
编辑:实际上,如果我删除所有binlog-do-db条目,它似乎记录了所有内容(正如您在移动数据库时看到的二进制日志文件更改位置),但在从属服务器上,没有任何东西被拾取!(也许,这是使用replicate-do-db的情况?这会破坏这个想法;我想我不能让MySQL自动检测要复制的数据库).
我面临以下挑战:
我在不同的地理位置有一堆数据库,网络可能会失败很多(我使用的是蜂窝网络).我需要保持所有数据库同步,但不需要实时.我正在使用Java,但我可以自由选择任何免费数据库.
关于如何实现这一点的任何建议.
谢谢.
我们使用Apache Solr(3.1.0)来索引为多个站点编写的大量文章.我们有一个主/从设置(底部的复制配置),其中服务器1索引文章,服务器2复制索引.奴隶应该每隔60秒轮询主人,但相反,我们/replication
几乎每次都能看到10到75个连续的呼叫.
每个Solr核心(${solr.core.name}
在从配置中)代表不同的站点./replication
我最看到的电话与最大的网站有关.其中一个核心每分钟只有1个呼叫,并且在调用update?commit=true
几次之后我已经能够在那里重现它,所以这让我认为它与主机执行的提交量有关.
所以我的问题是,如何阻止Solr奴隶复制索引几十次并迫使它每分钟复制一次?我尝试过使用commitReserveDuration
master配置中的参数,但我真的没有看到任何区别.
主复制配置:
<requestHandler name="/replication" class="solr.ReplicationHandler" >
<lst name="master">
<str name="replicateAfter">commit</str>
<str name="replicateAfter">startup</str>
</lst>
</requestHandler>
Run Code Online (Sandbox Code Playgroud)
slave replication config:
<requestHandler name="/replication" class="solr.ReplicationHandler" >
<lst name="slave">
<str name="masterUrl">http://${solr.master.server}/search/${solr.core.name}/replication</str>
<str name="pollInterval">00:00:60</str>
</lst>
</requestHandler>
Run Code Online (Sandbox Code Playgroud) I did a mistake when configuring replica sets in mongodb. I think that what I did wrong is that I did a rs.initialize() on both nodes, which made them confused in some way. I'm not sure.
Now all I want to do is start over, but I couldn't find a way to de-initialize a node. So I followed the advice to delete the local*db files, thus resetting the configurations. I did that, and now nothing works.
> rs.initiate()
{
"info2" …
Run Code Online (Sandbox Code Playgroud) 我们正在使用Amazon RDS,我们有一个MASTER复制到SLAVE.
我们想要创建一个新的slave,它只能从master中复制特定的数据库或表.
默认情况下,RDS只是将整个主数据库复制到从属数据库.但我们只想做特定的表格.我知道这在MySQL中是可能的,但我不确定RDS,我无法在任何地方找到答案.
这些设置存在于MySQL中,我没有在RDS的自定义参数设置中看到它们,除非我遗漏了什么.
--replicate-ignore-db=db_name
--replicate-ignore-table=db_name.tbl_name
Run Code Online (Sandbox Code Playgroud) 我最近设置了一个只读副本,以便从我的Amazon多可用区RDS实例中获取一些读取负载.亚马逊文档明确指出,"由您的应用程序决定如何在您的只读副本中分配读取流量".
有没有人想出一种可管理的方式来扩展只读副本?将我的应用程序的不同部分硬编码为从特定副本读取,似乎不是一个非常可扩展的解决方案.有没有办法设置它类似于将EC2实例放在负载均衡器后面?
replication ×10
mysql ×6
amazon-rds ×2
mongodb ×2
c# ×1
database ×1
distributed ×1
innodb ×1
java ×1
master-slave ×1
mlab ×1
myisam ×1
nosql ×1
oracle ×1
php ×1
solr ×1