菜单

非域模式,2005数据库镜像配置脚本示例

2020年4月16日 - 4166am金沙下载

核心提示:这篇论坛文章(赛迪网技术社区)主要介绍了SQL Server
2005数据库镜像的配置脚本

通过证书方式创建数据库镜像

/*************************************************
*sql镜像的具体配置步骤说明
*Crate DataTime:
*2016-0205-2016-02-06研究成功
*Expian:
*本实例没有配置见证服务器,非域环境,数据库版本为SQL2008数据中心版
*两台机,系统版本为SERVER
2012,IP分别为:192.168.1.25(A)、192.168.1.26(B)
*其中A为主数据库,B为镜像库;
*遇到的问题记录如下:
*1)两台机都要放1433、5022
*2)主数据库备份时要用语句备份
*3)镜像服务器在恢复数据库时选择NORECOVERY(不回滚),默认为RECOVERY(回滚);
*恢复后会发现B数据中一直处于还原状态,属于正常现像。
*如果用的是RECOVERY,在双方镜像时会出现1416,没有为镜像配置XX数据库。
*后在国外一网站上查到原因了,顺利解决!
*—在网上找了很多,都没有解决这个问题,下面记录一下外国友人说的方法——
*I hope now it will be easy. First, backup the database on primary
server,
*thern copy the backup to the mirror server and then restore the
database with NORECOVERY option.
*Then backup the LOG (I hope your database is in FULL recovery mode) on
the primary database,
*copy to mirror and restore this log with NORECOVERY option. And then
try to start mirroring as soon as you can.
* – Alex_L Mar 28 ’12 at 7:43
***************************************************/
————-首先配置主服务A————-
–创建主密钥
USE master ;
CREATE MASTER KEY ENCRYPTION BY PASSWORD= ‘123456’;
GO
–创建证书
4166m金沙,CREATE CERTIFICATE as_a_cert–证书名,自由命名
WITH SUBJECT=’as_a_cert’,
EXPIRY_DATE=’01/01/2099′ ;–终止日期,开始时间我这里没有写
GO
–用上面的证书创建镜像端点
–[databasemirroring]镜像端点名,可以自己命名
IF NOT EXISTS ( SELECT  1
                FROM    sys.database_mirroring_endpoints )
    BEGIN
        CREATE ENDPOINT [databasemirroring] STATE= STARTED AS TCP (
LISTENER_PORT=5022,
            LISTENER_IP= ALL ) FOR DATABASE_MIRRORING (
AUTHENTICATION=
            CERTIFICATE as_a_cert, ENCRYPTION= REQUIRED ALGORITHM AES,
ROLE=
            ALL ) ;
    END
—备份证书
BACKUP CERTIFICATE as_a_cert
TO FILE=’c:\as_a_cert.cer’;–路径
GO

这篇论坛文章(赛迪网技术社区)主要介绍了SQL Server
2005数据库镜像的配置脚本,详细内容请大家参考下文: SQL Server
2005数据库镜像配置脚本:

主数据库代码:

—备份主体数据库–依次执行
ALTER DATABASE news SET RECOVERY FULL;
–2)
BACKUP DATABASE news TO DISK=’c:\news.bak’ WITH
format;–备份数据库主体
–3)
BACKUP LOG news TO DISK=’C:news.bak’;–备份日志

示例如下:

4166m金沙 14166m金沙 2Code
USE [master]

/*
*A上面证书、镜像端点已经完成了,B服务器步骤同上,A和B创建完成后,将证书相互对拷
*B服务器步骤同上,只是证书名要改为B
*将双方的证书对拷
*/
—注册B服务器的证书,创建用户并映射,下面语句要一起运行–在主服务器(A)上运行
CREATE LOGIN b_login WITH PASSWORD=’123456′;
CREATE USER b_user FOR LOGIN b_login;
CREATE CERTIFICATE as_b_cert AUTHORIZATION b_user FROM
FILE=’C:\as_b_cert.cer’;
GRANT CONNECT ON
ENDPOINT::databasemirroring/*(镜像名字,可以自己命名)*/ TO
[b_login];
GO
—注册A服务器的证书,创建用户并映射,下面语句要一起运行–在主服务器(B)上运行
CREATE LOGIN a_login WITH PASSWORD=’123456′;
CREATE USER a_user FOR LOGIN a_login;
CREATE CERTIFICATE as_a_cert AUTHORIZATION b_user FROM
FILE=’C:\as_a_cert.cer’;
GRANT CONNECT ON
ENDPOINT::databasemirroring/*(镜像名字,可以自己命名)*/ TO
[a_login];
GO
—-在B上恢复数据库,要选择”不回滚“,否会出错!恢复完成后会看到数据库一直处于“正在还原中”
—-恢复数据库(步骤省略)

–在MIR-A上,创建数据库镜像端点

–创建数据库主密钥。
IF EXISTS(SELECT * FROM sys.databases WHERE name=’master’ and is_master_key_encrypted_by_server=1)    
    –drop master key;
    OPEN MASTER KEY DECRYPTION BY PASSWORD=’123456789′;
ELSE
    create MASTER KEY ENCRYPTION BY PASSWORD=’123456789′;
GO

—-创建镜像-先在镜像服务器(B)执行–
ALTER DATABASE news SET
PARTNER=’tcp://192.168.1.25:5022′;–与主服务器建立连接
–在主服务器(A)上运行
ALTER DATABASE news SET
PARTNER=’tcp://192.168.1.26:5022′;–与镜像服务器建立连接
–成功后会看到主服务器上显示”主体已同步”,B镜像服务器上显示“正在还原”
–到这一步就大功告成了,可以来测试了,通过故障转移来测试数据是否同步!
 –2016/02/06/14:53/福田国际电商务产业园/暾

create endpoint DB_MirroringEP

SELECT * FROM sys.key_encryptions;
go

AS tcp (listener_port = 5022)

–向数据库中添加证书。
IF EXISTS(select * from sys.database_mirroring_endpoints WHERE name=’Endpoint_Mirroring’)
    DROP ENDPOINT Endpoint_Mirroring
GO

for database_Mirroring (role = partner,encryption=supported);

IF EXISTS(select * from sys.certificates WHERE name=’HOST_A_cert’)
    DROP CERTIFICATE HOST_A_cert;
GO

go

CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = ‘HOST_A certificate’,
    START_DATE = ‘2008-01-01’;
GO

–在MIR-B上,创建数据库镜像端点,用于伙伴通讯

SELECT * FROM sys.certificates;
GO

CREATE ENDPOINT Db_MirroringEP

–创建数据库端点
IF EXISTS(SELECT * FROM sys.database_mirroring_endpoints WHERE name=’Endpoint_Mirroring’)
    DROP ENDPOINT Endpoint_Mirroring;
GO

AS TCP (LISTENER_PORT = 5022)

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 RC4 , 
        ROLE = PARTNER );
GO

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

SELECT * FROM sys.database_mirroring_endpoints;
GO

GO

–备份证书
BACKUP CERTIFICATE HOST_A_cert TO FILE = ‘D:\MIRROR\HOST_A_cert.cer’;
GO

ALTER ENDPOINT Db_MirroringEP STATE = STARTED

–在服务器之间手动拷贝证书,保证每个服务只器都有所有证书

GO

–创建用户,用于访问MIRROR
IF EXISTS(select * from sys.certificates WHERE name=’HOST_B_cert’)
    DROP CERTIFICATE HOST_B_cert
GO

–在MIR-W上,创建数据库镜像端点,用于见证通讯

IF EXISTS(select * from sys.sql_logins WHERE name=’HOST_B_login’)
    DROP LOGIN HOST_B_login
GO

CREATE ENDPOINT Db_MirroringEP

IF EXISTS(select * from sys.database_principals WHERE  name=’HOST_B_user’)
    DROP USER HOST_B_user
GO

AS TCP (LISTENER_PORT = 5022)

create LOGIN HOST_B_login WITH PASSWORD = ‘123456789’;
create USER HOST_B_user FOR LOGIN HOST_B_login;
create CERTIFICATE 
    HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = ‘D:\MIRROR\HOST_B_cert.cer’;
GO

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

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

GO

–创建用户,用于访问WITNESS
IF EXISTS(select * from sys.certificates WHERE name=’HOST_C_cert’)
    DROP CERTIFICATE HOST_C_cert
GO

ALTER ENDPOINT Db_MirroringEP STATE = STARTED

IF EXISTS(select * from sys.sql_logins WHERE name=’HOST_C_login’)
    DROP LOGIN HOST_C_login
GO

GO

IF EXISTS(select * from sys.database_principals WHERE  name=’HOST_C_user’)
    DROP USER HOST_C_user
GO

–在MIR-A,MIR-B,MIR-W上,检查端点配置

create LOGIN HOST_C_login WITH PASSWORD = ‘123456789’;
create USER HOST_C_user FOR LOGIN HOST_C_login;
create CERTIFICATE 
    HOST_C_cert AUTHORIZATION HOST_C_user FROM FILE = ‘D:\MIRROR\HOST_C_cert.cer’;
GO

SELECT * FROM sys.database_mirroring_endpoints

GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_C_login];
GO

GO

–拷贝用户
SELECT [name],[sid] FROM sys.database_principals WHERE [name]=’BetterDev’

–在MIR-A,MIR-B,MIR-W上,配置数据库镜像安全性,somodesql.com为自己的域名

–备份数据库

use master

–设置伙伴
ALTER DATABASE northwind SET PARTNER=’TCP://192.168.1.116:5022′;
GO
–设置见证
ALTER DATABASE NORTHWIND SET WITNESS=’TCP://192.168.1.117:5022′;
GO
–设置安全选项
ALTER DATABASE NORTHWIND SET SAFETY FULL

go

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图