AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 19521
Accepted
Jon Seigel
Jon Seigel
Asked: 2012-06-20 12:59:39 +0800 CST2012-06-20 12:59:39 +0800 CST 2012-06-20 12:59:39 +0800 CST

大规模的点对点复制拓扑?

  • 772

我们有一个客户,它在地理上分布在偏远社区,每个物理位置之间的网络/互联网连接有些不可靠。有一个中央位置和 52 个卫星位置。

通常,我们的应用程序部署为一个中央解决方案,其中只有一个数据库,所有位置都连接到一个数据库。数据本身由大多数表中的位置列进行分区(一些数据是集中式的),并且应用程序运行使得在一个物理位置接触数据不会接触到另一个物理位置的数据,包括集中式数据(至少,我们很确定它不会——如果是这样,那很可能是一个错误)。我们的客户想做集中报告(我们通常支持),并在整个企业中同步几个集中配置表(同样,因为通常只有一个表副本)。

每个位置都有自己的数据中心,并获得 SQL Server 2008 R2 Enterprise 的许可。

目标是部署我们的应用程序,使网络/互联网连接中断不能阻止本地读/写操作,因为我们的应用程序是关键任务。


我的第一个想法是使用一个巨大的点对点拓扑来复制数据库中的每个对象。我无法找到任何使用这种方法进行如此大规模扩展的任何安装的文档或参考资料,所以我不知道它在技术上是否可行,如果可行,将需要什么硬件。这是否适用于集中式分发数据库(为了便于管理)?这甚至是一个好主意吗?如何部署数据库架构更改?索引维护是否会产生大量的网络开销?

还可以选择创建一个自己滚动的解决方案,我认为这将涉及将数据库的单独副本(每个非中心位置仅包含其数据的分区部分)的日志传送到中心位置,然后使用用于创建报告数据库的合并工具(我们已经拥有)。配置表更改将由其他机制推出,可能是合并复制,可能是自制解决方案。

我考虑并测试了在整个数据库上使用合并复制,但我们需要大量的数据库和应用程序更改/重新设计/等。为了使这项工作正常进行,因此由于时间限制,我已经排除了这一点。(对此有什么想法?)


我在这里寻找的是有更多经验的人的一些指导。显然,为此做好计划至关重要。我在正确的道路上吗?还有其他选择吗?(网址?)

sql-server sql-server-2008-r2
  • 2 2 个回答
  • 1459 Views

2 个回答

  • Voted
  1. Best Answer
    Remus Rusanu
    2012-06-20T19:41:30+08:002012-06-20T19:41:30+08:00

    对于仅仅 52 个客户端站点,复制就可以了。将您的本地副本视为“主”站点,并始终让应用程序仅在本地副本上运行。使用复制将数据聚合到中央存储库以进行聚合报告。索引维护操作通常不会产生复制流量。通过应用程序部署迁移管理架构更改,即。每个发布版本都有升级脚本。

    随着站点数量的增加,管理复制变得越来越困难。许可也将推动在外围部署 Express。当涉及复制时,SQL Server 升级绝对是一件痛苦的事情,因为升级组件(发布者、分发者、订阅者)的顺序很关键,但很难与许多站点协调。我所知道的 +1500 个站点的部署使用基于 Service Broker 的自定义数据移动。有关示例,请参阅使用 Service Broker 而不是复制。我什至看到过使用 Service Broker 将新位(应用程序更改)推送到外围的设计,这些新位(应用程序更改)反过来又在激活时部署迁移和架构更改,从而使整个部署从中心运行。

    • 6
  2. Aaron Bertrand
    2012-06-20T18:09:29+08:002012-06-20T18:09:29+08:00

    为什么只有一个数据库?似乎让每个位置在本地为自己的读/写操作和自己的数据切片保留数据库模式的副本会更有意义,并且可以集中复制数据的报告部分。站点 A 是否有任何理由必须将其非报告数据提供给站点 B,反之亦然?可以使用多种技术将报告数据分发回中心位置,包括自己动手(如果您想了解更多信息,我有一些经验)。或者,如果报告数据是大部分数据大小,您可以只使用日志传送或 copy_only 备份,保留整个数据库的副本,并在多个数据库恢复时使用视图或其他技术进行集中报告。

    架构更改很容易。我在以前的工作中处理了很多这个问题,我们有大约 500 个具有相同架构的数据库。部署更改的关键是确保更改向后兼容。如果您可以构建一个不会破坏一个数据库的脚本,您可以编写一个循环将这些更改部署到 n 个数据库/服务器/环境。我们使用 Red Gate 来构建基于 beta 和生产之间的比较的部署脚本,然后sp_msforeachdb在每个实例上自行开发(因为您不能信任内置的 - 请参阅此处和此处)。还可以很好地混合源代码控制。

    在这种情况下,我不确定索引维护会如何导致网络开销。索引维护只应在源上进行,如果可以避免,则不应“重放”。

    • 3

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何查看 Oracle 中的数据库列表?

    • 8 个回答
  • Marko Smith

    mysql innodb_buffer_pool_size 应该有多大?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    从 .frm 和 .ibd 文件恢复表?

    • 10 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve