Sun_china

交流更多,收获更多?

博客园 首页 新随笔 联系 订阅 管理

一、取消主体/镜像关系

 

1、 取消主体服务器实例

在主体数据库实例master数据库下,执行:

    Alter database pqsys_config set partner off

    Alter database pqsys_history set partner off

2、 取消镜像服务器实例

在镜像数据库实例master数据库下,执行:

Alter database pqsys_config set partner off

Alter database pqsys_history set partner off

待完全解除镜像关系后,对数据库进行恢复

Restore database pqsys_config with recovery

Restore database pqsys_history with recovery

3、 删除各个数据库实例下的端点

分别在主体、镜像、鉴证数据库实例master数据库下执行:

Drop endpoint [端点名称]

以上操作,可以解除主体/镜像关系

一、配置主体/镜像数据库实例(同一台服务器)

1安装三个数据库实例

分别为主体、镜像、见证实例,在主体和镜像数据库实例上创建PQSYS数据库,pqsys_config和pqsys_history。

2设置主体数据库与镜像数据库的恢复模式为"完整"

USE master;

GO

ALTER DATABASE PQSYS_CONFIG

SET RECOVERY FULL;

GO

ALTER DATABASE PQSYS_HISTORY

SET RECOVERY FULL;

GO

3、备份主体数据库实例中的pqsys_configpqsys_history数据库

BACKUP DATABASE PQSYS_CONFIG

    TO DISK = 'd:/PC.BAK'  --根据实际需求修改路径

    WITH FORMAT

GO

BACKUP DATABASE PQSYS_HISTORY

    TO DISK = 'd:/PH.BAK'  --根据实际需求修改路径

    WITH FORMAT

GO

4在镜像服务器上恢复数据库备份,并使用NO RECOVERY选项

RESTORE DATABASE PQSYS_CONFIG

FROM DISK = 'd:/PC.BAK' WITH NORECOVERY  --根据实际需求修改路径

GO

RESTORE DATABASE PQSYS_HISTORY

FROM DISK = 'd:/PH.BAK' WITH NORECOVERY  --根据实际需求修改路径

GO

5、在主体服务器上创建数据库镜像端点,用于伙伴通讯

CREATE ENDPOINT DbMirroringEP

AS TCP (LISTENER_PORT = 5022)

FOR DATABASE_MIRRORING (ROLE = PARTNER, ENCRYPTION = SUPPORTED);

GO

ALTER ENDPOINT DbMirroringEP STATE = STARTED

GO

6、在镜像服务器上创建数据库镜像端点,用于伙伴通讯

CREATE ENDPOINT DbMirroringEP

AS TCP (LISTENER_PORT = 5023)

FOR DATABASE_MIRRORING (ROLE = PARTNER, ENCRYPTION = SUPPORTED);

GO

 

ALTER ENDPOINT DbMirroringEP STATE = STARTED

GO

7、在见证服务器上创建数据库镜像端点,用于见证通讯

CREATE ENDPOINT DbMirroringEP

AS TCP (LISTENER_PORT = 5024)

FOR DATABASE_MIRRORING (ROLE = WITNESS, ENCRYPTION = SUPPORTED);

GO

ALTER ENDPOINT DbMirroringEP STATE = STARTED

GO

8、检查端点配置

SELECT * FROM sys.database_mirroring_endpoints

GO

 

9、在镜像服务器上指定伙伴端点

ALTER DATABASE PQSYS_CONFIG

SET PARTNER = N'TCP://BOAT:5022' -- boat主机名

GO

10、在主体服务器上指定伙伴端点

ALTER DATABASE PQSYS_CONFIG

SET PARTNER = N'TCP://BOAT:5023' -- boat主机名

GO

注意:

 运行该步时,可能出现如下错误:“镜像数据库"pqsys_config" 包含的事务日志数据不足,无法保留主体数据库的日志备份链。如果没有从主体数据库进行日志备份或者没有在镜像数据库上还原日志备份,则可能会出现这种情况。”

该问题产生的原因在于在配置期间又对主体数据库实例进行了操作,导致两者日志不一致。出现这种情况需重新对主体数据库进行事务日志备份,再对镜像数据库进行事务日志还原,并使用norecovery选项。

 

11、在主体服务器上指定见证服务器端点

