部份内容参考原始文章链接:https://www.cnblogs.com/stragon/p/5643754.html ,同时比较有参考价值的文章:https://blog.csdn.net/sqlserverdiscovery/article/details/20282919

过程中碰到的一些问题:

  1、报1416、1418等错误,同时查看本地SQL日志和备机SQL日志,通常能发现问题原因并解决问题。

  2、主备机需要镜像的数据库,需要设置为完整恢复模式;

  3、主备机实例,方面,外围应用配置中的RemoteDacEnabled需要设置为True

  4、配置镜像、配置安全性过程中,主机和备机需要对应填写在对方的证书帐号,有文章说两个帐号的密码必须相同,按下面例子,主机帐号填HOST_A_login,备机帐号填HOST_B_login

  5、通过我的电脑,右键,属性,计算机名/域更改,主DNS后缀,设置相同的域名,例如计算机HOST_A,设置test.com为DNS后续,形成HOST_A.test.com,备机同样设置,形成HOST_B.test.com,如果有见证服务器也同样;然后主备机的HOST文件分别需要设置相应的IP映射。

  6、镜像前,将主机数据库完整备份,传送到备机上,进行还原,还原时的恢复状态选项选定:RESTORE WITH NORECOVERY,当数据库还原后会一直处于还原中,事实上此时就是在等待主机开始镜像。

  7、碰到过两台主机的名称不一致的问题,即主机改过名,需要做改名并重启SQL实例的步骤;(代码忘了,碰上执行下面脚本出错的时候根据错误信息百度很好解决。)

  8、主备机都需要开放1433(或更改后的端口)和5022端口(同步在防火墙进行开放);

下面内容原样复制过来:

一、配置主备机

1、 服务器基本信息

主机名称为:HOST_A,IP地址为:192.168.1.155

备机名称为:HOST_B,IP地址为:192.168.1.156

二、主备实例互通

实现互通可以使用域或证书来实现,考虑实现的简单,以下选取证书的方式实现。注意:实现“主备数据库实例互通”的操作只需要做一次,例如为了将两个SQL Server 2008的实例中的5个数据库建成镜像关系,则只需要做一次以下操作就可以了;或者这样理解:每一对主备实例(不是数据库)做一次互通。

1、创建证书(主备可并行执行)

--主机执行:

--如果有endpoint,master key先删除

--select * from master.sys.database_mirroring_endpoints
--DROP ENDPOINT Endpoint_Mirroring
--drop master key;

USE master;  

ALTER SERVICE MASTER KEY FORCE REGENERATE

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '123456';  

CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = 'HOST_A certificate' ,  

START_DATE = '2012-08-02',  

EXPIRY_DATE = '2099-08-02'; 

 

--备机执行:

--如果有endpoint,master key先删除

--select * from master.sys.database_mirroring_endpoints
--DROP ENDPOINT Endpoint_Mirroring
--drop master key;

USE master;  

ALTER SERVICE MASTER KEY FORCE REGENERATE

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '123456';  

CREATE CERTIFICATE HOST_B_cert WITH SUBJECT = 'HOST_B certificate',  

START_DATE = '2012-08-02',  

EXPIRY_DATE = '2099-08-02'; 

 

2、创建连接的端点(主备可并行执行)

--主机执行: 

CREATE ENDPOINT Endpoint_Mirroring  

STATE = STARTED  

AS 

TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL )  

FOR 

DATABASE_MIRRORING  

( AUTHENTICATION = CERTIFICATE HOST_A_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL ); 

 

--备机执行:

CREATE ENDPOINT Endpoint_Mirroring  

STATE = STARTED  

AS 

TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL )  

FOR 

DATABASE_MIRRORING  

( AUTHENTICATION = CERTIFICATE HOST_B_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );

 

3、备份证书以备建立互联(主备可并行执行)

--主机执行:

BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\SQLBackup\HOST_A_cert.cer'; 

 

--备机执行:

BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\SQLBackup\HOST_B_cert.cer';

 

 

4、互换证书

将备份到C:\SQLBackup\的证书进行互换,即HOST_A_cert.cer复制到备机的C:\SQLBackup\。HOST_B_cert.cer复制到主机的C:\SQLBackup\。

5、添加登陆名、用户(主备可并行执行)

以下操作只能通过命令行运行,通过图形界面无法完成。(截至SQL Server2005的补丁号为SP2)

--主机执行:

CREATE LOGIN HOST_B_login WITH PASSWORD = '123456';  

CREATE USER HOST_B_user FOR LOGIN HOST_B_login;  

CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = 'C:\SQLBackup\HOST_B_cert.cer';  

GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login]; 

 

--备机执行:

CREATE LOGIN HOST_A_login WITH PASSWORD = '123456';  

CREATE USER HOST_A_user FOR LOGIN HOST_A_login;  

CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = 'C:\SQLBackup\HOST_A_cert.cer';  

GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login]; 

三、建立镜像关系

以下步骤是针对每个数据库进行的,例如:现有主机中有5个数据库以下过程就要执行5次。

1、 手工同步登录名和密码

在上文中提到数据库镜像的缺点之一是无法维护登录名,所以需要我们手工维护登录。

通常来说数据库都将会有若干个用户作为访问数据库的用户,并且数据库会有相应的登录名,但是在备机中缺少与之相对应的登录名,例如某业务系统使用’myuser’作为登录名访问数据库,但是在备机中没有’myuser’这个登录名,因此一旦主备切换,业务系统就无法登录数据库了,这种情况称为"孤立用户"。在主机和备机数据库上建立相同用户名及密码即可

2、 准备备机数据库(主机备份及镜像还原)

在主机上备份数据库,先做完整备份,再做日志事务备份。

1、主数据必须设置成完整模式进行备份,如下图:

上图中将“恢复模式”选成“完整模式”。

2、备份数据库,如下图:

备份时将“备份类型”选成“完整”。

3、备份事务日志,如下图:

将“备份类型”选成“事务日志”且备份目录与备份数据库的目录一致。

将主机的备份文件拷贝到备机上,在备机上使用主机的全备文件进行还原,在还原数据的时候需要使用选上“with non recover”。如图所示:

如果执行成功数据库将会变成这个样子:

3、 建立镜像

--在备机中执行如下语句:

ALTER DATABASE shishan SET PARTNER = 'TCP://192.168.1.155:5022';

说明:shishan为数据库名,需要根据实际进行修改。192.168.1.155为主机IP地址,需根据实际进行修改。

--主机执行:

ALTER DATABASE shishan SET PARTNER = 'TCP://192.168.1.156:5022'; 

说明:shishan为数据库名,需要根据实际进行修改。192.168.1.156为备机IP地址,需根据实际进行修改。

执行成功后:

到此,SQL镜像热备配置完成。

四、常见命令

--切换主备(在主机principle数据库所在HOST上执行)

use master;

alter database testdb set partner failover;

 

-- 备机强制切换(在备机上数据库状态非同步状态下可执行)

use master;

alter database testdb set partner force_service_allow_data_loss;

 

--恢复镜像

use master;

alter database testdb set partner resume;

 

 

--取消见证服务器

ALTER DATABASE testdb SET WITNESS OFF ;

 

--取消镜像(在主机principle数据库所在HOST上执行)

ALTER DATABASE testdb SET PARTNER OFF;

 

--设置镜像数据库还原为正常

RESTORE DATABASE testdb WITH RECOVERY;

 

备份主数据库出现: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

 

总结

要进行以上sql server的镜像设置一定要使用sql server 的配置管理器开启TCP/IP协议,如下图

如果没有启用TCP/IP协议则只能在同一个网段内的机器配置镜像,前面的配置步骤里面所用到的IP地址要换成对应的实例名。同一个网段配置并使用镜像的时实性、传输速率更高,适用于大数据量的同步,跨网段或者跨公网的sql server镜像一般适用于数据量小,时实性要求不高的数据同步,而且数据库在公网上同步也不安全。

