哪个数据库对复制具有最佳支持

时间:2008-09-26 21:22:26

标签: mysql sql-server database postgresql replication

我对MySQL复制可以做的事情有相当好的感觉。我想知道其他数据库支持复制,以及它们与MySQL和其他数据库的比较?

我会遇到一些问题:

  1. 是内置复制还是加载项/插件?
  2. 复制如何工作(高级别)? MySQL提供基于语句的复制(以及5.1中基于行的复制)。我对其他数据库的比较感兴趣。什么通过电线发货?如何将更改应用于副本?
  3. 检查主设备和从设备之间的一致性是否容易?
  4. 将故障副本与主服务器同步恢复是多么容易?
  5. 性能?我讨厌MySQL复制的一件事是它是单线程的,并且副本经常无法跟上,因为master可以并行运行许多更新,但副本必须以串行方式运行它们。在其他数据库中有没有这样的问题?
  6. 任何其他有趣的功能......

10 个答案:

答案 0 :(得分:8)

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

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

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

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

答案 1 :(得分:5)

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

1 - 是否内置了复制,还是附加/插件?

内置

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

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

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

我从未做过的事......

4 - 将故障副本与主服务器同步恢复是多么容易?

基本的重新同步过程只需双击即可....但如果你有4Go数据通过64 Kb连接重新初始化,除非你自定义它,否则它将是一个漫长的过程。

5 - 表现?

嗯......您当然会遇到瓶颈,包括连接性能,数据量或最终服务器性能。在我的配置中,用户只写入订阅者,这些订阅者都使用main database = publisher进行复制。然后,该服务器永远不会被最终用户所吸引,并且其CPU严格专用于数据复制(到多个服务器)和备份。订阅者专注于客户端和一个复制(发布者),这为最终用户的数据可用性提供了非常有趣的结果。发布者和订阅者之间的复制可以一起发布。

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

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

主发布者和​​多个嫌疑人的配置非常便宜(与其他人相比......),因为即使在运行合并或事务复制时,您也可以使用免费的SQLEXPRESS(即使在运行合并或事务复制时)

答案 2 :(得分:4)

答案 3 :(得分:4)

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

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

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

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

答案 4 :(得分:3)

MS SQL 2005 Standard Edition及更高版本具有出色的复制功能和工具。看看:

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

非常有能力。您甚至可以将SQL Server Express用作只读用户。

答案 5 :(得分:2)

数据库CALL复制有很多不同的东西。并非所有这些实际上都涉及复制,以及那些以完全不同的方式工作的复制。有些数据库支持几种不同的类型。

MySQL支持异步复制,这对某些事情非常有用。但是,存在缺陷。基于语句的复制与大多数(任何?)其他数据库的复制不同,并不总是导致预期的行为。基于行的复制仅由非生产就绪版本支持(但与其他数据库的执行方式更为一致)。

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

答案 6 :(得分:1)

有点偏离主题,但您可能需要检查Maatkit以获取有助于MySQL复制的工具。

答案 7 :(得分:0)

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

完全披露:我在使用Informix softare。

答案 8 :(得分:0)

我自己没有尝试过,但您可能也想查看OpenBaseSQL,它似乎有一些简单易用的内置复制。

答案 9 :(得分:-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