我们的 SQL AAG 发生了崩溃,我们的辅助数据库最终被损坏。主数据库一切正常,仍在工作,没有受到任何影响。
因此,现在我尝试按照正常步骤将主数据库重新纳入 AAG 可用性数据库组;通过删除数据库、删除文件、在 WFCM 上进行测试、对 AAG 侦听器和副本进行 SQL 测试来清理辅助 SQL 实例。一切都是绿色的,一切顺利。在添加数据库向导接受数据库之前,需要进行完整备份,所以我已经这样做了。
运行向导,状态为“满足要求”,并且连接到辅助 SQL 实例工作正常,无论选择自动播种(首选)还是完整数据库和日志备份,它都会给出相同的警告:
托管辅助副本 <副本/实例> 的服务器实例上的可用空间不足,无法容纳数据和日志文件
我当然可以单击“下一步”,但这不会使辅助副本上的数据库合规/健康,因此这样做没有任何好处。
我可以在副本上为相关驱动器添加更多磁盘空间,但需要多少空间?
数据库文件大小为 2.2 TB 日志文件大小为 70 GB 运行添加数据库向导,假设大小为 2.4 TB
在辅助服务器上,我已将数据磁盘扩展至 5 TB,将日志磁盘扩展至 1 TB,但仍然看到警告
有人知道这些磁盘需要多大吗?
过去,我一直认为在向副本/辅助服务器添加/重新添加数据库时需要“双倍”,但现在似乎不再是这样,或者SQL Server读取其他磁盘大小,比文件浏览器
详细信息:两台服务器都运行带有最新更新的 Windows Server 2019、SQL Server 2019、CU 18(由于后续版本中的错误,我们尚无法使用这些)
嗨@Sean,因为我已经在这个设置上完成了几次这个操作,我确实确保了位置是相同的,但所有的优点,我应该放在这里。根本没有使用安装点。主服务器磁盘可用空间 - 辅助服务器 - 已扩展以尝试运行 AAG 向导。
D 95329 D 83481
F 261001 - LDF F 1651181 - LDF
G 196873 G 204041
U 1054054 - MDF U 4619104 - MDF
以下是主要文件位置
DBName FileType Location
master ROWS D:\Data\MSSQL15.instance_name\MSSQL\DATA\master.mdf
master LOG D:\Data\MSSQL15.instance_name\MSSQL\DATA\mastlog.ldf
tempdb ROWS G:\TempDB\instance_name\tempdb.mdf
tempdb LOG G:\TempDB\instance_name\templog.ldf
tempdb ROWS G:\TempDB\instance_name\tempdb_mssql_2.ndf
tempdb ROWS G:\TempDB\instance_name\tempdb_mssql_3.ndf
tempdb ROWS G:\TempDB\instance_name\tempdb_mssql_4.ndf
model ROWS D:\Data\MSSQL15.instance_name\MSSQL\DATA\model.mdf
model LOG D:\Data\MSSQL15.instance_name\MSSQL\DATA\modellog.ldf
msdb ROWS D:\Data\MSSQL15.instance_name\MSSQL\DATA\MSDBData.mdf
msdb LOG D:\Data\MSSQL15.instance_name\MSSQL\DATA\MSDBLog.ldf
UserDB ROWS U:\Unik-DB\Userdb.mdf
UserDB LOG F:\Logs\Userdb_log.ldf
UserDB ROWS U:\Unik-DB\user_ESDH.ndf
还有次要的
master ROWS D:\Data\MSSQL15.instance_name\MSSQL\DATA\master.mdf
master LOG D:\Data\MSSQL15.instance_name\MSSQL\DATA\mastlog.ldf
tempdb ROWS G:\TempDB\instance_name\tempdb.mdf
tempdb LOG G:\TempDB\instance_name\templog.ldf
tempdb ROWS G:\TempDB\instance_name\tempdb_mssql_2.ndf
tempdb ROWS G:\TempDB\instance_name\tempdb_mssql_3.ndf
tempdb ROWS G:\TempDB\instance_name\tempdb_mssql_4.ndf
model ROWS D:\Data\MSSQL15.instance_name\MSSQL\DATA\model.mdf
model LOG D:\Data\MSSQL15.instance_name\MSSQL\DATA\modellog.ldf
msdb ROWS D:\Data\MSSQL15.instance_name\MSSQL\DATA\MSDBData.mdf
msdb LOG D:\Data\MSSQL15.instance_name\MSSQL\DATA\MSDBLog.ldf
这里 UserDB 丢失了,因为我删除了它 - 但 U 和 F 驱动器都存在额外的空间,因为向导一直抱怨缺少空间。
我现在已开始恢复到辅助副本,并将在向导中尝试“仅加入”。
您需要查看数据库中所有文件的位置,考虑安装点(如果有),并检查辅助副本以确保驱动器位置、可用空间和安装点(包括空间)匹配并且是准确的。显然有些东西不是。
如果您需要更多帮助,请将数据库文件位置的输出放在主副本和辅助
xp_fixeddrives
副本上。事实并非如此,恢复(无论是手动还是通过自动播种)需要数据库的大小。
如果您比向导更了解,那么没有什么可以阻止您不使用向导并手动执行此操作(添加副本并使用您喜欢的任何同步设置模式)。这始终是一个选择......再次假设您是正确的并且工具不是(鉴于可用数据,我们不知道)。
谢谢@Sean,您的提示和指示,并确认了我的数字。
我最终采用了仅加入解决方案。
因此,如果其他人遇到同样的问题,并且无法在 AAG 自动播种中解决,这是我发现有效的唯一选项:
https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/manually-prepare-a-secondary-database-for-an-availability-group-sql-server?view= sql-server-ver16
如果错误告诉我“辅助副本上没有足够的空间”可以解释为什么它会给出错误,那就太好了,因为显然我到处都有足够的空间。