ALTER DATABASE PQSYS_CONFIG

SET WITNESS = N'TCP://BOAT:5024' -- boat主机名

GO

12、配置数据库镜像事务安全级别

ALTER DATABASE PQSYS_CONFIG SET SAFETY FULL

GO

一、配置主体/镜像数据库实例(主体和镜像处于不同服务器)

主体和镜像位于不同服务器上,实现方式与上面类似,但是由于受到安全的限制,需要配置证书才能指定伙伴关系。

在第二点8步执行完毕后,增加配置证书的部分即可。

配置证书包括两个方面:

1、配置出站连接

1、在 master 数据库上,创建数据库主密钥(如果不存在)。若要查看数据库的现有密钥,请使用 sys.symmetric_keys 目录视图。

若要创建数据库主密钥,请使用下面的 Transact-SQL 命令:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<1_Strong_Password!>';

GO

使用唯一的强密码,并将其记录到一个安全的位置。

2、在 master 数据库中,对服务器实例创建一个用于其数据库镜像出站连接的加密证书。

例如,为 HOST_A 系统创建一个证书。

USE master;

CREATE CERTIFICATE HOST_A_cert

   WITH SUBJECT = 'HOST_A certificate for database mirroring',

 Start_DATE = '01/07/2009',

EXPIRY_DATE = '07/07/2030';

GO

3、确保每个服务器实例上都存在数据库镜像端点。

如果端点不存在,请创建一个端点,该端点使用此证书进行出站连接,并使用此证书的凭据通过其他系统的验证。这是一个服务器范围内的端点,供服务器实例参与的所有镜像会话使用。

CREATE ENDPOINT DbMirroringEP

   STATE = STARTED

   AS TCP (

      LISTENER_PORT=5022

      , LISTENER_IP = ALL

   )

   FOR DATABASE_MIRRORING (

      AUTHENTICATION = CERTIFICATE HOST_A_cert

      , ENCRYPTION = REQUIRED ALGORITHM RC4

      , ROLE = ALL

   );

GO

如果端点存在,则使用

alter ENDPOINT DbMirroringEP

   STATE = STARTED

   AS TCP (

      LISTENER_PORT=5022

      , LISTENER_IP = ALL

   )

   FOR DATABASE_MIRRORING (

      AUTHENTICATION = CERTIFICATE HOST_A_cert

      , ENCRYPTION = REQUIRED ALGORITHM RC4

      , ROLE = ALL

   );

为端点配置证书。

4、备份证书并将其复制到其他系统。若要在其他系统上配置入站连接,此步骤是必需的。

BACKUP CERTIFICATE HOST_A_cert TO FILE = 'd:/HOST_A_cert.cer';

GO

5、配置完毕第一台数据库实例,再按照上面步骤配置其它数据库服务器实例,脚本如下:

USE master;

--Create the database Master Key, if needed.

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong_Password_#2>';

GO

-- Make a certifcate on HOST_B server instance.

CREATE CERTIFICATE HOST_B_cert

   WITH SUBJECT = 'HOST_B certificate for database mirroring',

Start_DATE = '01/07/2009',

    EXPIRY_DATE = '07/07/2030' ;

GO

--Create or Alter a mirroring endpoint for the server instance on HOST_B.

CREATE ENDPOINT DbMirroringEP

   STATE = STARTED

   AS TCP (

      LISTENER_PORT=5023

      , LISTENER_IP = ALL

   )

   FOR DATABASE_MIRRORING (

      AUTHENTICATION = CERTIFICATE HOST_B_cert

      , ENCRYPTION = REQUIRED ALGORITHM RC4

      , ROLE = ALL

   );

GO

--Backup HOST_B certificate.

BACKUP CERTIFICATE HOST_B_cert TO FILE = 'd:/HOST_B_cert.cer';

GO

 

2、配置入站连接

1、创建另一个系统的登录名。

 

下面的示例在 HOST_A 上的服务器实例的 master 数据库中为系统 HOST_B 创建登录名,在此示例中,登录名为 HOST_B_login。请用自己的密码替换示例密码。

USE master;

CREATE LOGIN HOST_B_login WITH PASSWORD = '1Sample_Strong_Password!@#';

GO

2、为该登录创建一个用户。

