部份内容参考原始文章链接: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. IMP本质上是一个通用的函数指针

    IMP:通用的函数指针 /// A pointer to the function of a method implementation. #if !OBJC_OLD_DISPATCH_PROTOTY ...

  2. React Tutorial: Basic Concept Of React Component---babel, a translator

    Getting started with react.js: basic concept of React component 1 What is React.js React, or React.j ...

  3. (21) 树莓派使用python调用命令行 python中调用linux命令及os.system的返回值

    cmd = "sudo shutdown -h now"; os.system(cmd)

  4. Cortex Architecture

    内容来自github 官方文档,参考连接:https://github.com/cortexproject/cortex/blob/master/docs/architecture.md Cortex ...

  5. ABP 02 解决 界面为英文

    原文:https://www.cnblogs.com/wswind/p/10313968.html 1.直接改数据库 2.在数据迁移前,更改默认值 注意: 我的项目已经初始化了,数据库已经都生成好了, ...

  6. 彻底理解C++指针

    目录 目录 1 1. 概念 1 1.1. 双指针 1 1.2. 指针数组 1 1.3. 数组指针 1 1.4. 常见指针定义解读 1 2. 区别 2 3. 兼容性 2 4. 为何列数须相等? 2 5. ...

  7. 模拟测试20191017~18 lrd Day1& Day2

    $Day1:$ $T1:位运算$ 从低位到高位分类讨论就好了 记得判$inf$ $T2:集合论$ 考场上差点就打线段树了 用一个数组维护,同时用一个变量代表当前总体$+$&&$-$的值 ...

  8. 动态规划-多维DP

    1.最大正方形 我的瞎猜分析: 我的瞎猜算法: #include <stdio.h> #include <memory.h> #include <math.h> # ...

  9. 《JAVA程序设计》_第十一周学习总结

    一.学习内容 13.1 URL类 URL类是java.net包中的一个重要的类,URL的实例封装着一个统一资源定位符,使用URL创建对象的应用程序称作客户端程序. 一个URL对象包含的三个基本信息:协 ...

  10. Django实现自动发布(2视图-任务接收)

    上一篇服务版本的新增,是通过触发 gitlab 任务来实现的,那么如何得到任务的最终状态呢? 好在 gitlab 为我们提供了webhook,也就是消息钩子,可以发送pipeline消息到我们指定的地 ...