13

我对 MySQL 复制可以做什么有相当好的感觉。我想知道还有哪些其他数据库支持复制,以及它们与 MySQL 和其他数据库相比如何?

我会问的一些问题是:

  1. 复制是内置的,还是附加组件/插件?
  2. 复制如何工作(高级)?MySQL 提供基于语句的复制(以及 5.1 中的基于行的复制)。我对其他数据库的比较感兴趣。什么是通过电线运送的?更改如何应用于副本?
  3. 是否容易检查主从之间的一致性?
  4. 让失败的副本与主服务器同步有多容易?
  5. 表现?我讨厌 MySQL 复制的一件事是它是单线程的,并且副本通常难以跟上,因为 master 可以并行运行许多更新,但副本必须串行运行它们。其他数据库中是否有类似的陷阱?
  6. 任何其他有趣的功能...
4

10 回答 10

8

MySQL 的复制很弱,因为需要牺牲其他功能来获得完整的主/主支持(由于受支持的后端的限制)。

PostgreSQL 的复制很弱,因为只支持内置的主/备用(使用日志传送);更强大的解决方案(例如 Slony 或 Londiste)需要附加功能。存档日志段通过网络传输,这些记录用于确保独立数据库在不干净的启动时处于工作、一致的状态。这就是我目前正在使用的,我们已经完全自动化了重新同步(以及设置和其他功能)。这些方法都不是完全同步的。自 PostgreSQL 8.5 起将内置更完整的支持。日志传送不允许数据库不同步,因此不需要进程来测试同步状态;使两个数据库重新同步涉及在主服务器上设置备份标志,rsyncing 到从站(数据库仍在运行;这是安全的),并使用备份过程中生成的存档日志取消设置备份标志(并重新启动从站进程);我的商店有这个过程(与所有其他管理任务一样)自动化。性能不是问题,因为除了做其他工作之外,master 必须在内部重放日志段;因此,从属服务器的负载将始终低于主服务器。

Oracle 的 RAC(它不是正确的复制,因为只有一个存储后端——但是您有多个前端共享负载,并且可以在该共享存储后端本身中构建冗余,所以这里值得一提)是一个多主机方法比其他解决方案更全面,但非常昂贵。数据库内容不是“通过网络传送的”;相反,它们被存储到共享后端,所有相关系统都可以访问该后端。因为只有一个后端,所以系统不会不同步。

