sqlserver镜像设置

news2025/1/1 12:44:08

本案例是双机热备,只设置主体服务器(主)和镜像服务器(从),不设置见证服务器

设置镜像前先检查是否启用了 主从服务器数据库的 TCP/IP协议 和 RemoteDAC

(1)打开SQL Server配置管理器,选择“SQL Server网络配置”-“MSSQLSERVER的协议”,在右侧启用TCP/IP协议,打开TCP/IP属性把IP地址设置为本地服务器地址。

(2)在SQL Server Management Studio中右键服务器连接选择Facets, 方面选择“外围应用配置器”,将属性“RemoteDACEnabled”的值改为“True”。

一、SQL Server基于数据库镜像的主从同步

主服务器:SQLSVR1, 192.168.10.2从服务器:SQLSVR2, 192.168.10.3

--如果已经执行过镜像,则需要删除已有的镜像端点、加密证书、登录用户。相关命令:
--关闭数据库镜像
alter database Test set partner off;
--删除端点
drop endpoint Mirroring;
--删除关联的证书和登录用户
drop certificate SQLSVR1_cert;
drop certificate SQLSVR2_cert;
drop login SQLSVR2_login;
drop user SQLSVR2_user;


--1、创建 master 数据库主密钥
USE master;
CREATE MASTER KEY ENCRYPTION 
BY PASSWORD = 'password';
GO


--2、对服务器实例创建一个用于其数据库镜像出站连接的加密证书
CREATE CERTIFICATE SQLSVR1_cert
WITH SUBJECT = 'SQLSVR1 certificate for database mirroring',
EXPIRY_DATE='2100-01-01'
GO


--3、 使用主服务器实例的证书 SQLSVR1_cert 为主服务器 SQLSVR1 创建端点( Mirroring为默认的镜像端点)
CREATE ENDPOINT Mirroring
STATE = STARTED AS TCP (
  LISTENER_PORT = 5022,
  LISTENER_IP = ALL
)
FOR DATABASE_MIRRORING (
  AUTHENTICATION = CERTIFICATE SQLSVR1_cert,
  ENCRYPTION = REQUIRED ALGORITHM AES,
  ROLE = ALL
);
GO

--如果已存在[镜像]导致创建端点失败
--查询列表

SELECT * FROM sys.endpoints;
SELECT * FROM sys.endpoints WHERE name = 'Mirroring';

--删除端点再重新创建
ALTER ENDPOINT [镜像] STATE = STOPPED;
GO

DROP ENDPOINT [镜像];
GO


--4、备份主体服务器 SQLSVR1 的加密证书
BACKUP CERTIFICATE SQLSVR1_cert TO FILE = 'C:\cert\SQLSVR1_cert.cer';
GO


--5、将从服务器的证书备份SQLSVR2.CER拷贝到主服务器的证书备份目录


--6、在主服务器实例的 master 数据库中为镜像服务器创建一个登录名并设置密码
USE master;
CREATE LOGIN SQLSVR2_login 
WITH PASSWORD = 'password';
GO


--7、为6中新创建的登录名创建一个用户
USE master;
CREATE USER SQLSVR2_user 
FOR LOGIN SQLSVR2_login;
GO


--8、将创建的用户与镜像服务器的证书相关联
USE master;
CREATE CERTIFICATE SQLSVR2_cert
AUTHORIZATION SQLSVR2_user
FROM FILE = 'C:\cert\SQLSVR2_cert.cer';
GO


--9、授予其7中登录用户名对数据库镜像端点的 CONNECT 权限( Mirroring为默认的镜像端点)
GRANT CONNECT ON ENDPOINT:: Mirroring TO SQLSVR2_login;
GO


--10、设置SQLSVR1中主库为完整恢复模式,并备份到从服务器SQLSVR2(这部分建议手动在SSMS操作)
USE master;

ALTER DATABASE db_name SET recovery full with no_wait;
BACKUP DATABASE db_name 
TO DISK = 'C:\backup\db_name-full.bak' 
WITH FORMAT,CHECKSUM
GO
BACKUP LOG db_name 
TO DISK = 'C:\backup\db_name-log.trn' 
WITH FORMAT,CHECKSUM
GO

注意:
【1】先关闭事务备份作业。
【2】注意:模式的区别
(1)简单模式:设置为完整模式后全备到SQLSVR2即可;
(2)大容量模式:设置为完整模式后,要利用之前的大容量模式下的全备;(即要把主备+事务备+设置好完整模式后的事务备);
(3)完整模式:
  如要利用以前的备份,则需要全备+全备之后的所有事务备;
  如果库小可以直接全备,再传输到SQLSVR2。


--11、(后做)设置镜像主从
ALTER DATABASE db_name 
SET partner = 'TCP://192.168.10.3:5022'

