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: 查询验证同步状态
相关推荐
YOU OU2 小时前
Redis基础常识与命令
数据库·redis·缓存
Database_Cool_4 小时前
OLTP 和 OLAP 区别详解:分析型数据库和事务型数据库怎么选(附阿里云 AnalyticDB MySQL 选型指南)
数据库·mysql·阿里云
爱写代码的阿森5 小时前
鸿蒙三方库 | harmony-utils之KvUtil键值型数据库操作详解
数据库·华为·harmonyos·鸿蒙·huawei
Database_Cool_5 小时前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
姜太小白6 小时前
【MySQL】 索引优化实战:解决 WHERE 等值 + IS NULL 查询,TEXT 字段报错 1167 的完整指南
数据库·mysql
窝子面6 小时前
手搓最简前后端协作-node
javascript·数据库
吳所畏惧6 小时前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
DFT计算杂谈7 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
HPFBoy7 小时前
log4net 数据库存日志正确配置
数据库