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 / 问题 / 33308
Accepted
Ali Razeghi - AWS
Ali Razeghi - AWS
Asked: 2013-01-22 16:36:56 +0800 CST2013-01-22 16:36:56 +0800 CST 2013-01-22 16:36:56 +0800 CST

确保在 SQL Server 2008/2012 复制读取时只访问新数据

  • 772

我正在为一家在各大洲都设有数据中心的全球分散公司设计横向扩展解决方案。超过 10,000 台服务器向洛杉矶的 SQL Server 集群报告,并查询它以执行某些任务。

正当理由

为了从集群、垂直扩展的问题以及由于许多节点之间的全球网络距离到洛杉矶集群而提高性能,我想在特定核心表上使用事务复制到订阅者(单发布多子)作为我的第一步,传播到世界各地。

有待解决的问题

如果出于某种原因数据超过 X 分钟(假设 10 分钟),我希望他们转到发布者(或另一个定义的服务器)并从那里读取它。如果首选实例不可用或过时,我想自动从发布者实例中获取数据。

我不确定执行此操作的最佳方法是什么,尤其是在数据“陈旧”的情况下。我知道我们有复制监控工具,但我如何使用它来了解数据是否过时并强制连接到另一台未过时的服务器?

原因是我担心某些问题需要 10 分钟以上才能解决,在此期间维护和自动配置等关键应用程序将获得过时数据,业务可能会受到很大影响。

可能的解决方案和问题:

将订阅者/发布者置于“只读”负载平衡器中,并让所有查询都去那里。

如果数据库服务器都在同一个数据中心,我可能会使用负载平衡器并将服务器从中拉出来,但这需要手动干预,我希望系统强制所有读取到发布者(或另一个订阅者)并绕过他们连接的订阅者。

但是,这不会解决陈旧数据的问题,例如复制落后并且需要一个小时才能修复。

修改代码以检查未完成的复制查询并相应地进行调整

这将需要对许多查询进行代码修改,而开发人员没有时间这样做,而且这听起来不像是一个非常合理的想法。

如果未复制 X 个查询,则查询复制状态并自动更改连接字符串

我应该能够在 Powershell 中执行此操作,但大多数服务器都是 Linux,因此它们需要一个“应用程序”来查询复制状态,并在未复制命令数量超过 X 时修改它们的连接字符串。

谢谢!我有 1 个 2012 环境和几个 2008 环境,我想在其上实现它,我们的想法是我们将它们全部移动到 2012。企业是一个选项。

其他思考

在洛杉矶有一个负载均衡器,世界会向其发送一个非常快速的小查询,以决定选择哪个服务器实际上可能工作得很好,因为这将是一个小查询,也许请求端可以临时缓存该信息。

似乎我必须让 SQL 或其他数据库引擎将“只读”对吐回应用程序“此数据已过时,去其他地方,最好是在这里”

sql-server transactional-replication
  • 1 1 个回答
  • 257 Views

1 个回答

  • Voted
  1. Best Answer
    user18274
    2013-01-22T20:00:05+08:002013-01-22T20:00:05+08:00

    事务复制可以用于这样的事情,但它会很棘手。但是,听起来您正在做的是使多个前置缓存保持最新状态。

    这很棘手,因为轮询机制限制了可扩展性。最有效的是推送机制,如果发生更改,或者某些数据满足特定条件,它将发送到所有缓存,在其他工作中是消息传递框架。

    如果这是在 SQL Server 中完成的,那么在节点数量多而事务少的情况下,服务代理可能更适合。如果事务量很大且节点数相对较少,则事务复制可能更合适。

    如果数据库是提供全局故障转移服务的应用程序的后端,则应用程序解决方案可能更合适。我碰巧认识一个人,他为一个大型拍卖网站实施了类似的缓存机制,然后

    • 2

相关问题

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

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

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

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

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

Sidebar

Stats

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

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    授予用户对所有表的访问权限

    • 5 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

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

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

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

    • 4 个回答
  • Marko Smith

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

    • 7 个回答
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • 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

热门标签

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