--如果已经执行过镜像,则需要删除已有的镜像端点、加密证书、登录用户。相关命令:
--关闭数据库镜像
alter database Test set partner off;
--删除端点
drop endpoint Mirroring;
--删除关联的证书和登录用户
drop certificate SQLSVR1_cert;
drop certificate SQLSVR2_cert;
drop login SQLSVR1_login;
drop user SQLSVR1_user;


--1、创建 master 数据库主密钥
USE master;
CREATE MASTER KEY ENCRYPTION 
BY PASSWORD = 'password';
GO


--2、对服务器实例创建一个用于其数据库镜像出站连接的加密证书
CREATE CERTIFICATE SQLSVR2_cert
WITH SUBJECT = 'SQLSVR2 certificate for database mirroring',
EXPIRY_DATE='2100-01-01'
GO


--3、 使用从服务器实例的证书 SQLSVR2_cert 为从服务器 SQLSVR2 创建端点( Mirroring为默认的镜像端点)
CREATE ENDPOINT Mirroring
STATE = STARTED AS TCP (
  LISTENER_PORT = 5022,
  LISTENER_IP = ALL
)
FOR DATABASE_MIRRORING (
  AUTHENTICATION = CERTIFICATE SQLSVR2_cert,
  ENCRYPTION = REQUIRED ALGORITHM AES,
  ROLE = ALL
);
GO

--如果已存在[镜像]导致创建端点失败
--查询列表
SELECT * FROM sys.endpoints;
SELECT * FROM sys.endpoints WHERE name = 'Mirroring';

--删除端点再重新创建
ALTER ENDPOINT [镜像] STATE = STOPPED;
GO

DROP ENDPOINT [镜像];
GO


--4、备份从服务器 SQLSVR2 的加密证书
BACKUP CERTIFICATE SQLSVR2_cert TO FILE = 'C:\cert\SQLSVR2_cert.cer';
GO


--5、将主服务器的证书备份SQLSVR1.CER拷贝到从服务器的证书备份目录


--6、在从服务器实例的 master 数据库中为主服务器创建一个登录名并设置密码
USE master;
CREATE LOGIN SQLSVR1_login 
WITH PASSWORD = 'password';
GO


--7、为6中新创建的登录名创建一个用户
USE master;
CREATE USER SQLSVR1_user 
FOR LOGIN SQLSVR1_login;
GO


--8、将创建的用户与主服务器的证书相关联
USE master;
CREATE CERTIFICATE SQLSVR1_cert
AUTHORIZATION SQLSVR1_user
FROM FILE = 'C:\cert\SQLSVR1_cert.cer';
GO


--9、授予其7中登录用户名对数据库镜像端点的 CONNECT 权限( Mirroring为默认的镜像端点)
GRANT CONNECT ON ENDPOINT:: Mirroring TO SQLSVR1_login;
GO


--10、还原SQLSVR1服务器上传过来的主数据库备份文件(这部分建议手动在SSMS操作)
USE master;
RESTORE DATABASE db_name 
FROM DISK = 'C:\backup\db_name-full.bak' 
WITH FILE = 1,
MOVE N'db_name' TO N'C:\DB\db_name.mdf', 
MOVE N'db_name_log' TO N'C:\DB\db_name_log.ldf',
NOUNLOAD, NORECOVERY, STATS = 10
GO
RESTORE DATABASE db_name 
FROM DISK = N'C:\backup\db_name-log.trn'
GO

注意:
(1)还原数据库:一定要和主库的数据库名一模一样。
(2)还原模式:一定要选择norecovery模式,否则失败。
(3)还原库文件的存放路径:尽量和主库的盘符及目录及名字一摸一样,否则不支持新增文件同步(若没用到新增文件同步暂时不用管)。
如果机器盘符目录不一致,那么需要在还原时用move选项来进行位置移动。


--11、(先做)设置镜像主从
ALTER DATABASE db_name 
SET partner = 'TCP://192.168.10.2:5022'


注意:
从库的版本必须和主库一致,如都是标准版,才能设置镜像。

注:以上命令全程都在系统数据库 master 创建的查询执行即可

二、SQL Server 数据库备份还原

1.备份数据库,备份两次。

(1)主服务器找到需要备份的数据库,右键 → 任务(Tasks) → 备份(Back up),备份类型选择 完整(Full),备份到磁盘 路径自定义 命名跟数据库一样,得到 .bak 备份文件。

(2)重复同上操作,但备份类型选择 事务日志(Transaction log),得到 .trn 备份文件或者追加到上一步的.bak文件中。

2.还原数据库,也是分两次还原,将备份文件 .bak .trn 拷贝到从服务器主机

