SQL Server Always On 重新添加从库步骤

SQL Server Always On 重新添加从库步骤

环境说明

  • 主库:235
  • 从库:209
  • 可用性组:AG_235_209
  • 数据库:Test

第一步:主库 235 --- 备份数据库

确认数据库为完整恢复模式(Always On 要求),然后分别做完整备份和日志备份。

sql 复制代码
-- 确认完整恢复模式
ALTER DATABASE [Test] SET RECOVERY FULL;

-- 完整备份
BACKUP DATABASE [Test]
TO DISK = 'C:\Backup\Test_full.bak'
WITH COMPRESSION, INIT, STATS = 10;

-- 日志备份
BACKUP LOG [Test]
TO DISK = 'C:\Backup\Test_log.bak'
WITH STATS = 10;

第二步:复制备份文件到从库 209

将以下两个文件手动拷贝到从库 209 的备份目录(如 C:\Backup\):

  • Test_full.bak
  • Test_log.bak

第三步:从库 209 --- 还原数据库

⚠️ 注意:还原时必须使用 WITH NORECOVERY,不能使用 WITH RECOVERY,否则数据库会上线并脱离 Always On 同步链。

sql 复制代码
-- 还原完整备份
RESTORE DATABASE [Test]
FROM DISK = 'C:\Backup\Test_full.bak'
WITH NORECOVERY, STATS = 10;

-- 还原日志备份
RESTORE LOG [Test]
FROM DISK = 'C:\Backup\Test_log.bak'
WITH NORECOVERY;

还原完成后,SSMS 中数据库会显示 "正在还原",这是正确状态,无需处理。


第四步:主库 235 --- 将数据库加入可用性组

⚠️ 注意:必须等第三步从库还原完全完成后,再执行此步骤。

sql 复制代码
ALTER AVAILABILITY GROUP [AG_235_209] ADD DATABASE [Test];

第五步:从库 209 --- 加入可用性组

sql 复制代码
ALTER DATABASE [Test]
SET HADR AVAILABILITY GROUP = [AG_235_209];

执行后,从库数据库状态会从 "正在还原" 变为 "正在还原 / 同步中",稍等片刻即可同步完成。


验证同步状态

在主库 235 上执行以下查询,确认同步结果:

sql 复制代码
SELECT
    db.database_name               AS 数据库,
    rs.synchronization_state_desc  AS 同步状态,
    rs.synchronization_health_desc AS 健康状态
FROM sys.availability_groups ag
JOIN sys.availability_databases_cluster db ON ag.group_id = db.group_id
JOIN sys.dm_hadr_database_replica_states rs ON db.group_database_id = rs.group_database_id
WHERE ag.name = 'AG_235_209'
  AND rs.is_local = 0;

预期结果:

数据库 同步状态 健康状态
Test SYNCHRONIZED HEALTHY

显示 SYNCHRONIZED + HEALTHY 即表示从库配置成功。


操作顺序总览

复制代码
主库235: ALTER DATABASE SET RECOVERY FULL
主库235: BACKUP DATABASE
主库235: BACKUP LOG
         ↓ 将 .bak 文件复制到从库 209
从库209: RESTORE DATABASE WITH NORECOVERY  ← 等待完成
从库209: RESTORE LOG WITH NORECOVERY       ← 等待完成
         ↓ 确认从库显示"正在还原"
主库235: ALTER AVAILABILITY GROUP ADD DATABASE
从库209: ALTER DATABASE SET HADR AVAILABILITY GROUP
主库235: 查询验证同步状态
相关推荐
环流_2 小时前
redis核心数据类型在java中的操作
java·数据库·redis
雨辰AI2 小时前
SpringBoot3 项目国产化改造完整流程|从 MySQL 到人大金仓落地
java·数据库·后端·mysql·政务
一个天蝎座 白勺 程序猿2 小时前
存储治理:表空间自动目录创建与国产操作系统生态适配
数据库·kingbasees
2401_884454152 小时前
mysql处理复杂SQL性能_InnoDB优化器与MyISAM差异
jvm·数据库·python
weelinking2 小时前
【企业级】企业级大模型合规实战:数据安全与跨境传输的技术解决方案
数据库·人工智能·机器学习·云计算·github
m0_470857642 小时前
golang如何实现目录大小统计_golang目录大小统计实现方案
jvm·数据库·python
穗余3 小时前
RAG为什么必须用向量数据库?
数据库
weixin_444012933 小时前
如何在多实例管理时隐藏MySQL版本信息_安全混淆与配置
jvm·数据库·python
weixin_459753943 小时前
SQL处理大规模分组聚合的内存限制_调整服务器配置
jvm·数据库·python