惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
云风的 BLOG
云风的 BLOG
大猫的无限游戏
大猫的无限游戏
M
MIT News - Artificial intelligence
L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Recent Announcements
Recent Announcements
IT之家
IT之家
Google DeepMind News
Google DeepMind News
罗磊的独立博客
爱范儿
爱范儿
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
U
Unit 42
MongoDB | Blog
MongoDB | Blog
S
SegmentFault 最新的问题
B
Blog
博客园 - 叶小钗
月光博客
月光博客
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
C
Check Point Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

博客园 - Gavin Liu

sp_MSforeachtable 与 sp_MSforeachdb Microsoft SQL Server 数据库服务器管理维护角色 HttpHander与httpModel配置与应用 镜像数据库日志截断方法 SQL Server 2008连接字符串写法大全 .NET分布式事务处理 .net 事务处理的三种方法 SQLServer游标(Cursor) (B) SQLServer 游标 (A) 无光驱在32位windows系统下安装64位windows系统 Create a SQL Server Database on a network shared drive android adb shell dumpsys 如何获取SQLite最新版本及SQLite数据库中的SQL语句解说 sqlite错误 The database disk image is malformed database disk image is malformed 可解决 Xml中SelectSingleNode方法中的xpath用法[转] 利用ASP在线压缩access数据库 英文 视频 老友记 第一季 第二季 第三季 第四季 第五季 第六季 第七季 第八季 第九季 第十季 几个好用的webservice SQL Server 2008 中文版安装下载地址
Sql server 2008镜像配置步骤
Gavin Liu · 2013-07-10 · via 博客园 - Gavin Liu

下面主要是2008 MSSQL的一个镜像安装步骤,使用到的工具是mssql自带的Management Studio

purpose : SQL SERVER 2008 mirror configuration
Created : 2012-04-13
Author   : kenyon

镜像安装的环境:
主机:win server 2003,sql server 2008,IP:192.168.9.182 PC账户:administrator
备机:win server 2003,sql server 2008,IP:192.168.9.181 PC账户:administrator
无见证服务器(witness)

说明:
a.镜像服务器备份的是用户的数据库,不是系统的数据库,比如不能镜像master,msdb,model和tempdb
b.镜像的数据库对象恢复模式必须是完整的,不能是简单和大容量日志类型的
c.备机镜像不能被访问,正常情况下一直处于正在还原的状态
d.主机可以被访问,正常情况下一直处于主体正在同步的状态
e.主机和备机的5022端口必须没有被占用,可以用telnet 192.168.9.182 5022来验证

0.确定主机的恢复模式是完整性恢复的
USE master;
ALTER DATABASE backuptest SET RECOVERY FULL;

1.创建证书,实现互通的根本
--主机
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'clq';
CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = 'HOST_A certificate' ,
START_DATE = '09/20/2011',EXPIRY_DATE = '01/01/2099';

--备机
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'clq';
CREATE CERTIFICATE HOST_B_cert WITH SUBJECT = 'HOST_B certificate',
START_DATE = '09/20/2011' ,EXPIRY_DATE = '01/01/2099';

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 = 'D:\working\HOST_A_cert.cer';
--备机
BACKUP CERTIFICATE HOST_B_cert TO FILE = 'D:\working\HOST_B_cert.cer';

4.主备之间互换证书
将主机上产生的证书HOST_A_cert复制到备机上,将备机上产生的证书HOST_B_cert复制到主机上,放在第5步指定的目录

5.新增主备登陆用户
--主机
CREATE LOGIN HOST_B_login WITH PASSWORD = 'clq';  --主机上登录到备机的用户
CREATE USER HOST_B_user FOR LOGIN HOST_B_login;
CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = 'D:\working\HOST_B_cert.cer';
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];

--备机
CREATE LOGIN HOST_A_login WITH PASSWORD = 'clq';  --备机上登录到主机的用户
CREATE USER HOST_A_user FOR LOGIN HOST_A_login;
CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = 'D:\working\HOST_A_cert.cer';
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];

6.登录名维护,即主机与备机有相同的登录用户,防止切换到备机时业务无法登录,假如主备登录用户一致,此步骤可免
--主机
use master;
select sid,name from syslogins where name = 'clq';
sid                                        name
0xC6C9DB1494DA514882D4BEAA362A8FB7        clq

--备机
USE master;
exec sp_addlogin
@loginame = 'clq',
@passwd = 'clq',
@sid = 0xC6C9DB1494DA514882D4BEAA362A8FB7 ;

----以下步骤是针对每个库执行的,有几个库就执行几次

7.准备备机数据库
--主机
backup database backuptest to disk= 'E:\database\sql server\MSSQL10.MSSQLSERVER\MSSQL\Backup\backuptest.log'
with init
go

--备机
将主机上备份的文件复制到备机上,并还原备机数据库,还原时必须指定norecovery参数
create database backuptest;   --该步骤为备机上无此数据时需先创建一个空数据库,若已有则直接恢复
restore database backuptest from disk = 'E:\working\backuptest.log' with norecovery;
恢复时指定覆盖原有备机数据库即可。

当恢复时报错时可以参考用replace参数(首次恢复)
restore database EOL_TCCLUB FROM disk= 'd:\backup\EOL_TCCLUB.bak'
with move 'AC_SSC_BZ' to 'D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\EOL_TCCLUB.mdf',
move 'AC_SSC_BZ_log' to 'D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\EOL_TCCLUB.ldf',
replace,norecovery.

如果还不行,报错信息如:日志尾部未备份之类信息,则去主机上备份日志文件,在备机上做恢复,恢复时同样指定norecovery。

8.增加镜像伙伴,需要先在备机上执行,再执行主机
--备机
ALTER DATABASE backuptest SET PARTNER = 'TCP://192.168.9.181:5022';
--主机
ALTER DATABASE backuptest SET PARTNER = 'TCP://192.168.9.182:5022';

执行成功以后,主机上数据库backuptest会显示主体正在同步字样,备机数据库会显示正在还原字样。若上述步骤
有报日志错误,则还需从主机上备份日志文件,然后在备机上还原,还原日志时同样需要指定norecovery

9.镜像与主体切换
--主机
use master;
alter database backuptest set partner failover;
执行成功后原主体数据库会显示正在还原,备机数据库显示主体正在同步字样

10.测试主备切换
主机崩溃,强制备机当主机,原主机恢复后再切换回去
主机A
备机B
此时,在B机上执行
use master;
alter database backuptest set partner FORCE_SERVICE_ALLOW_DATA_LOSS; --强制接收
停止主机A的SQL SERVER 服务(比如断电),此时备机上的数据库会显示正在恢复状态,大概持续几十秒,最后变成
backuptest(主体,已断开链接),即现在的镜像B可以用来充当主机了
假如现在有业务往数据库里插也是能成功的
现在把原主机A恢复(通电),然后在B机里操作
use master;
alter database backuptest set partner resume;
此时A机是作为镜像的,B机是作为主机的,要再切换一下,则再在B上执行
alter database backuptest set partner failover;