(1)在SSMS连接数据库,右键数据库,选择 还原数据库(还原文件和文件组)都可以 → 目标数据库命名一样Test → 选择 源设备(From device),然后找到添加 .bak 文件然后确定 →  (重要)选项 恢复状态 选择 不对数据库执行任何操作(RESTORE WITH NORECOVERY)→ 点击确定开始还原数据库。

(2)上一步成功后刷新即可看到Test数据库还原生成,继续重复同上操作,右键Test数据库,选择 任务 - 还原 - 事务日志,然后找到添加 .trn 文件 →  (重要,否则执行镜像报错)选项 恢复状态 选择 不对数据库执行任何操作(RESTORE WITH NORECOVERY)→ 点击确定开始还原。

三、启动镜像

执行以上表格第11步命令开启镜像,注意先在从库执行再去主库执行。

在主服务器 SSMS 上设置数据库镜像,可能会出现报错

1.服务器ip端口号5022不能一样

2.开始镜像系统提示“服务器网络地址"TCP://XXX:5022"无法访问或不存在。请检查网络地址名称,并检查本地和远程端点的端口是否正常运行。(Microsoft SQLServer,错误:1418)”的错误信息,请去到该主机查看防火墙配置中的入站规则,是否允许了 5022 端口。

四、检查镜像结果

1、检查数据库状态

 镜像成功后,主体数据库的状态会显示为“主体,已同步”,镜像数据库的状态会显示为“镜像,已同步/正在还原...”,如图所示:

2、监视镜像是否正常

转到主服务器库选择主体数据库,右键选择任务下的“启动数据库镜像监视器”,通过监视器,可以查看主体服务器和镜像服务器的镜像状态和见证服务器连接的信息,如图所示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2267707.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot503基于Sringboot+Vue个人驾校预约管理系统(论文+源码)_kaic

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装个人驾校预约管理系统软件来发挥其高效地信息处理的作用&am…

游戏引擎学习第61天

回顾并计划接下来的事情 我们现在的目标是通过创建一个占位符版本的游戏来展示我们所做的工作。这个版本的游戏包含了许多基本要素,目的是快速构建一些东西,进行测试,并观察代码结构的形成。这些代码的实施是为了理解系统如何工作&#xff0…

探索PyTorch:从入门到实践的demo全解析

探索PyTorch:从入门到实践的demo全解析 一、环境搭建:PyTorch的基石(一)选择你的“利器”:安装方式解析(二)步步为营:详细安装步骤指南二、基础入门demo:点亮第一盏灯(一)张量操作:深度学习的“积木”(二)自动求导:模型学习的“幕后英雄”三、数据处理demo:喂饱…

hiprint结合vue2项目实现静默打印详细使用步骤