下面的示例为上述步骤中创建的登录名创建了一个用户 HOST_B_user。

USE master;

CREATE USER HOST_B_user FOR LOGIN HOST_B_login;

GO

3、将证书与步骤2 中创建的用户关联在一起。下面的示例将HOST_B 的证书与它在HOST_A 上的用户关联。

USE master;

CREATE CERTIFICATE HOST_B_cert

   AUTHORIZATION HOST_B_user

   FROM FILE = 'D:/HOST_B_cert.cer'

GO

4、授予对远程镜像端点的登录名的 CONNECT 权限。

例如,若要将对 HOST_A 的权限授予 HOST_B 上的远程服务器实例,以连接到其本地登录名,即连接到 HOST_B_login,请使用以下 Transact-SQL 语句:

USE master;

GRANT CONNECT ON ENDPOINT:: DbMirroringEP TO [HOST_B_login];

GO

5、在HOST_A上为见证服务器实例执行相同的入站步骤,重复上面1-4。

6、现在需要在 HOST_B 上为 HOST_A 执行相同的入站步骤。下面示例部分中的入站部分说明了这些步骤。

USE master;

--On HOST_B, create a login for HOST_A.

CREATE LOGIN HOST_A_login WITH PASSWORD = 'AStrongPassword!@#';

GO

--Create a user, HOST_A_user, for that login.

CREATE USER HOST_A_user FOR LOGIN HOST_A_login

GO

CREATE CERTIFICATE HOST_A_cert

   AUTHORIZATION HOST_A_user

   FROM FILE = 'D:/HOST_A_cert.cer';

GO

--Grant CONNECT permission for the server instance on HOST_A.

GRANT CONNECT ON ENDPOINT:: DbMirroringEP TO HOST_A_login

GO

7、在HOST_B上为见证服务器实例执行上述入站操作。

8、在见证服务器实例上为HOST_A和HOST_B配置入站操作。

 

9、配置完毕后,再继续执行第二部分8以后的步骤

 

 

 

 

 

四、设置SQL AGENT计划

1、使用SQL AGENT的原因

采取主体/镜像数据库方式实现数据库双机热备功能必须将数据库的恢复模式设置为完整模式,在完整模式下,对数据库所作的每一个数据操作都会写入到数据库的事务日志文件中,这样就导致在需要频繁操作数据库的情况下,事务日志文件增长的很快,在磁盘资源有限的情况下必须考虑限制事务日志的方法。

可以采取定期对事务日志文件进行备份方式来实现,而通过SQL SERVER 2005自带的AGENT功能来实现事务日志的定期备份。

 

2、设置SQL AGENT计划

打开MSSMS(Microsoft SQL Server Management Studio),展开SQL SERVER 代理,并右键“作业”,选择“新建作业”,弹出如图4-1对话框,配置作业。

选中“常规”,填入基本信息;

选中“步骤”,点击对话框下方的“新建”按钮,输入“常规”选项卡上的信息,包括步骤名称、类型、数据库和命令,然后点击确定。如图4-2所示,命令内容是一组SQL脚本,以PQSYS_CONFIG数据库为例:

declare @role int

set @role = (select mirroring_role from sys.database_mirroring

where database_id =

(select database_id from sys.databases where name = N'PQSYS_CONFIG'))

if @role = 1          --对于主体数据库才执行备份操作

begin

BACKUP LOG [PQSYS_CONFIG] TO  DISK = N'E:/wenjian/PC.BAK'

WITH NOFORMAT, INIT,  NAME = N'PC ',

SKIP, NOREWIND, NOUNLOAD,  STATS = 10

end

选中“计划”,点击对话框下方的“新建”按钮,输入计划执行的“名称”、“计划类型”以及执行时间设置等,设置完毕后点击确定。 

点击“确定”按钮,完成SQL AGENT设置。

针对需要进行定期备份的其他数据库设置SQL 代理。

 

 

 

五、注意事项

1、数据库版本要求 

    必须使用SQL SERVER 2005标准版或以上版本(企业版、开发版、评估版);

    必须在数据库中安装SP1或以上补丁(目前一般使用SP2,版本号为3042);

posted on 2012-07-12 16:52  Sun_china  阅读(471)  评论(0编辑  收藏  举报