可以说我有一个汽车数据库.我有制作和模特(FK制作).我打算让用户跟踪他们的汽车.每辆车都有FK到型号.现在,我有很多用户,我想分割我的数据库来分配负载.Makes和Models表不会发生太大变化,但需要跨分片共享.我的想法是使用从复制品和模型的主数据库到每个从数据库的MySQL复制.我的问题是:我可以安全地写入从数据库,假设我不写入主数据库上的那些表吗?
而在这个问题上,无论如何都要保证一个从数据库有最新的数据?例如,有人刚刚添加了"金牛座"制作,然后想要添加他们的汽车.我可以确保他们使用的从数据库具有最新的主数据吗?
mysql database replication database-design database-replication
MongoDB上限集合的基础是它们允许您设置表的最大大小,并且系统将在达到大小限制时清除旧数据.
有没有人想出PostgreSQL中的类似设置并在生产中使用它?
我有多个CouchDB服务器,我想彼此保持同步,我使用这些服务器共享大文件(例如> 100 MB).为了使它们保持同步,我让每个CouchDB实例从每个其他实例执行连续拉式复制.
这是一个例子:我有三个CouchDB服务器A,B和C,所有这些服务器都有相互连续的拉式复制,如下所示:
------- <------------- -------
| A | -------------> | B |
------- -------
^ | | ^
| | | |
| V | |
------- <---------------- |
| C | -------------------
-------
Run Code Online (Sandbox Code Playgroud)
有人将文档上传到服务器A,附件为500MB.B和C都开始从A复制文档,B在C完成之前完成复制:
------- doc -------
| A |--------------->| B |
------- -------
|
| doc
V
-------
| C |
-------
Run Code Online (Sandbox Code Playgroud)
我的问题是,然后C会开始从B复制相同的文件(因为C也有从B的连续拉式复制),而它仍然从A传输文件?
------- -------
| A | | B |
------- -------
| doc |
doc| |------------------
| |
V V
------- …Run Code Online (Sandbox Code Playgroud) rest replication synchronization couchdb database-replication
我在查找数据同步和复制之间的差异时遇到了麻烦.
据我所知,复制使两个数据库之间的所有数据都相同.同步不一定使两个数据库之间的所有数据相同.复制是一次性传输,同步可以是小型更新以保持数据一致吗?我不太确定,请在这里纠正我?
如果我要拥有一个存储多个移动数据的中央mySQL数据库,我的目标是保持手机中的数据与来自mySQL的数据(仅限某些用户数据)相同,那么是同步还是复制,还是两者兼而有之?它最初会获取所有用户数据(复制),然后在此之后发送任何更新的数据(同步)?
希望有人可以清理混乱,非常感谢!
我正在使用具有2个节点(主要和次要)和1个仲裁器(总共3个)的复制.有时我会在连接到数据库时出现"错误.错误:错误:找不到有效的replicaset实例服务器".我无法重现(因为它本身发生,有时非常频繁).我已经添加了server.on( 'error',)要调试的事件,但有时在我的本地环境中打印出类似于成员主机名的连接错误打印1(虽然我不知道它是否与我的问题有关).当我通过mongo shell连接到其中一个实例并检查rs.status()时,我得到了一切,所有成员都健康起来.
以上问题的Jira链接是:
我有设置复制:主 - 从.从服务器作为热备用,这意味着我们可以运行只读的sql查询.我怎么能看到奴隶服务器正在提供只读查询?
我正在运行一个由3个成员组成的传统MongoDB副本集(数据中心A中的member1,数据中心B中的member2和member3).member1是当前的PRIMARY,我正在添加成员2和3 rs.add().他们正在执行初始同步并很快成为SECONDARY.一切都很好,两个成员的复制延迟是0秒,直到凌晨2点.
现在:每天凌晨2点,两个成员都会进入RECOVERING状态并完全停止复制,这导致我rs.printSlaveReplicationInfo()在早上时间进行查看会导致数小时的复制延迟.凌晨2点左右,我没有大量的插入或维护任务.
我在PRIMARY上获得以下日志条目:
2015-10-09T01:59:38.914+0200 [initandlisten] connection accepted from 192.168.227.209:59905 #11954 (37 connections now open)
2015-10-09T01:59:55.751+0200 [conn11111] warning: Collection dropped or state deleted during yield of CollectionScan
2015-10-09T01:59:55.869+0200 [conn11111] warning: Collection dropped or state deleted during yield of CollectionScan
2015-10-09T01:59:55.870+0200 [conn11111] getmore local.oplog.rs cursorid:1155433944036 ntoreturn:0 keyUpdates:0 numYields:1 locks(micros) r:32168 nreturned:0 reslen:20 134ms
2015-10-09T01:59:55.872+0200 [conn11111] end connection 192.168.227.209:58972 (36 connections now open)
Run Code Online (Sandbox Code Playgroud)
而且,更有趣的是,我在两个SECONDARY上获得以下日志条目:
2015-10-09T01:59:55.873+0200 [rsBackgroundSync] repl: old cursor isDead, will initiate a new one
2015-10-09T01:59:55.873+0200 [rsBackgroundSync] replSet syncing …Run Code Online (Sandbox Code Playgroud) 我有一个主数据库,它将是由不同学校组成的云服务器.
仪表板类型,包含每所学校的详细信息.可以编辑他们的信息和其他数据.
现在,这些学校被部署到相应的学校位置,这将是本地服务器.
仪表板类型,只能编辑本地服务器中部署的特定学校.可以编辑他们的信息和其他数据.
现在我想要发生的是,cloud to local server如果某些事情发生了变化,就可以同步相应的学校.这也适用local to cloud server.
注意:如果您曾经尝试使用Evernote,可以在您正在使用的任何设备上编辑备注信息,并且在您拥有互联网或手动点击同步时仍能够同步.
当本地服务器没有互联网连接并在学校编辑了一些数据.一旦互联网启动,本地和云服务器的数据应该同步.
这就是我追求的逻辑.
有人会为我开始从哪里开始吗?我想不出任何适合我问题的解决方案.
我还想到使用php来遍历整个表格以及与当前日期和时间相对应的数据.但我知道那会很糟糕.
编辑:我删除了关于此事的其他SO问题的参考/帖子.
我找到的应用程序挂钩
服务器:
phpmyadmin不要挑剔,但希望答案是你正在与一个新手掌握到奴隶数据库进程.我没有这方面的经验.
我正在研究postgres复制流API.在努力工作时遇到了不寻常的行为.
当我使用复制槽在主块内写入整个代码时,一切正常.
public class Server implements Config {
public static void main(String[] args) {
Properties prop = new Properties();
prop.load(new FileInputStream(System.getProperty("prop")));
String user = prop.getProperty("user");
String password = prop.getProperty("password");
String url = prop.getProperty("url");
Properties props = new Properties();
PGProperty.USER.set(props, user);
PGProperty.PASSWORD.set(props, password);
PGProperty.ASSUME_MIN_SERVER_VERSION.set(props, "9.4");
PGProperty.REPLICATION.set(props, "database");
PGProperty.PREFER_QUERY_MODE.set(props, "simple");
Connection conn= null;
PGConnection replicationConnection= null;
PGReplicationStream stream = null;
conn = DriverManager.getConnection(url, props);
replicationConnection = conn.unwrap(PGConnection.class);
stream = replicationConnection.getReplicationAPI().replicationStream().logical()
.withSlotName("replication_slot")
.withSlotOption("include-xids", true)
.withSlotOption("include-timestamp", "on")
.withSlotOption("skip-empty-xacts", true)
.withStatusInterval(20, TimeUnit.SECONDS).start();
while (true) { …Run Code Online (Sandbox Code Playgroud) 我试图测量我的系统中的复制时间滞后。(postgresql 10.1)
pg_last_xact_timestamp()我在查询中使用,pg_last_receive_lsn()和函数的组合pg_last_replay_lsn()来检查滞后。
(以如何从此链接进行测量为例)
postgres=# SELECT now(), pg_last_wal_receive_lsn(), pg_last_wal_replay_lsn(), EXTRACT (EPOCH FROM now() - pg_last_xact_replay_timestamp())::INT;
now | pg_last_wal_receive_lsn | pg_last_wal_replay_lsn | date_part
----------------------------------+-------------------------+------------------------+-----------
2018-08-06 07:00:36.540959+05:30 | 4/99B84030 | 4/99B84030 | 223
Run Code Online (Sandbox Code Playgroud)
从第2列和第3列可以看出,最后的接收LSN和重放LSN是相同的,这意味着系统是同步的。但我无法理解到底是什么pg_last_xact_replay_timestamp()。它如何找出以秒为单位的复制延迟。我是否使用错误的方法来测量延迟(以秒为单位)?
postgresql ×4
replication ×4
mongodb ×3
mysql ×2
couchdb ×1
database ×1
java ×1
node.js ×1
php ×1
phpmyadmin ×1
rest ×1
sync ×1
time ×1