SQL Server复制情况下的高可用方案(一)镜像+复制
- 通过备份方式准备镜像数据库
BACKUP DATABASE [mydb] TO DISK = N'D:\backup\mydb.bak' WITH NOFORMAT, NOINIT, NAME = N'mydb-完整数据库备份 ', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
BACKUP LOG [mydb] TO DISK = N'D:\backup\mydb.trn' WITH NOFORMAT, NOINIT, NAME = N'mydb-事务日志 备份' , SKIP , NOREWIND , NOUNLOAD , STATS = 10
GO
将备份拷贝到镜像服务器上,在镜像服务器上恢复备份,需要指定RESTORE WITH NORECOVERY
RESTORE DATABASE [mydb] FROM DISK = N'D:\backup\mydb.bak' WITH FILE = 1, NORECOVERY , NOUNLOAD , STATS = 10
GO
RESTORE LOG [mydb] FROM DISK = N'D:\backup\mydb.trn' WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 10
GO
- 配置出站连接和证书
主体数据库配置如下:
--创建密钥
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password'
SELECT * FROM sys.symmetric_keys
--创建证书
CREATE CERTIFICATE cert_3_100
WITH SUBJECT = 'HOST_A certificate for database mirroring',
EXPIRY_DATE = '1/1/2020'
SELECT * FROM sys.certificates ;
--创建端点
CREATE ENDPOINT master_instance
STATE = STARTED
AS TCP (
LISTENER_PORT=5022
, LISTENER_IP = ALL
)
FOR DATABASE_MIRRORING (
AUTHENTICATION = CERTIFICATE cert_3_100
, ENCRYPTION = REQUIRED ALGORITHM AES
, ROLE = ALL
)
SELECT name , role_desc , state_desc , connection_auth_desc , encryption_algorithm_desc
FROM sys.database_mirroring_endpoints
--备份证书到其他系统
BACKUP CERTIFICATE cert_3_101 TO FILE = 'd:\cert_3_100.cer';
GO
镜像数据库配置如下:
--创建密钥
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password'
SELECT * FROM sys.symmetric_keys
--创建证书
CREATE CERTIFICATE cert_3_101
WITH SUBJECT = 'HOST_A certificate for database mirroring',
EXPIRY_DATE = '1/1/2020'
SELECT * FROM sys.certificates ;
--创建端点
CREATE ENDPOINT backup_instance
STATE = STARTED
AS TCP (
LISTENER_PORT=5022
, LISTENER_IP = ALL
)
FOR DATABASE_MIRRORING (
AUTHENTICATION = CERTIFICATE cert_3_101
, ENCRYPTION = REQUIRED ALGORITHM AES
, ROLE = ALL
)
SELECT name , role_desc , state_desc , connection_auth_desc , encryption_algorithm_desc
FROM sys.database_mirroring_endpoints
--备份证书到其他系统
BACKUP CERTIFICATE cert_3_101 TO FILE = 'd:\cert_3_101.cer';
GO
- 配置入站连接和证书
主体数据库配置如下:
USE master
--为其他系统创建登录名
CREATE LOGIN login_3_101 WITH PASSWORD = 'password';
SELECT * FROM sys.server_principals
--创建一个使用该登录名的用户
CREATE USER user_3_101 FOR LOGIN login_3_101
SELECT * FROM sys.sysusers
--将证书与用户关联,并将镜像库生成的证书文件放到指定目录中
CREATE CERTIFICATE cert_3_101
AUTHORIZATION user_3_101
FROM FILE = 'd:\cert_3_101.cer'
SELECT * FROM sys.certificates
--授权对远程镜像端点的登录名的 CONNECT权限,授权完成后,完成对登录到所需的证书身份验证的设置
GRANT CONNECT ON ENDPOINT::master_instance TO login_3_101
镜像数据库配置如下:
USE master
--为其他系统创建登录名
CREATE LOGIN login_3_100 WITH PASSWORD = 'password';
SELECT * FROM sys.server_principals
--创建一个使用该登录名的用户,并将主体库生成的证书文件放到指定目录中
CREATE USER user_3_100 FOR LOGIN login_3_100
SELECT * FROM sys.sysusers
--将证书与用户关联
CREATE CERTIFICATE cert_3_100
AUTHORIZATION user_3_100
FROM FILE = 'd:\cert_3_100.cer'
SELECT * FROM sys.certificates
--授权对远程镜像端点的登录名的 CONNECT权限,授权完成后,完成对登录到所需的证书身份验证的设置
GRANT CONNECT ON ENDPOINT::backup_instance TO login_3_100
- 配置镜像
选择主体数据库mydb数据库对象右键->任务->镜像->配置安全性

因为要采用高性能方式,所以不需要见证服务器





当同步完成后,主体数据库会显示“(主体,已同步)”,镜像数据库会显示(已同步,正在还原)
步骤2:配置分发服务器
- 在发布服务器、分发服务器和订阅服务器配置hosts文件,加入如下配置:
- 将10.86.3.102配置成分发服务器,分发数据库的快照文件建议配置相应的访问权限,因为我的账户有访问权限,所以略去这步

点击添加


- 在分发服务器属性对话框中启用发布服务器

- 在主体数据库(发布数据库)和镜像数据库中指定分发数据库







如果要发布的数据库非常大,建议选择业务空闲期进行初始化快照




输入代理名称,取消勾选“仅显示次配置文件中使用的参数”,指定 –PublisherFailoverPartner 代理参数的镜像名称WIN-3-100







