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 中通过对主机的各层进行扩展提供高可用性的方案. 分隔各个区域的功能分为不同的主机和中的层 ...
随机推荐
- MyBatis学习(一)
前言 再过一个月,转行做java web就满一年了.当初吸引我进入公司的,其实并不是java web,而是领导给我描述的hadoop生态圈.公司的hadoop集群以及大数据业务.可是进入公司后才发现, ...
- 经验分享:Linux 双网卡 不同网段 网络互通
环境如下: 现状:一台linux主机上有两个网卡eth0 和eth1 ,机器能访问192网的服务资源,但不能访问10网段的资源. 要求:linux能通过eth1访问10网段的资源 路由: 网卡: 操作 ...
- CentOS 6 到 CentOS 7
redhat提供了一个redhat-upgrade-tool的升级工具: [1]配置软件源 # vim /etc/yum.repos.d/upgrade.repo [upgrade] name=u ...
- Businessworks的设计思想
Businessworks的设计思想基于一下三篇ATA: <从Eclipse平台看交易平台化>,强调微内核和扩展机制实现 <Google Guice平台模块化开发的果汁>,讨论 ...
- 阿里weex学习入门必备
1.阿里weex学习前景 至于这些东西,可以参照一下链接去看看其作用.... http://share.iclient.ifeng.com/news/sharenews.f?forward=1& ...
- 查询01_DML锁和DDL锁的处理
一.摘要 Oracle的手册上关于锁的分类说明如下: 1. DML锁:Date lock.执行DML时保护数据的锁.Row Lock(TX)保护特定行,Table Lock(TM)保护整个表,可以通过 ...
- Unity关于脚本前面的勾选框
今天做项目时需要在某个事件条件下禁用某个脚本,但是突然发现这个脚本前面没有勾选框,,,就像这样 网上搜了下,原来是需要在脚本中加上void Start()方法,即使这个方法里什么都没有 void St ...
- eclipse @override注解出错
在工程中新建了一个接口,定义了一个methodA,然后写一个接口类实现该方法,并加上@override注解 项目提示@override出错,必须覆盖原方法XXX,解决办法 1)项目右键-project ...
- javascript函数原型理解
一.当引用一个对象的属性时,若该对象没有此属性,则会查找该对象的原型,若原型上存在该属性,则返回该属性. <script type="text/javascript"> ...
- <2016-1-29>
1.打电话,发短信,发邮件 //打电话 <script> function call(){ var call = new CallManage(); call.call('10086'); ...