代码地址是:vue-plugin-hiprint: hiprint for Vue2/Vue3 ⚡打印、打印设计、可视化设计器、报表设计、元素编辑、可视化打印编辑 本地安装包地址:electron-hiprint 发行版 - Gitee.com 1、先安装hipint安装包在本地 2、项目运行npm(socket.…

Docker Container 可观测性最佳实践

Docker Container 介绍 Docker Container( Docker 容器)是一种轻量级、可移植的、自给自足的软件运行环境,它在 Docker 引擎的宿主机上运行。容器在许多方面类似于虚拟机,但它们更轻量,因为它们不需要模拟整个操作系统…

GXUOJ-算法-第二次作业

1.矩阵连&#xff08;链&#xff09;乘 问题描述 GXUOJ | 矩阵连乘 代码解答 #include<bits/stdc.h> using namespace std;const int N50; int m[N][N]; int p[N]; int n;int main(){cin>>n;//m[i][j] 存储的是从第 i 个矩阵到第 j 个矩阵这一段矩阵链相乘的最小…

OpenCV计算机视觉 02 图片修改 图像运算 边缘填充 阈值处理

目录 图片修改&#xff08;打码、组合、缩放&#xff09; 图像运算 边缘填充 ​阈值处理 上一篇文章&#xff1a; OpenCV计算机视觉 01 图像与视频的读取操作&颜色通道 图片修改&#xff08;打码、组合、缩放&#xff09; # 图片打码 import numpy as np a cv2.imre…

不修改内核镜像的情况下,使用内核模块实现“及时”的调度时间片超时事件上报

一、背景 之前的博客 不修改内核镜像的情况下&#xff0c;使用内核模块实现高效监控调度时延-CSDN博客 里&#xff0c;我们讲了不修改内核镜像高效监控每次的调度时延的方法。这篇博客里&#xff0c;我们对于调度时间片也做这么一个不修改内核镜像的改进。关于调度时间片过长的…

Flink定时器

flink的定时器都是基于事件时间&#xff08;event time&#xff09;或事件处理时间&#xff08;processing time&#xff09;的变化来触发响应的。对一部分新手玩家来说&#xff0c;可能不清楚事件时间和事件处理时间的区别。我这里先说一下我的理解&#xff0c;防止下面懵逼。…

使用 OpenCV 绘制线条和矩形

OpenCV 是一个功能强大的计算机视觉库&#xff0c;它不仅提供了丰富的图像处理功能&#xff0c;还支持图像的绘制。绘制简单的几何图形&#xff08;如线条和矩形&#xff09;是 OpenCV 中常见的操作。在本篇文章中&#xff0c;我们将介绍如何使用 OpenCV 在图像上绘制线条和矩形…

【Artificial Intelligence篇】AI 前沿探秘:开启智能学习的超维征程

目录 一、人工智能的蓬勃发展与智能学习的重要性: 二、数据的表示与处理 —— 智能学习的基石: 三、构建一个简单的感知机模型 —— 智能学习的初步探索: 四、神经网络 —— 开启超维征程的关键一步: 五、超维挑战与优化 —— 探索智能学习的深度: 六、可视化与交互 —— …

大数据的尽头是数据中台吗?

大数据的尽头是数据中台吗&#xff1f; 2018年末开始&#xff0c;原市场上各种关于大数据平台的招标突然不见&#xff0c;取而代之的是数据中台项目&#xff0c;建设数据中台俨然成为传统企业数字化转型首选&#xff0c;甚至不少大数据领域的专家都认为&#xff0c;数据中台是…

珞珈一号夜光遥感数据地理配准,栅格数据地理配准

目录 一、夜光数据下载&#xff1a; 二、夜光遥感数据地理配准 三、计算夜光数据值 四、辐射定标 五、以表格显示分区统计 五、结果验证 夜光数据位置和路网位置不匹配&#xff0c;虽然都是WGS84坐标系&#xff0c;不匹配&#xff01;&#xff01;&#xff01;不要看到就直接…

3.若依前端项目拉取、部署、访问

因为默认RuoYi-Vue是使用的Vue2,所以需要另外去下载vue3来部署。 拉取代码 git clone https://gitee.com/ys-gitee/RuoYi-Vue3.git 安装node才能执行npm相关的命令 执行命令npm install 如果npm install比较慢的话&#xff0c;需要添加上国内镜像 npm install --registrhttp…

【Java】线程相关面试题 (基础)

文章目录 线程与进程区别并行与并发区别解析概念含义资源利用执行方式应用场景 创建线程线程状态如何保证新建的三个线程按顺序执行wait方法和sleep方法的不同所属类和使用场景方法签名和参数说明调用wait方法的前提条件被唤醒的方式与notify/notifyAll方法的协作使用示例注意事…

手机租赁平台开发全攻略打造高效便捷的租赁服务系统

内容概要 手机租赁平台开发&#xff0c;简单说就是让用户能轻松租赁各类手机的高效系统。这一平台不仅帮助那些想要临时使用高端手机的人们节省了不少资金&#xff0c;还为商家开辟了新的收入渠道。随着智能手机的普及&#xff0c;很多人并不需要长期拥有一部手机&#xff0c;…

【视觉惯性SLAM:十一、ORB-SLAM2:跟踪线程】

跟踪线程是ORB-SLAM2的核心之一&#xff0c;其主要任务是实时跟踪相机的位姿变化和场景的变化&#xff0c;以维持地图的更新和相机轨迹的估计。ORB-SLAM2的跟踪线程通过多种方式&#xff08;参考关键帧跟踪、恒速模型跟踪、重定位跟踪、局部地图跟踪&#xff09;处理跟踪丢失、…

浙江肿瘤医院病理库存储及NAS共享存储(磁盘阵列)方案-Infortrend普安科技

Infortrend金牌代理-燊通智联信息科技发展&#xff08;上海&#xff09;有限公司与院方多轮沟通&#xff0c;详细讨论性能与容量要求&#xff0c;最终决定采用GSe统一存储设备&#xff0c;与现有病理系统服务器无缝对接&#xff0c;每台设备配1.92T SSD作缓存加速原数据读写&am…

解决GPT公式复制到Word之后乱码问题

chat辅助确实很有用。不论是出文稿还是代码。如何把chatgpt中的公式直接复制到word中且保持原样格式呢&#xff1f;下面的方法经过我的验证确实好用&#xff0c;成功解决了最近的论文报告写公式的问题。 一、首先复制chatgpt里面的公式 二、粘贴在下面网站 网站&#xff1a;Mat…

Spring Boot教程之四十:使用 Jasypt 加密 Spring Boot 项目中的密码

如何使用 Jasypt 加密 Spring Boot 项目中的密码 在本文中&#xff0c;我们将学习如何加密 Spring Boot 应用程序配置文件&#xff08;如 application.properties 或 application.yml&#xff09;中的数据。在这些文件中&#xff0c;我们可以加密用户名、密码等。 您经常会遇到…