USE mydb
INSERT INTO Admin( user_name) VALUES('master' )
SELECT * FROM admin WHERE user_name='master'

连接订阅库,查询插入数据
USE mydb
SELECT * FROM admin WHERE user_name='master'

use master ;
alter database mydb set partner FORCE_SERVICE_ALLOW_DATA_LOSS; --强制接收
USE mydb
INSERT INTO Admin( user_name) VALUES('mirror' )
SELECT * FROM admin WHERE user_name='mirror'

在订阅服务器查看:
USE mydb
SELECT * FROM admin WHERE user_name='mirror'
use master ;
alter database mydb set partner resume;
SQL Server复制情况下的高可用方案(一)镜像+复制的更多相关文章
- Sql Server优化之索引提示----我们为什么需要查询提示,Sql Server默认情况下优化策略选择的不足
环境: Sql Server2012 SP3企业版,Windows Server2008 标准版 问题由来: 最近在做DB优化的时候,发现一个存储过程有非常严重的性能问题, 由于整个SP整体逻辑是一个 ...
- 疑难杂症--在Windows Server 2008 R2上运行SQL Server 2008情况下,CPU过多导致的问题
64位的Windows7和Windows Server 2008 R2为了能够在一台机器上,支持超过64个逻辑CPU, 引入了Processor Group这个概念.Processor Group会把 ...
- DRBD(Distributed Replicated Block Device) 分布式块设备复制 进行集群高可用方案
DRBD是一个用软件实现的.无共享的.服务器之间镜像块设备内容的存储复制解决方案. 外文名 DRBD drbdadm 高级管理工具 drbdsetup 置装载进kernel的DRBD模块 drbdme ...
- SQL Server Alwayson架构下 服务器 各虚拟IP漂移监控告警的功能实现 -2(虚拟IP视角)
1.需求描述 我们知道Windows Cluster 都是多节点的,当虚拟IP漂移的时候,一般都是从一个节点漂移到另外一个节点.如果可以及时捕捉到旧节点信息是什么.新节点信息是什么对我们提供高可用的数 ...
- keepalived+mysql双主复制高可用方案
MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换.而Keepalived通过虚拟IP,实现了 ...
- centos下搭建高可用redis
Linux下搭建高可用Redis缓存 Redis是一个高性能的key-value数据库,现时越来越多企业与应用使用Redis作为缓存服务器.楼主是一枚JAVA后端程序员,也算是半个运维工程师了.在Li ...
- SQL Server中查询CPU占用高的SQL语句
SQL Server中查询CPU占用高的情况,会用到sys.sysprocesses ,dm_exec_sessions ,dm_exec_requests 一.查看当前的数据库用户连接有多少 USE ...
- MySQL 同步复制及高可用方案总结
1.前言 mysql作为应用程序的数据存储服务,要实现mysql数据库的高可用.必然要使用的技术就是数据库的复制,如果主节点出现故障可以手动的切换应用到从节点,这点相信运维同学都是知道,并且可以实现的 ...
- BizTalk Server 2010高可用方案
BizTalk Server 2010高可用方案 本文介绍了 Microsoft BizTalk Server 中通过对主机的各层进行扩展提供高可用性的方案. 分隔各个区域的功能分为不同的主机和中的层 ...
随机推荐
- Python之路,day5-Python基础
for#列表生成式 data = [1,2,3,4,5,6,7] #####列表生成式 #data = [i+1 for i in data] data = [i*2 if i>5 else i ...
- nginx文件目录权限设置
1.有时我们web服务器上的某个文件夹只允许特定人员访问,这时我们需要在nginx配置文件中配置该文件夹的访问权限. 2.生成用户名单在nginx中我们使用htpasswd来生成用户名单下载这个pyt ...
- 10天学会phpWeChat——第二天:hello world!我的第一个功能模块
今天我们开始进入<10天学会phpWeChat>系列教程的第二天:创建我的第一个hello world! 功能模块. 1.登录后台,进入 系统设置--自定义模块,如图: 自定义模块参数说明 ...
- Java 使用线程方式Thread和Runnable,以及Thread与Runnable的区别
一. java中实现线程的方式有Thread和Runnable Thread: public class Thread1 extends Thread{ @Override public void r ...
- Java基础--Java语言介绍
Java是一种半编译半解释的语言.1.编译阶段使用指令:javac这个阶段,Java编译器(也就是JVM:java虚拟机,后称JVM),首先把你的代码加载完成,然后开始检查语法.此后会产生.class ...
- [转]./configure,make,make install的作用
./configure,make,make install的作用(转) 这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤. ./configure是用来检测你的安装平台 ...
- [PHP] - Laravel - 用户登陆中间件
前言 Laravel 4中,可以使用Route::filter,而在Laravel 5中,没有了filter.php文件,官方建议使用中间件做. 下面是用户登陆的测试例子,涉及到的一些方法和使用,先参 ...
- open office操作word文档
前段时间工作需要使用open office往word中写文件,写图片,以及向footer也就是页尾中插入图片,已经封装成了类,直接调用即可,代码如下: package com.test.common. ...
- JMeter Webservice测试计划
一.新建测试计划:HelloWorld测试计划 二.添加线程组 编辑线程组属性: 三.添加 SOAP/ XML-RPC 请求元素 四.填入url地址及请求报文 此处的请求报文,是用soapUI生成的, ...
- LeetCode "Largest Divisible Subset" !
Very nice DP problem. The key fact of a mutual-divisible subset: if a new number n, is divisible wit ...