SQL server-镜像复制

Log4g / 2023-05-16 / 原文

一、背景:
需要将苏州业务实例搭建一套灾备实例,用于苏州实例异常情况下的高可用
苏州实例可以支撑当前业务访问量,所以不需要无锡灾备拥有读写能力,只要苏州异常,无锡可以接管业务即可
考虑到使用发布订阅需要所有表带有主键,并且灾备实例拥有写的能力,有可能会产生数据冲突,当前没有更好的办法进行限制,故排除。
镜像复制没有主键要求,并且备机不可读写,所以不会产生数据冲突,实时复制,延迟小,作为灾备实例更合适,当主机异常时可以手动进行切换。

二、配置镜像注意点:
1.数据库的模式要是完整模式。
2.要对数据库完整备份和事务日志备份,分别还原到镜像库上,使用 NORECOVERY 模式。
3.镜像数据库是不允许删除和操作,即便查看属性也不行。
4.先删除端点,再删除证书,再删除主密钥。
5.只有是同步模式的时候,才能手动故障转移,异步模式不能手动故障转移。
6.要进行sql server的镜像设置一定要使用sql server 的配置管理器开启TCP/IP协议,如果没有启用TCP/IP协议则只能在同一个网段内的机器配置镜像,前面的配置步骤里面所用到的IP地址要换成对应的实例名。同一个网段配置并使用镜像的时实性、传输速率更高,适用于大数据量的同步,跨网段或者跨公网的sql server 镜像一般适用于数据量小,时实性要求不高的数据同步,而且数据库在公网上同步也不安全。

三、配置镜像操作步骤:


四、切换主备

#主库宕机后,怎么恢复镜像库为可用状态#
1.脱离镜像
alter database test01 set partner off

2.修改数据库的状态为recovery
restore database test01 with recovery

#脱离镜像后还要建立镜像的话,可以重新备份数据库和事务日志用NORECOVERY模式还原,然后连接镜像#
use master  --连接镜像,先在备机库上操作,然后在主机库上操作
ALTER DATABASE test01 SET PARTNER = 'TCP://suz-etos2mdb:5022';

#常用命令#
--切换主备(在主机principle数据库所在HOST上执行)
use master;
alter database test01 set partner failover;

--备机强制切换(在备机上数据库状态非同步状态下可执行)
use master;
alter database testdb set partner force_service_allow_data_loss;

--恢复镜像
use master;
alter database testdb set partner resume;

#备份主数据库出现:Backup a database on a HDD with a different sector size,可以执行以下语句备份#
BACKUP DATABASE MyDB TO DISK = N'D:\MyDB.bak' WITH INIT,NOUNLOAD,NAME = N'MyDB backup', STATS = 10, FORMAT;

五、参考链接
参考链接:https://blog.csdn.net/pixel123/article/details/107056719/
参考链接:https://blog.csdn.net/tony0225/article/details/103452771
参考链接:https://www.cnblogs.com/soleds/p/11854906.html