SQL Server 高可用集群(AOHA)数据库故障恢复

同步提交副本数据库恢复

背景

AOHA共有3个实例组成,分工如下

sql01:主库

sql02:同步提交从副本

sql03:异步提交从副本

准备工作:

使用 SSMS 图形界面将有问题的数据库从高可用集群中移除:

打开 SSMS,连接到 主副本。

展开 可用性组,找到对应的可用性组。

展开可用性组中的 可用性数据库。

右键需要删除的数据库(如 DatabaseA),选择 从可用性组中移除。

右击可用性组,选择属性->General,在Availability Databases中选择需要删除的数据库,然后点击 Remove。

故障数据库重新加入高可用集群方法:

1.1 执行完整数据库备份

在主副本 sql01 的 SQL Server Management Studio (SSMS) 中,连接到主数据库实例。

运行以下 T-SQL 语句,创建完整备份:

BACKUP DATABASE [test_DB]

TO DISK = 'E:\SQLData\Backup\test_DB.Full.202502111020.bak'

WITH INIT, COMPRESSION;

1.2 执行事务日志备份

事务日志备份确保副本能够继续从主副本接收日志:

BACKUP LOG [test_DB]

TO DISK = 'E:\SQLData\Backup\test_DB.Log.202502111024.trn'

WITH INIT, COMPRESSION;

将备份文件复制到2个从副本实例的服务器上。

  1. 删除当前从副本的数据库

如果从副本数据库处于 Recovery Pending 状态,需要先删除该数据库。

在辅助副本的 SSMS 中,右键问题数据库(如 DatabaseA),选择 删除。

确保数据库未被任何其他服务占用,确认删除。

ALTER DATABASE [test_DB]

SET SINGLE_USER WITH ROLLBACK IMMEDIATE;

DROP DATABASE [test_DB];

  1. 在辅助副本上恢复数据库

在辅助副本上使用主副本的备份文件恢复数据库。

3.1 恢复完整备份(NORECOVERY)

在辅助副本的 SSMS 中,连接到实例。

恢复完整备份:

Databases->Restore Database,

Source选择Device,

然后选择全量备份文件目录'E:\Backup\test_DB.Full.202502111024.bak',

Options中,Recovery state 选择"RESTORE WITH NORECOVERY"

然后点"OK"执行数据库恢复;

3.2 恢复事务日志(NORECOVERY)

使用主副本的事务日志备份恢复日志:

-- sql02 (同步提交副本)

RESTORE LOG [test_DB]

FROM DISK = 'E:\shareDir\test_DB.Log.202504011612.trn'

WITH NORECOVERY;

-- sql03 (异步提交副本)也需要恢复数据库

RESTORE LOG [test_DB]

FROM DISK = 'E:\Backup\test_DB.Log.202504011612.trn'

WITH NORECOVERY;

  1. 将数据库重新添加到可用性组

在辅助副本上恢复数据库后,需要将其重新添加到可用性组,通过如下SQL脚本配置即可。

4.1 在主库上将 Da1 添加到 Always On 可用性组

USE master;

ALTER AVAILABILITY GROUP [testAG] ADD DATABASE test_DB;

4.2 在从库 sql02 上加入 Always On

USE master;

ALTER DATABASE test_DB SET HADR AVAILABILITY GROUP = [testAG];

4.3 在从库 sql03 上加入 Always On

USE master;

ALTER DATABASE test_DB SET HADR AVAILABILITY GROUP = [testAG];

相关推荐
一 乐3 分钟前
校园线上招聘|基于springboot + vue校园线上招聘系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·校园线上招聘系统
liliangcsdn4 分钟前
如何基于sentence_transformers构建向量计算工具
数据库·人工智能·全文检索
rchmin20 分钟前
向量数据库Milvus安装及使用实战经验分享
数据库·milvus
ego.iblacat26 分钟前
Python 连接 MySQL 数据库
数据库·python·mysql
祖传F8737 分钟前
quickbi数据集数据查询时间字段显示正确,仪表板不显示
数据库·sql·阿里云
Leon-Ning Liu1 小时前
Oracle 26ai新特性:时区、表空间、审计方面的新特性
数据库·oracle
humors2211 小时前
各厂商工具包网址
java·数据库·python·华为·sdk·苹果·工具包
Yushan Bai2 小时前
ORACLE数据库在进行DROP TABLE时失败报错ORA-00604问题的分析处理
数据库·oracle
77美式2 小时前
Node + Express + MongoDB 后端部署全解析:新手零踩坑
数据库·mongodb·express
城数派2 小时前
2000-2025年我国省市县三级逐8天日间地表温度数据(Shp/Excel格式)
数据库·arcgis·信息可视化·数据分析·excel