Continuent 提供了一个第三方解决方案,可以进行完全同步的语句级复制,并支持上述所有三个数据库;但是,他们产品的商业支持版本并不是特别便宜(尽管便宜得多。上次我管理它时,Continuent 的解决方案需要手动干预才能使集群恢复同步。

于 2008-09-26T22:20:40.023 回答
5

我对 MS-SQL 2005(发布者)和 SQLEXPRESS(订阅者)与海外合并复制有一些经验。以下是我的评论:

1 - 复制是内置的,还是插件/插件?

内置

2 - 复制如何工作(高级)?

不同的复制方式,从快照(在订阅者级别提供静态数据)到事务复制(每个 INSERT/DELETE/UPDATE 指令在所有服务器上执行)。合并复制仅复制最终更改(在复制期间将立即对同一记录进行连续更新)。

3 - 检查主从之间的一致性是否容易?

我从来没有做过的事...

4 - 让失败的副本与主服务器同步有多容易?

基本的重新同步过程只是双击一个....但是如果您有 4Go 数据要通过 64 Kb 连接重新初始化,除非您对其进行自定义,否则这将是一个漫长的过程。

5 - 性能?

嗯......你当然会在某个地方遇到瓶颈,即连接性能、数据量,或者最后是服务器性能。在我的配置中,用户只写入订阅者,所有订阅者都使用主数据库 = 发布者进行复制。然后,该服务器永远不会被最终用户请求,其 CPU 严格专用于数据复制(到多个服务器)和备份。订阅者专用于客户端和一个复制(发布者),这在最终用户的数据可用性方面给出了非常有趣的结果。发布者和订阅者之间的复制可以一起启动。

6 - 任何其他有趣的功能......

有一些预期,可以在不停止复制过程的情况下继续开发数据库......表(以间接方式),字段和规则可以添加并复制到您的订阅者。

具有主要发布者和多个订阅者的配置可能非常便宜(与其他一些相比......),因为您可以在订阅者端使用免费的 SQLEXPRESS,即使在运行合并或事务复制时也是如此

于 2008-10-06T13:37:06.790 回答
4

试用Sybase SQL Anywhere

于 2008-10-06T13:43:55.980 回答
4

只需添加 SQL Server 的选项(尤其是 SQL 2008,它现在具有更改跟踪功能)。需要考虑的是 Microsoft 的Sync Framework。那里有一些选择,从基本的中心辐射型架构(如果您有一个单一的中央服务器和有时连接的客户端),一直到点对点同步,这让您能够做更高级的事情与多个“主”数据库同步。

您可能要考虑使用此方法而不是传统复制的原因是您可以从代码中获得更多控制权,例如,您可以在更新/更新、更新/删除、删除/更新、插入/插入冲突的同步过程中获取事件并根据业务逻辑决定如何解决它们,如果需要,将冲突数据的丢失者存储在某个地方以进行手动或自动处理。查看本指南,以帮助您确定不同的复制和/或同步方法的可能性。

对于热心的程序员来说,同步框架足够开放,您可以让客户端通过 WCF 连接到您的 WCF 服务,该服务可以抽象任何后端数据存储(我听说有些人正在尝试使用 Oracle 作为后端)。

我的团队刚刚发布了一个大型项目,该项目涉及多个 SQL Express 数据库,通过 WAN 和 Internet(在某些情况下是慢速拨号连接)同步来自中央 SQL Server 数据库的数据子集,并取得了巨大成功。

于 2008-10-23T04:25:35.430 回答
3

MS SQL 2005 标准版及更高版本具有出色的复制能力和工具。看一眼:

http://msdn.microsoft.com/en-us/library/ms151198(SQL.90).aspx

可以说是相当有能力了。您甚至可以将 SQL Server Express 用作只读订阅者。

于 2008-09-26T21:41:10.647 回答
2

数据库调用复制有很多不同的东西。并非所有这些实际上都涉及复制,而且那些确实以截然不同的方式工作。一些数据库支持几种不同的类型。

MySQL 支持异步复制,这对于一些事情来说是非常好的。但是,也有弱点。基于语句的复制与大多数(任何?)其他数据库所做的不同,并且并不总是导致预期的行为。仅非生产就绪版本支持基于行的复制(但与其他数据库的做法更一致)。

每个数据库都有自己的复制方式,有些涉及插入其他工具。

于 2008-10-01T19:46:40.880 回答
1

有点离题,但您可能想查看 Maatkit 以获取有助于 MySQL 复制的工具。

于 2008-09-27T13:30:16.793 回答
0

所有主要的商业数据库都有不错的复制 - 但有些比其他数据库更不错。IBM Informix Dynamic Server(版本 11 和更高版本)特别好。它实际上有两个系统 - 一个用于高可用性(HDR - 高可用性数据复制),另一个用于分发数据(ER - 企业复制)。Mach 11 功能(RSS - 远程独立辅助和 SDS - 共享磁盘辅助)也非常出色,在 11.50 中更是如此,您可以写入 HDR 对的主要或辅助。

完全披露:我在 Informix 软件上工作。

于 2008-09-27T05:23:50.553 回答
0

我自己没有尝试过,但您可能还想研究 OpenBaseSQL,它似乎内置了一些简单易用的复制功能。

于 2009-01-09T14:43:54.593 回答
-1

另一种方法是在虚拟化环境中运行。我认为这篇博客文章中的数据很有趣

http://chucksblog.typepad.com/chucks_blog/2008/09/enterprise-apps.html

它来自 EMC 高管,所以显然,它不是独立的,但实验应该是可重现的

这是特定于 Oracle 的数据

http://oraclestorageguy.typepad.com/oraclestorageguy/2008/09/to-rac-or-not-to-rac-reprise.html

编辑:如果你运行虚拟化,那么有办法让任何东西复制

http://chucksblog.typepad.com/chucks_blog/2008/05/vmwares-srm-cha.html

于 2008-09-26T21:29:12.347 回答