标签: data-synchronization

同步两个不同位置的两个 MySQL 数据库

我有两个相同的 MySQL 数据库,一个在内部服务器中,另一个在网络托管服务器中。我想每天使用内部服务器上的数据库更新 Web 主机上的数据库。有没有办法自动化这个过程,我该如何手动完成?如果我要手动完成,是否需要我在内部服务器上获取数据库的 SQL 转储,然后将其导入到 Web 主机上的数据库中?有人可以请教。

mysql data-synchronization

30
推荐指数
2
解决办法
16万
查看次数

在 SQL Server 中同步两个数据库

我有两个 SQL Server 数据库。一个是客户端(Windows 应用程序),第二个是在服务器上。我想每隔一段时间(例如每 2 分钟!)同步这两个数据库。

我已经阅读了不同的同步方式,如复制、时间戳、使用触发器的日志表、Microsoft 同步框架等。

实际上,我不喜欢使用可能是黑匣子(如复制)的同步方法,因为我不希望在更新 SQL Server 特定表并将它们与服务器同步时被阻止。

  1. 你认为我应该在这种情况下使用哪种方法?请记住,每隔几分钟我必须从客户端向服务器发送几个表更改,并从服务器获取两个表更改。

  2. 我发现了一种奇怪但新颖的方法。是否有可能我在客户端记录所有已执行的(对于特定的首选)存储过程,并将它们与它们的参数一起发送.sql到服务器并在那里执行它们?同样的事情也会发生在服务器上并发送到客户端。你认为这是一个简单而有用的方法吗?

  3. 如果可以,请给我建议任何有用的方法。非常感谢。

编辑:请记住,这是一个实时同步,这使它很特别。这意味着当客户端用户使用该表时,与服务器的同步过程必须每隔几分钟发生一次,因此不必锁定任何表。

sql-server data-synchronization

17
推荐指数
2
解决办法
8万
查看次数

使用触发器进行同步

我有一个类似于之前讨论的要求:

我有两张桌子,[Account].[Balance]并且[Transaction].[Amount]

CREATE TABLE Account (
      AccountID    INT
    , Balance      MONEY
);

CREATE TABLE Transaction (
      TransactionID INT
     , AccountID    INT
    , Amount      MONEY
);
Run Code Online (Sandbox Code Playgroud)

当对[Transaction]表进行插入、更新或删除操作时,[Account].[Balance]应根据[Amount].

目前我有一个触发器来完成这项工作:

ALTER TRIGGER [dbo].[TransactionChanged] 
ON  [dbo].[Transaction]
AFTER INSERT, UPDATE, DELETE
AS 
BEGIN
IF  EXISTS (select 1 from [Deleted]) OR EXISTS (select 1 from [Inserted])
    UPDATE [dbo].[Account]
    SET
    [Account].[Balance] = [Account].[Balance] + 
        (
            Select ISNULL(Sum([Inserted].[Amount]),0)
            From [Inserted] 
            Where [Account].[AccountID] = [Inserted].[AccountID]
        )
        - …
Run Code Online (Sandbox Code Playgroud)

trigger sql-server transaction acid data-synchronization

11
推荐指数
1
解决办法
5159
查看次数

横向扩展 SQL Server 并在多台机器上同步数据

我没有数据库架构方面的专业知识,而且我每天都在自学新东西。我想制作一个使用 SQL Server 作为数据存储的 Internet 规模的应用程序。我还没有在网上找到任何关于横向扩展 SQL Server 的好信息。

我的理解是横向扩展对写入吞吐量很有好处,但不一定能扩展读取。一个简单的例子(在我的情况下是相关的)是,如果数据是通过发布用户 ID 进行分片的,那么居住在分片 A 中的用户 X 发布的状态 1 将在整个联盟中拥有它的所有喜欢和评论。所以,如果我需要获取关于这个状态的评论,我需要点击每个数据库并在应用程序内存中合并和排序/过滤结果。这对数据库不利,因为它们一直很忙,对 Web 服务器不利,因为我将使用 CPU 和 RAM 对对象进行后处理。理想情况下,我想写入一个数据库并从一个数据库中读取以获得最大的可扩展性。

