zoukankan      html  css  js  c++  java
  • SQL NoteMirror

    --=========================================================================================================
    --在主服务器上运行以下脚本
    --=========================================================================================================
    
    USE master;
    GO
    --=========================================================================================================
    --创建Master key
    IF NOT EXISTS(SELECT 1 FROM sys.symmetric_keys k WHERE k.Name='##MS_DatabaseMasterKey##')
    BEGIN
    CREATE MASTER KEY ENCRYPTION BY PASSWORD ='master@key'
    END
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.databases db WHERE db.[is_master_key_encrypted_by_server]=1)
    BEGIN
    ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY
    END
    GO
    
    --=========================================================================================================
    --创建和备份证书
    IF NOT EXISTS (SELECT 1 FROM sys.certificates C WHERE C.Name='PrincipalServerCert' )
    BEGIN
    CREATE CERTIFICATE PrincipalServerCert WITH SUBJECT ='Principal Server Cert'
    END
    GO
    BACKUP CERTIFICATE PrincipalServerCert TO FILE='D:\PrincipalServerCert.cer'
    GO
    
    --=========================================================================================================
    --创建镜像专用的端点,并使用证书加密
    --同一个实例上只能存在一个镜像端点
    IF NOT EXISTS(SELECT * FROM sys.endpoints e WHERE e.[Type]=4)
    BEGIN
    CREATE ENDPOINT DBMirrorEndPoint
    STATE=STARTED AS
    TCP(LISTENER_PORT=5022)
    FOR DATABASE_MIRRORING(AUTHENTICATION=CERTIFICATE PrincipalServerCert, ENCRYPTION=REQUIRED,ROLE=ALL)
    END 
    
    
    
    
    
    
    
    
    
    
    
    
    
    --=========================================================================================================
    --在镜像服务器上运行以下脚本
    --=========================================================================================================
    
    USE master;
    GO
    --=========================================================================================================
    --创建Master key
    IF NOT EXISTS(SELECT 1 FROM sys.symmetric_keys k WHERE k.Name='##MS_DatabaseMasterKey##')
    BEGIN
    CREATE MASTER KEY ENCRYPTION BY PASSWORD ='master@key'
    END
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.databases db WHERE db.[is_master_key_encrypted_by_server]=1)
    BEGIN
    ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY
    END
    GO
    
    --=========================================================================================================
    --创建和备份证书
    IF NOT EXISTS (SELECT 1 FROM sys.certificates C WHERE C.Name='MirrorServerCert' )
    BEGIN
    CREATE CERTIFICATE MirrorServerCert WITH SUBJECT ='Mirror Server Cert'
    END
    GO
    BACKUP CERTIFICATE MirrorServerCert TO FILE='D:\MirrorServerCert.cer'
    GO
    
    --=========================================================================================================
    --创建镜像专用的端点,并使用证书加密
    --同一个实例上只能存在一个镜像端点
    IF NOT EXISTS(SELECT * FROM sys.endpoints e WHERE e.[Type]=4)
    BEGIN
    CREATE ENDPOINT DBMirrorEndPoint
    STATE=STARTED AS
    TCP(LISTENER_PORT=5023)
    FOR DATABASE_MIRRORING(AUTHENTICATION=CERTIFICATE MirrorServerCert, ENCRYPTION=REQUIRED,ROLE=ALL)
    END 
    GO
    
    
    
    
    
    
    
    --=========================================================================================================
    --在见证服务器上运行以下脚本
    --=========================================================================================================
    USE master;
    GO
    --=========================================================================================================
    --创建Master key
    IF NOT EXISTS(SELECT 1 FROM sys.symmetric_keys k WHERE k.Name='##MS_DatabaseMasterKey##')
    BEGIN
    CREATE MASTER KEY ENCRYPTION BY PASSWORD ='master@key'
    END
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.databases db WHERE db.[is_master_key_encrypted_by_server]=1)
    BEGIN
    ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY
    END
    GO
    
    --=========================================================================================================
    --创建和备份证书
    IF NOT EXISTS (SELECT 1 FROM sys.certificates C WHERE C.Name='WitnessServerCert' )
    BEGIN
    CREATE CERTIFICATE WitnessServerCert WITH SUBJECT ='Witness Server Cert'
    END
    GO
    BACKUP CERTIFICATE WitnessServerCert TO FILE='D:\WitnessServerCert.cer'
    GO
    
    --=========================================================================================================
    --创建镜像专用的端点,并使用证书加密
    --同一个实例上只能存在一个镜像端点
    IF NOT EXISTS(SELECT * FROM sys.endpoints e WHERE e.[Type]=4)
    BEGIN
    CREATE ENDPOINT DBMirrorEndPoint
    STATE=STARTED AS
    TCP(LISTENER_PORT=5024)
    FOR DATABASE_MIRRORING(AUTHENTICATION=CERTIFICATE WitnessServerCert, ENCRYPTION=REQUIRED,ROLE=ALL)
    END 
    GO
    
    
    
    
    
    --=========================================================================================================
    --在主服务器上运行以下脚本
    --=========================================================================================================
    USE master;
    GO
    --=========================================================================================================
    --使用镜像服务器备份出来的证书来为镜像服务器连接创建用户和证书,并使用证书为新用户授权
    IF NOT EXISTS(SELECT 1 FROM sys.syslogins l WHERE l.[Name] ='MirrorServerLogin')
    BEGIN
    CREATE LOGIN MirrorServerLogin WITH PASSWORD ='Auto@sql'
    END
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.sysusers u WHERE u.[Name]= 'MirrorServerUser')
    BEGIN
    CREATE USER MirrorServerUser FOR LOGIN MirrorServerLogin
    END
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.certificates c WHERE c.[Name]= 'MirrorServerCert')
    BEGIN
    CREATE CERTIFICATE MirrorServerCert AUTHORIZATION MirrorServerUser FROM FILE='D:\MirrorServerCert.cer'
    END
    GO
    GRANT CONNECT ON ENDPOINT::DBMirrorEndPoint TO MirrorServerLogin
    GO
    --=========================================================================================================
    --使用见证服务器备份出来的证书来为见证服务器连接创建用户和证书,并使用证书为新用户授权
    
    USE master;
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.syslogins l WHERE l.[Name] ='WitnessServerLogin')
    BEGIN
    CREATE LOGIN WitnessServerLogin WITH PASSWORD ='Auto@sql'
    END
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.sysusers u WHERE u.[Name]= 'WitnessServerUser')
    BEGIN
    CREATE USER WitnessServerUser FOR LOGIN WitnessServerLogin
    END
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.certificates c WHERE c.[Name]='WitnessServerCert')
    BEGIN
    CREATE CERTIFICATE WitnessServerCert AUTHORIZATION WitnessServerUser FROM FILE='D:\WitnessServerCert.cer'
    END
    GO
    GRANT CONNECT ON ENDPOINT::DBMirrorEndPoint TO WitnessServerLogin
    GO
    
    
    
    
    
    
    --=========================================================================================================
    --在镜像服务器上运行以下脚本
    --=========================================================================================================
    --=========================================================================================================
    --使用主服务器备份出来的证书来为主服务器连接创建用户和证书,并使用证书为新用户授权
    USE master;
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.syslogins l WHERE l.[Name] ='PrincipalServerLogin')
    BEGIN
    CREATE LOGIN PrincipalServerLogin WITH PASSWORD ='Auto@sql'
    END
    GO
    CREATE USER PrincipalServerUser FOR LOGIN PrincipalServerLogin
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.certificates c WHERE c.[Name]='PrincipalServerCert')
    BEGIN
    CREATE CERTIFICATE PrincipalServerCert AUTHORIZATION PrincipalServerUser FROM FILE='D:\PrincipalServerCert.cer'
    END
    GO
    GRANT CONNECT ON ENDPOINT::DBMirrorEndPoint TO PrincipalServerLogin
    --=========================================================================================================
    --使用见证服务器备份出来的证书来为见证服务器连接创建用户和证书,并使用证书为新用户授权
    
    USE master;
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.syslogins l WHERE l.[Name] ='WitnessServerLogin')
    BEGIN
    CREATE LOGIN WitnessServerLogin WITH PASSWORD ='Auto@sql'
    END
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.sysusers u WHERE u.[Name]= 'WitnessServerUser')
    BEGIN
    CREATE USER WitnessServerUser FOR LOGIN WitnessServerLogin
    END
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.certificates c WHERE c.[Name]='WitnessServerCert')
    BEGIN
    CREATE CERTIFICATE WitnessServerCert AUTHORIZATION WitnessServerUser FROM FILE='D:\WitnessServerCert.cer'
    END
    GO
    GRANT CONNECT ON ENDPOINT::DBMirrorEndPoint TO WitnessServerLogin 
    
    
    
    
    
    
    
    
    
    
    --=========================================================================================================
    --在见证服务器上运行以下脚本
    --=========================================================================================================
    --=========================================================================================================
    --使用主服务器备份出来的证书来为主服务器连接创建用户和证书,并使用证书为新用户授权
    USE master;
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.syslogins l WHERE l.[Name] ='PrincipalServerLogin')
    BEGIN
    CREATE LOGIN PrincipalServerLogin WITH PASSWORD ='Auto@sql'
    END
    GO
    CREATE USER PrincipalServerUser FOR LOGIN PrincipalServerLogin
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.certificates c WHERE c.[Name]='PrincipalServerCert')
    BEGIN
    CREATE CERTIFICATE PrincipalServerCert AUTHORIZATION PrincipalServerUser FROM FILE='D:\PrincipalServerCert.cer'
    END
    GO
    GRANT CONNECT ON ENDPOINT::DBMirrorEndPoint TO PrincipalServerLogin
    GO
    --=========================================================================================================
    --使用镜像服务器备份出来的证书来为镜像服务器连接创建用户和证书,并使用证书为新用户授权
    USE master;
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.syslogins l WHERE l.[Name] ='MirrorServerLogin')
    BEGIN
    CREATE LOGIN MirrorServerLogin WITH PASSWORD ='Auto@sql'
    END
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.sysusers u WHERE u.[Name]= 'MirrorServerUser')
    BEGIN
    CREATE USER MirrorServerUser FOR LOGIN MirrorServerLogin
    END
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.certificates c WHERE c.[Name]= 'MirrorServerCert')
    BEGIN
    CREATE CERTIFICATE MirrorServerCert AUTHORIZATION MirrorServerUser FROM FILE='D:\MirrorServerCert.cer'
    END
    GO
    GRANT CONNECT ON ENDPOINT::DBMirrorEndPoint TO MirrorServerLogin
    GO
    
    
    
    
    
    
    
    
    
    --=========================================================================================================
    --在主服务器上运行以下脚本
    --=========================================================================================================
    --=========================================================================================================
    --修改数据库恢复模式
    -USE [master]
    GO
    ALTER DATABASE [Demo1] SET RECOVERY FULL WITH NO_WAIT
    GO
    --=========================================================================================================
    --备份数据库
    BACKUP DATABASE [Demo1] 
    TO  DISK = N'D:\Demo1.bak' WITH NOFORMAT, NOINIT,
    NAME = N'Demo1-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
    GO
    
    
    
    
    
    
    
    
    --=========================================================================================================
    --在镜像服务器上运行以下脚本
    --=========================================================================================================
    --=========================================================================================================
    --使用NORECOVERY来恢复数据库
    USE [master]
    GO
    RESTORE DATABASE [Demo1] 
    FROM  DISK = N'D:\Demo1.bak' WITH  FILE = 1,  
    MOVE N'Demo1' TO N'D:\Mirror\Demo1.mdf', 
    MOVE N'Demo1_log' TO N'D:\Mirror\Demo1_Log.LDF',  
    NORECOVERY,  NOUNLOAD,  STATS = 10
    GO
    --=========================================================================================================
    --设置PARTNER
    USE [master]
    GO
    ALTER DATABASE Demo1 SET PARTNER='TCP://192.168.1.102:5022'
    
    
    
    
    
    
    
    --=========================================================================================================
    --在主服务器上运行以下脚本
    --=========================================================================================================
    --=========================================================================================================
    --设置PARTNER
    USE [master]
    GO
    ALTER DATABASE Demo1 SET PARTNER='TCP://192.168.1.102:5023'
    GO
    
    
    
    
    
    --=========================================================================================================
    --其他脚本
    --=========================================================================================================
    
    --=========================================================================================================
    --添加见证服务器
    USE [master]
    GO
    ALTER DATABASE Demo1 SET WITNESS='TCP://192.168.1.102:5024'
    GO
    
    
    
    --=========================================================================================================
    -移除见证服务器
    USE [master]
    GO
    ALTER DATABASE Demo1 SET WITNESS OFF
    GO
    
    --=========================================================================================================
    --修改高性能
    USE [master]
    GO
    ALTER DATABASE Demo1 SET PARTNER SAFETY OFF
    GO
    
    --=========================================================================================================
    --修改为高安全
    USE [master]
    GO
    ALTER DATABASE Demo1 SET PARTNER SAFETY FULL
    GO
    
    
    --=========================================================================================================
    --在高安全下手动转移镜像(在主服务器上)
    USE [master]
    GO
    ALTER DATABASE Demo1 SET PARTNER FAILOVER
    GO
    
    
    
    --=========================================================================================================
    --在高性能下手动转移镜像(在从服务器上),此时主服务器已停止
    USE [master]
    GO
    ALTER DATABASE Demo1 SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS
    GO
    
    
    --=========================================================================================================
    --此时主服务器停止后又重启时,主服务器会被挂起,使用以下SQL来恢复镜像
    USE [master]
    GO
    ALTER DATABASE Demo1 SET PARTNER RESUME
    GO
    
    
    --=========================================================================================================
    --关闭镜像
    USE [master]
    GO
    ALTER DATABASE Demo1 SET PARTNER OFF
    GO
    
    
    --=========================================================================================================
    --将数据库从还原状态转化成正常模式
    USE [master]
    GO
    RESTORE DATABASE Demo1 WITH RECOVERY
    GO
  • 相关阅读:
    Linux常用命令
    cookie机制、session机制
    http状态码、错误分析
    安装“Microsoft SQL Server 2014 Management Objects”时报错"Error Writing to file: Microsoft.SqlServer.XEvent.Linq.dll."
    Installshield build all installer in development computer
    C++使用RabbitMQ类库做客户端与RabbitMQ Server通讯,生成C++可调用的rabbimq.*.dll的过程
    由hibernate配置cascade而导致的软件错误,并分析解决此问题的过程
    由hibernate配置inverse="true"而导致的软件错误,并分析解决此问题的过程
    JVM原理解析
    Add lombok to IntelliJ IDEA
  • 原文地址:https://www.cnblogs.com/TeyGao/p/2759730.html
Copyright © 2011-2022 走看看