繁体   English   中英

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

[英]Which database has the best support for replication

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

我会遇到的一些问题是:

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

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

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

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

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

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

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

内置

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

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

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

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

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

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

5 - 表现?

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

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

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

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

尝试使用Sybase SQL Anywhere

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

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

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

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

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

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

它很有能力。 您甚至可以将SQL Server Express用作只读订阅者。

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

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM