sql server 镜像库搭建

  1. 数据库环境准备
  1. 若要对 DXS 数据库使用数据库镜像,请改用完整恢复模式: 
USE master;  

GO  

ALTER DATABASE DXS  

SET RECOVERY FULL;  

GO  

将数据库的恢复模式从 SIMPLE 更改为 FULL 之后,创建一个完整备份,以用于创建镜像数据库。 由于恢复模式已更改,因此指定了 WITH FORMAT 选项来创建新的介质集。 这对区分完整恢复模式下的备份与以前在简单恢复模式下创建的备份非常有用。 为了实现此示例的目的,在数据库所在的同一驱动器上创建备份文件 (C:\DXS.bak)。

  1. 对于生产数据库,应始终备份到单独的设备。

在主体服务器实例 ( PARTNERHOST1) 上,创建主体数据库的完整备份,如下所示:

BACKUP DATABASE DXS   

    TO DISK = 'C:\DXS.bak'   

    WITH FORMAT  

GO  

  1. 将完整备份复制到镜像服务器。

使用 RESTORE WITH NORECOVERY,将完整备份还原到镜像服务器实例。 还原命令取决于主体数据库与镜像数据库的路径是否相同。

如果路径相同:

在 PARTNERHOST5的镜像服务器实例上,还原完整备份,如下所示:

RESTORE DATABASE DXS   

    FROM DISK = 'C:\DXS.bak'   

    WITH NORECOVERY  

GO  

如果路径不同:

如果镜像数据库的路径与主体数据库的路径不同(例如,它们所在的驱动器号不同),则创建镜像数据库要求还原操作包含 MOVE 子句。

 重要

如果主体数据库与镜像数据库的路径名称不同,则无法添加文件。 原因是在接收添加文件操作所需的日志时,镜像服务器实例尝试将新文件放置在主体数据库所在的位置。

例如,以下命令将位于 C:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\ 中的主体数据库备份还原到镜像数据库所在的另一个位置 D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\。

RESTORE DATABASE DXS  

   FROM DISK='C:\DXS.bak'  

   WITH NORECOVERY,   

      MOVE 'DXS_Data' TO   

         'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\DXS_Data.mdf',   

      MOVE 'DXS_Log' TO  

         'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\DXS_Log.ldf';  

GO  

  1. 创建完整备份之后,必须在主体数据库中创建日志备份。 例如,下面的 Transact-SQL 语句将日志备份到先前的完整备份所使用的文件中:
BACKUP LOG DXS   

    TO DISK = 'C:\DXS.bak'   

GO  

  1. 在开始镜像之前,必须应用必要的日志备份(以及所有后续日志备份)。

例如,以下 Transact-SQL 语句还原 C:\DXS.bak 中的第一个日志:

RESTORE LOG DXS   

    FROM DISK = 'C:\DXS.bak'   

    WITH FILE=1, NORECOVERY  

GO  

如果在开始镜像之前进行任何其他日志备份,则还必须使用 WITH NORECOVERY 按顺序将所有这些日志备份还原到镜像服务器上。

例如,以下 Transact-SQL 语句还原 C:\DXS.bak 中的其他两个日志:

复制

RESTORE LOG DXS   

    FROM DISK = 'C:\DXS.bak'   

    WITH FILE=2, NORECOVERY  

GO  

RESTORE LOG DXS   

    FROM DISK = 'C:\DXS.bak'   

    WITH FILE=3, NORECOVERY  

GO  

  1. 正式配置镜像

1、为出站连接配置 DSX(生产库)

在 master 数据库中,创建数据库主密钥(如果需要)。

USE master;  

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '123456';  

GO  

为此服务器实例制作一个证书。

USE master;  

CREATE CERTIFICATE HOST_A_cert   

   WITH SUBJECT = 'HOST_A certificate';  

GO

  

使用该证书为服务器实例创建一个镜像端点。

CREATE ENDPOINT Endpoint_Mirroring  

   STATE = STARTED  

   AS TCP (  

      LISTENER_PORT=7024  

      , LISTENER_IP = ALL  

   )   

   FOR DATABASE_MIRRORING (   

      AUTHENTICATION = CERTIFICATE HOST_A_cert  

      , ENCRYPTION = REQUIRED ALGORITHM AES  

      , ROLE = ALL  

   );  

GO  

备份 DSX(生产库) 证书,并将其复制到其他系统,即 HOST_B。

BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\HOST_A_cert.cer';  

GO  

使用任一安全的复制方法,将 C:\HOST_A_cert.cer 复制到 HOST_B。

2、为出站连接配置 DXS(数据库故障转移集群)

在 master 数据库中,创建数据库主密钥(如果需要)。

USE master;  

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '';  

GO  

为 DXS(数据库故障转移集群)服务器实例制作一个证书。

CREATE CERTIFICATE HOST_B_cert   

   WITH SUBJECT = 'HOST_B certificate for database mirroring';  

GO  

在 DXS(数据库故障转移集群)中为服务器实例创建一个镜像端点。

CREATE ENDPOINT Endpoint_Mirroring  

   STATE = STARTED  

   AS TCP (  

      LISTENER_PORT=7024  

      , LISTENER_IP = ALL  

   )   

   FOR DATABASE_MIRRORING (   

      AUTHENTICATION = CERTIFICATE HOST_B_cert  

      , ENCRYPTION = REQUIRED ALGORITHM AES  

      , ROLE = ALL  

   );  

GO  

备份DXS(数据库故障转移集群)证书。

BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer';  

GO   

使用任一安全的复制方法,将 C:\HOST_B_cert.cer 复制到 HOST_A。

3、配置入站连接

3.1、为入站连接配置  DSX(生产库)

在  DSX(生产库) 上为 DXS(数据库故障转移集群) 创建一个登录名。

USE master;  

CREATE LOGIN HOST_B_login WITH PASSWORD = '1qaz@WSX';  

GO  

创建一个使用该登录名的用户。

CREATE USER HOST_B_user FOR LOGIN HOST_B_login;  

GO  

使证书与该用户关联。

CREATE CERTIFICATE HOST_B_cert  

   AUTHORIZATION HOST_B_user  

   FROM FILE = 'C:\HOST_B_cert.cer'  

GO  

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

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

GO  

3.2、为入站连接配置 DXS(数据库故障转移集群)

在 DXS(数据库故障转移集群) 上为 DSX(生产库) 创建一个登录名。

USE master;  

CREATE LOGIN HOST_A_login WITH PASSWORD = '=Sample#2_Strong_Password2';  

GO  

创建一个使用该登录名的用户。

CREATE USER HOST_A_user FOR LOGIN HOST_A_login;  

GO  

使证书与该用户关联。

CREATE CERTIFICATE HOST_A_cert  

   AUTHORIZATION HOST_A_user  

   FROM FILE = 'C:\HOST_A_cert.cer'  

GO  

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

GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];  

GO  

  1. 配置镜像伙伴

在 DXS(数据库故障转移集群) 的镜像服务器实例上,将 DSX(生产库) 上的服务器实例设置为伙伴(使其成为初始主体服务器实例)。

将 TCP://

--At HOST_B, set server instance on HOST_A as partner (principal server):  

ALTER DATABASE AdventureWorks   

    SET PARTNER = 'TCP://HOST_A.Mydomain.Corp.Adventure-Works.com:7024';  

GO  

在 DSX(生产库) 的主体服务器实例上,将 DXS(数据库故障转移集群) 上的服务器实例设置为伙伴(使其成为初始镜像服务器实例)。

将 TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024替换为有效的网络地址。

--At HOST_A, set server instance on HOST_B as partner (mirror server).  

ALTER DATABASE AdventureWorks   

    SET PARTNER = 'TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024';  

GO  

你可能感兴趣的:(数据库,oracle)