现在,我想做的是,不是通过发布用户 ID 进行分片,而是通过接收用户 ID 进行分片。因此,如果用户 X 发布状态 1,居住在分片 B 中的用户 Y 可以在分片 A 中插入评论,我可以在状态和评论之间强制执行父子关系。居住在分片C的用户Z可以在分片A中为评论插入一个赞,这样评论等就可以构成亲子关系。这种方法的好处是我只查询一个数据库来获取特定状态的所有评论和喜欢,而不是天真地查询每个分片。

但是,我需要得到诸如“男性或 18 岁以上的人对状态 1 的评论”之类的结果。这是我想要实现的一个关键功能。我仍然需要点击其他数据库来获取有关用户的信息。为了消除这种情况,我正在考虑创建一个同步组,其中一个数据库(集线器)将所有用户增量同步到所有分片(每 5 分钟)。我对最终一致性没问题,尽管它有自己的问题,例如,如果用户删除他们的帐户,从删除帐户到增量持久化到分片的时间,其他用户将看不到可能添加的更改子对象到该用户创建的对象。在我看来,这似乎是一个数据完整性问题。

我也知道通过复制和缓存来增加读取吞吐量。

我的问题是,我应该采用哪种方法?如果我选择第二个,我会在数百或数千台服务器之间同步数据吗?更不用说集线器本质上是单点故障。

sql-server data-synchronization sharding

7
推荐指数
1
解决办法
3232
查看次数

即时同步多个 SQL 服务器

首先,如果这是重复的,我很抱歉。我找不到解决这个特定问题的人,或者我在阅读时可能没有意识到这一点。很可能我使用了错误的搜索短语,因为我对术语并不十分熟悉。

我们有3台服务器:

一个。SQL服务器

。警报系统

Ç。网站+API+其他

服务器BC必须一直连接到服务器A,并且出现了几次宕机的情况,导致了很多客户的不满。


我们想要以下内容:(不同的字母使评论更容易,尽管可能不是 :p )

w ^。报警系统(带 SQL 服务器)

。网站 + API(带 SQL 服务器)

网站+ API(带 SQL 服务器)

Z。其他(使用 SQL 服务器)

编辑: XY在技​​术上是相同的,但X通常会托管网站,而我们的应用程序和 3rd 方解决方案通常会连接到服务器Y上的 API ,以确保仅通过一个渠道感觉到故障。如果X崩溃,那么Y将同时为网站和 API 提供服务,直到X重新上线,反之亦然。

同步 SQL 服务器至关重要。如果客户端通过网站(服务器X)对数据库进行更改,然后激活警报系统W(更改很重要),那么它必须已经同步。

每个系统只使用部分数据库和表,为了节省资源,我们只能立即同步重要数据,每隔几个小时左右就可以同步其余数据。 编辑:不是一个选项


我们将在所有服务器上使用SQL Server 2014(除非有人说服我)

  • 我们是否需要任何 …

sql-server data-synchronization sql-server-2014

7
推荐指数
1
解决办法
3547
查看次数

有没有办法确定在 AlwaysOn AG 辅助副本的重做队列中的数据类型?

执行任何 DMV 还是有另一种方法来公开重做队列中正在同步到辅助副本的数据类型?(例如,它是表数据和哪个表,还是索引更改和哪些索引等?)

replication sql-server availability-groups data-synchronization sql-server-2016

7
推荐指数
1
解决办法
281
查看次数

适用于非常不稳定(电源明智)网络的最佳数据库复制技术

我是一个小型网络(500 个用户)的一部分,他们都通过 WiMax 相互连接。连接到该网络的人们居住在大约 70 公里的半径范围内。该网络允许大约 1.5 MB/s 的传输速度。我们正在使用一个使用 Mysql 数据库的网站。我们都生活在南非,目前正在经历一种称为减载的现象。由于南非目前正经历电力短缺,因此市政当局将电力转移到特定地区以节省电力。

我们想为这个有问题的网站设置一个数据库复制网格。在减载的情况下,不会发出电源故障警告,因此可以假设服务器将突然关闭。

任何人都可以推荐一种数据库设置和复制类型,以便在发生减载后实现无缝同步?我们希望两台服务器都具有写访问权限,以防其中一台服务器出现故障,用户仍然可以连接到在线服务器。

