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 / 问题 / 285887
Accepted
D-K
D-K
Asked: 2021-02-24 07:01:24 +0800 CST2021-02-24 07:01:24 +0800 CST 2021-02-24 07:01:24 +0800 CST

您可以在 Always ON 集群设置中将恢复模式从完全切换到简单模式吗?

  • 772

我需要帮助理解我的选择。鉴于:

  • 由 DBA 维护的 SQL 服务器集群设置。
  • 系统尚未投入生产(未移交给客户)。
  • 最初的大量数据推送,连续几天没有中断
  • 我可以随时停止和启动数据推送并更改数据库。基本上我可以停止所有输入。

我建议我们的 DBA 切换到简单模式,因为我们在活动监视器中看到一堆处于等待状态的查询,最终导致应用程序服务器出错。

我以前从未遇到过这个问题,在消除过程中我看到我们处于完全恢复模式而不是简单模式。

我要求我们从 FULL 切换到 SIMPLE,这就是我得到的答复。是否有其他选择可能是 DBA 不知道的?

我能提供什么帮助?

“我们无法在 SQL 中使用 AlwaysOn 切换到简单模式。”

我可以在初始加载阶段关闭 AlwaysOn 还是我不走运?

- - 添加 - - 在此处输入图像描述

sql-server sql-server-2019
  • 1 1 个回答
  • 1217 Views

1 个回答

  • Voted
  1. Best Answer
    Josh Darnell
    2021-02-24T07:11:27+08:002021-02-24T07:11:27+08:00

    DBA 是正确的 - 如果数据库是可用性组 (AG) 的一部分,则它必须处于完整恢复模式。这是因为 AG 的工作方式——它们将事务日志块从主服务器传送到辅助服务器。所以需要FULL恢复模型提供的所有详细日志记录。

    您可以在初始数据加载期间从 AG 中删除数据库。

    ALTER AVAILABILITY GROUP [YourAG]
    REMOVE DATABASE [YourDatabaseName];
    

    但是,这样做的(可能主要的)缺点是,一旦数据加载完成,辅助节点将需要“重新初始化”。这意味着要么使用“自动播种”将整个主数据库复制到辅助服务器(在现有可用性组上启用自动播种),或者对主数据库进行备份,在每个辅助服务器上还原它,然后将数据库重新添加到 AG(为 Always On 可用性组准备辅助数据库)。

    根据数据加载后数据库的大小,这可能“没什么大不了的”,也可能是一个真正的麻烦。但是,是的,这基本上是 DBA 可用的另一种选择。


    顺便说一句,关于这个:

    我们在活动监视器中看到一堆处于等待状态的查询

    您没有提到实际的等待,但除非它是HADR_SYNC_COMMITor WRITELOG,否则从 AG 中删除/切换到 SIMPLE 恢复可能无济于事。

    即使这些是您的等待,请注意您正在治疗症状。如果应用程序一旦上线就需要转储这样的数据,您可能无法使用 AG 或恢复模型。

    也许您的应用程序可以通过将其一些事务分组为更大的批次来减少生成的日志数据量。

    或者您可能需要调查主服务器和辅助服务器之间的网络速度(记住如何正确测量 AG 吞吐量)。

    这些只是一些可能的补救措施。所有这一切都只是说,从长远来看,现在而不是以后找出这种“等待状态导致应用程序错误”业务的根本原因会更好。


    您显示的等待是锁定等待,表示典型的阻塞链。

    请注意,屏幕截图中所有行的“阻止者”列都是 131。那是一个“会话 ID”(活动监视器的第一列)。继续跟踪该链,直到找到领先的阻止者(“阻止者”将为空白),并查看“等待类型”列以查看它在等待什么。这就是你应该集中精力找出根本原因的地方。


    关于本次更新:

    显然,备份日志目录的默认设置被设置为一个很大的值。当开始清除日志记录(增量日志的事情??)时,它会使整个系统卡顿并导致问题。这是我目前的理论。现在他把它改成了 5 分钟,到目前为止,我们看到的只是我们这边的口吃和恢复。我让我的工程师收集更多真实数据(如果他能捕捉到实际数据块)。

    听起来事务日志备份发生时增加的资源使用量会干扰您的工作负载。一种解决方案是像 DBA 那样更频繁地运行事务日志。如果备份完成得足够快,您甚至可以每分钟运行一次备份。

    综上所述,如果在初始加载完成后重新初始化辅助节点是可行的,则切换到 SIMPLE 恢复的原始解决方案是一个可行的选择。

    • 7

相关问题

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

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

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

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

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

Sidebar

Stats

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

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

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

    • 4 个回答
  • 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
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • 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
    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