学习笔记-镜像的知识点与注意事项

Posted 我是墩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习笔记-镜像的知识点与注意事项相关的知识,希望对你有一定的参考价值。

镜像的知识点与注意事项

重新安装EduBase

1.1:分别在主体服务器、镜像服务器上创建端点

IF EXISTS

(SELECT 1

FROM sys.database_mirroring_endpoints AS E

DROP ENDPOINT ep_EduBase_Mirroring;

GO

CREATE ENDPOINT ep_EduBase_Mirroring

STATE=STARTED // 端点将立即启动

AS TCP(LISTENER_PORT=5022) //监听TCP端口

FOR DATABASE_MIRRORING

(AUTHENTICATION=WINDOWS NEGOTIATE      //身份验证方式设为Windows协商(即在NTLM和KERBEROS之间选择)

,ENCRYPTION=SUPPORTED      //若通信端点支持加密,则镜像过程使用加密

,ROLE=PARTNER);       PARTNER     //角色用于主体/镜像服务器;WITNESS角色用于见证服务器;

 

 

 

1.2:通过完整备份、日志备份(若有必要)、还原,将数据库从主体服务器复制到镜像服务器上

DECLARE @FullBkDesc VARCHAR(MAX);

SELECT

@FullBkDesc = Full backup on principal server for database mirroring at +CONVERT(VARCHAR,GETDATE(),120)+.;

BACKUP DATABASE EduBase2017

TO DISK=C:\EduBase2017\Mirroring\EduBase_FullBackup_ForMirroring.bak

WITH

  INIT

,Name = EduBase_FullBackup

,DESCRIPTION = @FullBkDesc; //完整备份

GO

  DECLARE @LogBkDesc VARCHAR(MAX);

SELECT

@LogBkDesc = Log backup on principal server for database mirroring at +CONVERT(VARCHAR,GETDATE(),120)+.;

BACKUP LOG EduBase2017

TO DISK=C:\EduBase2017\Mirroring\EduBase_LogBackup_ForMirroring.bak

WITH

INIT

,Name = EduBase_LogBackup

,DESCRIPTION = @LogBkDesc;

//日志备份:若在完整备份后,主体服务器的数据库发生更改,则需进一步备份、还原日志,以便保持日志链完整

 

//为便于镜像服务器访问主体服务器的备份文件,可在cmd控制台将备份文件所在位置设为共享。

RESTORE HEADERONLY

FROM DISK=\\WinSvr-1\EduBase2015Mirroring\EduBase2015_FullBackup_ForMirroring.bak; 镜像服务器通过统一命名约定(UNC)地址访问主体服务器中的备份文件

RESTORE DATABASE EduBase2015

FROM DISK = \\WinSvr-1\EduBase2015Mirroring\EduBase2015_FullBackup_ForMirroring.bak WITH

FILE = 1

,REPLACE

,NORECOVERY; 从完整备份中还原

GO

RESTORE HEADERONLY

FROM DISK= \\WinSvr-1\EduBase2015Mirroring\EduBase2015_LogBackup_ForMirroring.bak; RESTORE DATABASE EduBase2015

FROM DISK=\\WinSvr-1\EduBase2015Mirroring\EduBase2015_LogBackup_ForMirroring.bak WITH

FILE = 1

,NORECOVERY;
// 从日志备份中还原  最后一步备份务必指定非还原状态,以确保镜像服务器的数据库不可用

//镜像数据库已包含主体数据库中的数据库用户,但镜像服务器未包含映射至这些数据库用户的登录,故需另行创建

 

 

1.3:分别在镜像服务器、主体服务器的相应数据库上启动镜像会话

ALTER DATABASE EduBase2015

SET PARTNER=TCP://WINSVR-1.EDUBASE.COM:5022; //在镜像服务器的数据库上,设置主体服务器的完整域名、监听端点

ALTER DATABASE EduBase2015

SET PARTNER=TCP://WINSVR-2.EDUBASE.COM:5022; //在主体服务器的数据库上,设置镜像服务器的完整域名、监听端点

ALTER DATABASE EduBase2015 //在主体服务器中设置镜像安全性

SET SAFETY FULL; //完整安全性:主体服务器的数据库中的事务在提交前,必须同步写入镜像服务器的数据库若设为OFF,则允许异步写入,可能导致丢失

ALTER DATABASE EduBase2015 //在主体服务器中设置镜像安全性

SET SAFETY FULL;

//在客户端的ADO.Net的连接字符串中,增加Failover Partner=镜像服务器名,ADO.Net将自动重定向服务器

 

 

2.1:在主体服务器的数据库中修改数据

USE EduBase2015;

UPDATE Course  

 SET Name=计算机导论(1)

 WHERE Name=计算机导论;

UPDATE Course  

 SET Name=C语言程序设计(2)

 WHERE Name=C语言程序设计;

//亦可在客户端中进行操作

 

 

2.2:假设发生故障,此时在主体服务器上手动设置故障转移,从而切换主体服务器、镜像服务器的角色

ALTER DATABASE EduBase2015

SET PARTNER FAILOVER;

 

 

2.3:在当前的主体服务器(即先前的镜像服务器)的数据库中检查数据是否一致,随后修改数据

USE EduBase2015;

SELECT * FROM Course;

UPDATE Course  

 SET Name=VB语言程序设计(3)

 WHERE Name=VB语言程序设计;

//亦可在客户端中进行操作

 

 

2.4:假设主体服务器的数据库遇到大量数据写入,此时挂起镜像会话,随后继续镜像会话

ALTER DATABASE EduBase2015

SET PARTNER SUSPEND;

ALTER DATABASE EduBase2015

SET PARTNER RESUME;

 

 

2.5:当前的镜像服务器(即先前的主体服务器)已排除故障,此时在当前的主体服务器(即先前的镜像服务器)上手动设置故障转移,从而切换主体服务器、镜像服务器的角色,随后检查数据是否一致

ALTER DATABASE EduBase2015

SET PARTNER FAILOVER;

USE EduBase2013;

SELECT * FROM tb_Course;

 

 

3.1:停止镜像会话

ALTER DATABASE EduBase2015

SET PARTNER OFF;

 

以上是关于学习笔记-镜像的知识点与注意事项的主要内容,如果未能解决你的问题,请参考以下文章

学习笔记(十三)——数据库备份还原的知识点与注意事项

学习笔记——作业的知识点与注意事项

学习笔记_信号与系统

学习笔记:python3,代码片段(2017)

Docker学习笔记(6-1)Docker镜像与Docker仓库

学习笔记-Django框架的使用