Heim  >  Artikel  >  Datenbank  >  SQlLserver2008镜像

SQlLserver2008镜像

WBOY
WBOYOriginal
2016-06-07 15:15:021130Durchsuche

下面主要是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.1

下面主要是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';


--备机

USE master;

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'clq';

CREATE CERTIFICATE HOST_B_cert WITH SUBJECT = 'HOST_B certificate', 

START_DATE = '09/20/2011';


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;


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn