sqlserver镜像设置

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

设置镜像前先检查是否启用了 主从服务器数据库的 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.mzph.cn/pingmian/65381.shtml

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

相关文章

Elasticsearch:analyzer(分析器)

一、概述 可用于将字符串字段转换为单独的术语: 添加到倒排索引中,以便文档可搜索。级查询(如 生成搜索词的 match查询)使用。 分析器分为内置分析器和自定义的分析器,它们都是由若干个字符过滤器(chara…

ElementPlus 自定义封装 el-date-picker 的快捷功能

文章目录 需求分析 需求 分析 我们看到官网上给出的案例如下,但是不太满足我们用户想要的快捷功能,因为不太多,因此需要我们自己封装一些,方法如下 外部自定义该组件的快捷内容 export const getPickerOptions () > {cons…

低代码开发平台排名2024

低代码开发平台在过去几年中迅速崛起,成为企业数字化转型的重要工具。这些平台通过可视化界面和拖放组件,使业务人员和技术人员都能快速构建应用程序,大大缩短了开发周期。以下是一些在2024年值得关注和使用的低代码开发平台。 一、Zoho Cre…

计算机网络——期末复习(4)协议或技术汇总、思维导图

思维导图 协议与技术 物理层通信协议:曼彻斯特编码链路层通信协议:CSMA/CD (1)停止-等待协议(属于自动请求重传ARQ协议):确认、否认、重传、超时重传、 (2)回退N帧协…

【MySQL学习笔记】关于索引

文章目录 【MySQL学习笔记】关于索引1.索引数据结构2.索引存储3.联合索引3.1 联合索引的b树结构3.2 索引覆盖?回表?3.3 联合索引最左匹配原则3.5 索引下推 4.索引失效 【MySQL学习笔记】关于索引 1.索引数据结构 索引是一种能提高查询速度的数据结构。…

D104【python 接口自动化学习】- pytest进阶参数化用法

day104 pytest参数化parametrize单参数 学习日期:20241223 学习目标:pytest基础用法 -- pytest参数化parametrize单参数 学习笔记: 参数化 parametrize 参数化可以组装测试数据,在测试前定义好测试数据,并在测试用…

第T4周:TensorFlow实现猴痘识别(Tensorboard的使用)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目标: 1、学习tensorboard的使用 具体实现: (一)环境: 语言环境:Python 3.10 编 译 器…

Docker-构建自己的Web-Linux系统-镜像webtop:ubuntu-kde

介绍 安装自己的linux-server,可以作为学习使用,web方式访问,基于ubuntu构建开源项目 https://github.com/linuxserver/docker-webtop安装 docker run -d -p 1336:3000 -e PASSWORD123456 --name webtop lscr.io/linuxserver/webtop:ubuntu-kde登录 …

小米路由器开启SSH,配置阿里云ddns,开启外网访问SSH和WEB管理界面

文章目录 前言一、开启SSH二、配置阿里云ddns1.准备工作2.创建ddns脚本3.添加定时任务 三、开启外网访问SSH和WEB管理界面1、解除WEB管理页面访问限制2.手动添加防火墙端口转发规则,开启外网访问WEB管理和SSH 前言 例如:随着人工智能的不断发展&#xf…

什么是ESC ---- 防止车辆打滑并提高驾驶时稳定性的技术

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源&…

LinkedList类 (链表)

目录 一. LinkedList 基本介绍 二. LinkedList 中的法及其应用 1. 添加元素 (1) add() (2) addAll() (3) addFirst() (4) addLast() 2. 删除元素 (1) remove() (2) removeAll() (3) removeFirst() (4) removeLast() 3. 遍历元素 (1) for 循环遍历 (2) for - each …

复习打卡大数据篇——Hadoop MapReduce

目录 1. MapReduce基本介绍 2. MapReduce原理 1. MapReduce基本介绍 什么是MapReduce MapReduce是一个分布式运算程序的编程框架,核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在Hadoop集群上。 MapRed…

Java基础知识(四) -- 面向对象(下)

1.类变量和类方法 1.1 类变量背景 有一群小孩在玩堆雪人,不时有新的小孩加入,请问如何知道现在共有多少人在玩? 思路分析: 核心在于如何让变量count被所有对象共享 public class Child {private String name;// 定义静态变量(所有Child对象共享)public static int count 0;p…

SpringBoot中使用TraceId进行日志追踪

**查询日志的痛点:**项目中每当我们查询日志的时候都是看前端请求什么接口,根据一些关键字进入服务器查询日志中是否有这个关键字,然而这个关键字在日志里面并不是唯一的,所以要生成一个唯一的标识,每一次请求都是唯一…

C++类与对象上

1.面向过程和面向对象初步认识 C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题 例如洗衣服: C是基于面向对象的,关注的是对象,讲一件事拆分成不同的对象,靠对…

向量组学习

向量组的秩及其线性组合 线性相关性 先看a1,a2 如果这两个向量不对应成比例的话,那必然内部不可能存在多余的向量,也就是无关. 主元所在的列都是独立向量 ,最大无关组就是b1,b2,b4,但这个是初等行变换后的,题目要的是A的,与之对应的就是a1,a2,a4 方程组解的结构

使用VS Code开发ThinkPHP项目

【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《ThinkPHP 8高效构建Web应用 夏磊 编程与应用开发丛书 清华大学出版社》【摘要 书评 试读】- 京东图书 ThinkPHP 8开发环境安装-CSDN博客 安装ThinkPHP项目的IDE 常用的集成开发环境(IDE)包括P…

软件耦合类型及相关说明

文字叙述太麻烦了,此内容个人觉得上图可能大家更容易接受。 ——话不多说,直接上图。

TestMAX/DFT Compiler:时序单元的类型、连接顺序和后DFT优化

相关阅读 TestMAX/DFT Compilerhttps://blog.csdn.net/weixin_45791458/category_12865937.html?spm1001.2014.3001.5482 时序单元的状态 未映射的时序单元(Unmapped Sequential Cell) 在Design Compiler读取了一个RTL设计后,Design Compiler内置的HDL Compiler工…

8086汇编(16位汇编)学习笔记06.串操作、流程转移指令

8086汇编(16位汇编)学习笔记06.串操作、流程转移指令-C/C基础-断点社区-专业的老牌游戏安全技术交流社区 - BpSend.net 串操作 源操作数使用si,默认段为DS,可段超越 目的操作数使用di,默认段为ES,不可段超越 串方向 串方向由D…