SQL2014做数据库主从镜像备份(也可以用于高可用)备忘(非域控)。的更多相关文章

  1. Redis安装、主从配置及两种高可用集群搭建

    Redis安装.主从配置及两种高可用集群搭建 一.            准备 Kali Linux虚拟机 三台:192.168.154.129.192.168.154.130.192.168.154 ...

  2. docker toolbox的redis 配置主从及哨兵模式保证高可用

    redis 的缓存中间件安装方法,简单举例如下: 环境: docker toolbox 一   主从模式1 搜索redis镜像  docker search redis2 拉取镜像docker pul ...

  3. Log4Net写入到数据库配置过程中的一些小问题备忘

    问题1: 在公司进行log4net写入服务器配置的时候,一切正常,但是在家里的机器上,就频繁出现这个问题: SQL Server 2008 报错:已成功与服务器建立连接,但是在登录前的握手期间发生错误 ...

  4. 利用ansible来做kubernetes 1.10.3集群高可用的一键部署

    请读者务必保持环境一致 安装过程中需要下载所需系统包,请务必使所有节点连上互联网. 本次安装的集群节点信息 实验环境:VMware的虚拟机 IP地址 主机名 CPU 内存 192.168.77.133 ...

  5. CYQ.Data 支持分布式数据库(主从备)高可用及负载调试

    前言: 继上一篇,介绍 CYQ.Data 在分布式缓存上支持高可用,详见:CYQ.Data 对于分布式缓存Redis.MemCache高可用的改进及性能测试 本篇介绍 CYQ.Data 在对数据库层面 ...

  6. 数据库高可用架构(MySQL、Oracle、MongoDB、Redis)

    一.MySQL MySQL小型高可用架构 方案:MySQL双主.主从 + Keepalived主从自动切换   服务器资源:两台PC Server 优点:架构简单,节省资源 缺点:无法线性扩展,主从失 ...

  7. [转]数据库高可用架构(MySQL、Oracle、MongoDB、Redis)

    一.MySQL   MySQL小型高可用架构 方案:MySQL双主.主从 + Keepalived主从自动切换 服务器资源:两台PC Server 优点:架构简单,节省资源 缺点:无法线性扩展,主从失 ...

  8. 使用Mycat构建MySQL读写分离、主从复制、主从高可用

    数据库读写分离对于大型系统或者访问量很高的互联网应用来说,是必不可少的一个重要功能. 从数据库的角度来说,对于大多数应用来说,从集中到分布,最基本的一个需求不是数据存储的瓶颈,而是在于计算的瓶颈,即S ...

  9. 15套java互联网架构师、高并发、集群、负载均衡、高可用、数据库设计、缓存、性能优化、大型分布式 项目实战视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩 展 ...

随机推荐

  1. js replace(a,b)替换指定字符

    var a="aaabbb" a= a.replace("aaa", "ccc") console.log(a)  //a ="c ...

  2. Filters in ASP.NET Core

    Filters in ASP.NET Core allow code to be run before or after specific stages in the request processi ...

  3. swoolefy PHP的异步、并行、高性能网络通信引擎内置了Http/WebSocket服务器端/客户端

    近半年来努力付出,项目终于要正式结项了,团队4人经历了很多困难,加班加点,最终完成了!剩下的时间将总结一下在该项目中用到知识和遇到问题.今天就从swoole说起!项目中实现异步大文件传输的功能,在服务 ...

  4. A1113 | Integer Set Partition (25)

    太简单了 #include <stdio.h> #include <memory.h> #include <math.h> #include <string& ...

  5. NOI2019 Day2游记

    开场T1是个最短路优化建图,边向二维矩形内所有点连,本来可以写树套树的,但是卡空间(128MB),后来发现其实是不用把边都建出来的,只需要用数据结构模拟dijkstra的过程,支持二维区间对一个值取m ...

  6. 使用charles对jmeter进行抓包

  7. 【POJ1416】Shredding Company

    本题传送门 本题知识点:深度优先搜索 + 回溯 本题题意很简单,就是有一条位数不超过6的数字纸条,问你怎么剪这纸条,使得得到的纸条的值的总和最接近目标值(总和不能超过目标值). 比如第一个样例 50 ...

  8. JPA批量插入优化

    遇到一个需求是excel数据导入,一次大概会批量插入几万的数据.写完一测奇慢无比. 于是开始打日志,分析代码,发现是插入数据库的时候耗时很长,发现是spring data jpa的原因. 翻看jpa的 ...

  9. 关于lct维护动态生成树问题

    水管局长数据加强版 题意是要求维护一棵最小生成树,支持删边操作. 删边操作比较难处理,因为如果删掉树上的边, 很难从已经有备选集合中找出连接不同联通块的最小的边. 然而题目并没有要求在线. 所以离线. ...

  10. 模拟26A 题解

    A. marshland 考试时想到了网络流,然而不会建图,就死了. 正解是最大费用可行流. 比较容易想到的是将每个点拆为两个点, s连没有危险值的入点, 没有危险值的入点连有危险值的入点,入点出点之 ...