"老张!生产数据库挂了!" 凌晨3点接到这通电话时,我正梦见自己在夏威夷度假,一个激灵从床上弹起来,手忙脚乱地穿上衣服就往公司赶,到了机房才发现,主数据库服务器因为硬件故障彻底罢工了,而我们的备用数据库...呃,其实是上周的备份磁带。
如果当时配置了SQL Server数据库镜像,我本可以喝着咖啡,优雅地点击几下就把服务切换到备用服务器上,今天我就把这份血泪教训转化为实战经验,手把手带你搞定SQL Server 2005的镜像配置。
首先别急着动手,咱们得把场地准备好,配置镜像需要至少两台服务器:
我建议三台物理分开的机器,实在预算紧张的话,至少主体和镜像要分开,别学我之前那家公司,把主备放在同一台物理机的两个虚拟机上——电源一断全玩完。
-- 检查数据库恢复模式 SELECT name, recovery_model_desc FROM sys.databases WHERE name = '你的数据库名';
如果不是"FULL",赶紧改过来:
ALTER DATABASE 你的数据库名 SET RECOVERY FULL;
服务器之间需要开通5022端口(默认镜像端口)的通信,如果跨机房,记得让网络组的同事把防火墙规则配好,别到时候互相ping得通,镜像死活连不上。
先在主体服务器上做个全备+日志备份:
-- 全量备份 BACKUP DATABASE 你的数据库名 TO DISK = 'D:\Backup\你的数据库名.bak' WITH FORMAT, COMPRESSION; -- 日志备份 BACKUP LOG 你的数据库名 TO DISK = 'D:\Backup\你的数据库名.trn';
把这两个备份文件拷贝到镜像服务器上。
关键点来了!还原时一定要加WITH NORECOVERY,这样数据库会保持在"正在还原"状态,准备接收镜像数据。
-- 还原全量备份 RESTORE DATABASE 你的数据库名 FROM DISK = 'D:\Backup\你的数据库名.bak' WITH NORECOVERY, MOVE '逻辑数据文件名' TO 'D:\Data\你的数据库名.mdf', MOVE '逻辑日志文件名' TO 'D:\Logs\你的数据库名.ldf'; -- 还原日志备份 RESTORE LOG 你的数据库名 FROM DISK = 'D:\Backup\你的数据库名.trn' WITH NORECOVERY;
镜像通信靠端点,相当于给数据库开了个专属热线。
在主体服务器上执行:
CREATE ENDPOINT MirroringEndpoint STATE = STARTED AS TCP (LISTENER_PORT = 5022) FOR DATABASE_MIRRORING (ROLE = PARTNER);
在镜像服务器上执行同样的命令,注意ROLE也设为PARTNER。
现在让两台服务器"牵手成功",先在镜像服务器上设置主体服务器:
ALTER DATABASE 你的数据库名 SET PARTNER = 'TCP://主体服务器IP:5022';
然后在主体服务器上设置镜像服务器:
ALTER DATABASE 你的数据库名 SET PARTNER = 'TCP://镜像服务器IP:5022';
如果一切顺利,你会看到数据库状态变成"已同步",这时候可以喝口茶庆祝下了。
想要自动故障转移?那就得上见证服务器了,配置步骤类似:
ALTER DATABASE 你的数据库名 SET WITNESS = 'TCP://见证服务器IP:5022';
这个问题我遇到过不下十次,通常是因为备份还原步骤没做对,检查:
网络问题占90%!检查:
镜像会占用网络带宽,如果数据变更频繁,建议:
监控镜像状态:
SELECT db_name(database_id) AS DatabaseName, mirroring_state_desc, mirroring_safety_level_desc FROM sys.database_mirroring WHERE mirroring_guid IS NOT NULL;
故障转移测试:定期演练手动故障转移,确保真出事时不手忙脚乱
-- 在主体服务器上执行 ALTER DATABASE 你的数据库名 SET PARTNER FAILOVER;
日志备份不能停:镜像依赖日志传送,长期不备份日志会导致镜像挂起
去年双十一大促,我们的电商平台数据库服务器CPU风扇突然罢工,机器直接过热关机,得益于配置好的镜像,30秒内完成了自动切换,用户甚至没感觉到异常,事后算了下,那次故障如果导致系统停运1小时,公司至少损失200万订单——而我们的DBA团队获得了一个月奖金和三天假期。
SQL Server镜像技术虽然已经被后来的Always On技术取代,但在SQL Server 2005环境下仍然是实现高可用的重要手段,配置过程看似复杂,但只要按步骤来,其实就像搭积木一样有章可循,好的DBA不是在故障发生时力挽狂澜,而是让故障根本影响不到业务。
去配置你的数据库镜像吧,..祝你永远用不上它!
本文由 綦文山 于2025-08-01发表在【云服务器提供商】,文中图片由(綦文山)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/505461.html
发表评论