所以简而言之: - 在数据库不一致的情况下无缝/简单/自动同步。- 足够快,不会删除整个数据库,并从代理主服务器重新下载。- 能够以 1.5MB/s 的带宽限制保持同步。- 没有数据丢失。两台服务器必须完全同步。

数据库的其他一些技术细节: - 每分钟平均处理 250 次查询。- 数据库大小为 1 GB。

我已经阅读了有关 Master-Master 同步的信息,但也读到它在突然关闭时不是很可靠,对于低带宽应用程序也不是很可靠。有没有人对这样的设置有想法。

mysql replication data-synchronization

6
推荐指数
1
解决办法
622
查看次数

使用存储过程同步 MS SQL Server 2014 和 Express 2014 数据库

我有 C# windows 窗体应用程序,并且在 MS SQL Server(对于主用户)和 SQL Express(对于客户端)上都有相同的数据库架构。我的每个客户端的数据库大小约为 2 GB。

我想每天同步一次这个数据库。在 MS SQL Server 2008 中,我们使用了 RMO,但在 SQL Server 2012 中不推荐使用 RMO API

有什么好的建议或例子然后参考它。我是数据库操作的新手,所以我对此不太了解。

sql-server data-synchronization sql-server-2014

6
推荐指数
1
解决办法
439
查看次数

合并复制同步很慢

我遇到了一个无法预料的问题,sub 掉线了(一般错误,可能是连接问题),现在我重新连接了 sub,它的重新同步速度非常慢。它似乎下载了大约 1000 个更改,然后在那里放置了大约一个小时,然后再添加 1000 个。

子快照

任何想法为什么这会如此缓慢?这只是一个几十人的桌子,我觉得这不会在星期一之前赶上(当我有用户打算上网时)。

任何帮助表示赞赏!谢谢!

更新

它现在已经运行了超过 24 小时,并且正在慢慢地咀嚼记录,但速度仍然非常缓慢。它现在在上面的镜头和“使用订阅者分配的分区 ID 枚举过滤文章中的更改”之间切换。是的,有一个过滤器,但自从我第一次设置复制以来它就一直存在,以前从未引起过问题。

第二次更新

当我进入复制监视器时出现错误:

The replication agent has not logged a progress message in 10 minutes. This might indicate an unresponsive agent or high system activity. Verify that records are being replicated to the destination and that connections to the Subscriber, Publisher, and Distributor are still active.

但奇怪的是,系统活动为零,并且我在此发布上有另一个订阅者工作,以及从同一发布者到同一订阅者的辅助复制工作正常。我试过停止和重新启动,拍摄并应用新的快照,但似乎没有任何效果。没有阻塞的进程,没有死锁的活动查询或我能想到的任何其他检查。

要清楚:

  • 出版物 A => Sub 1: WORKING
  • 出版物 A => Sub 2: NOT WORKING
  • 出版物 B => Sub 1: …

performance sql-server merge-replication data-synchronization

5
推荐指数
1
解决办法
4045
查看次数

MongoDB 复制:进入维护模式,正在进行 10333 个其他维护模式任务

我有一个需要重新同步的 MongoDB 实例。

2016-11-07T11:59:23.330+0000 I REPL     [ReplicationExecutor] syncing from: x.x.x.x:27017
2016-11-07T11:59:23.354+0000 W REPL     [rsBackgroundSync] we are too stale to use x.x.x.x:27017 as a sync source
2016-11-07T11:59:23.354+0000 I REPL     [ReplicationExecutor] could not find member to sync from
2016-11-07T11:59:23.354+0000 E REPL     [rsBackgroundSync] too stale to catch up -- entering maintenance mode
2016-11-07T11:59:23.354+0000 I REPL     [rsBackgroundSync] our last optime : (term: 20, timestamp: Oct  4 07:41:29:1)
2016-11-07T11:59:23.354+0000 I REPL     [rsBackgroundSync] oldest available is (term: 20, timestamp: Oct 17 02:13:33:5)
2016-11-07T11:59:23.354+0000 I REPL     [rsBackgroundSync] …
Run Code Online (Sandbox Code Playgroud)

mongodb maintenance data-synchronization mongodb-3.2

5
推荐指数
1
解决办法
2529
查看次数