• Mirror--使用证书配置镜像模板


    --==================================================================
    --该文档主要用于内部配置模板
    --场景:
    --主服务器:192.168.3.32
    --镜像服务器:192.168.3.33
    --镜像数据库:DemoDB

    --=================================================================

    开始配置

    1. 在主服务器和镜像服务器上创建Master Key

    --=========================================================================================================
    --创建Master key
    --在主服务器和镜像服务器上运行
    USE master;
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.symmetric_keys k WHERE k.Name='##MS_DatabaseMasterKey##')
    BEGIN
    CREATE MASTER KEY ENCRYPTION BY PASSWORD ='master@key123'
    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

    2. 在主服务器上创建证书并备份

    --=========================================================================================================
    --创建和备份证书
    --在主服务器上运行
    IF NOT EXISTS (SELECT 1 FROM sys.certificates C WHERE C.Name='HOST_3_32_cert' )
    BEGIN
    CREATE CERTIFICATE HOST_3_32_cert WITH SUBJECT ='HOST_3_32_cert',
    START_DATE = '01/01/2010' , EXPIRY_DATE = '01/01/2199';
    END
    GO
    BACKUP CERTIFICATE HOST_3_32_cert TO FILE='D:HOST_3_32_cert.cer'
    GO

    3. 在镜像服务器上创建证书并备份

    --=========================================================================================================
    --创建和备份证书
    --在镜像服务器上运行
    IF NOT EXISTS (SELECT 1 FROM sys.certificates C WHERE C.Name='HOST_3_33_cert' )
    BEGIN
    CREATE CERTIFICATE HOST_3_33_cert WITH SUBJECT ='HOST_3_33_cert',
    START_DATE = '01/01/2010' , EXPIRY_DATE = '01/01/2199';
    END
    GO
    BACKUP CERTIFICATE HOST_3_33_cert TO FILE='D:HOST_3_33_cert.cer'
    GO

    4. 在主服务器上创建镜像端点

    --=========================================================================================================
    --创建镜像专用的端点,并使用证书加密
    --同一个实例上只能存在一个镜像端点
    --在主服务器上运行
    IF NOT EXISTS(SELECT * FROM sys.endpoints e WHERE e.[Type]=4)
    BEGIN
    CREATE ENDPOINT [Endpoint_Mirroring]
    STATE=STARTED AS
    TCP(LISTENER_PORT=5022)
    FOR DATABASE_MIRRORING(AUTHENTICATION=CERTIFICATE HOST_3_32_cert, ENCRYPTION=REQUIRED,ROLE=ALL)
    END
    GO

    5. 在镜像服务器上创建镜像端点

    --=========================================================================================================
    --创建镜像专用的端点,并使用证书加密
    --同一个实例上只能存在一个镜像端点
    --在主服务器上运行
    IF NOT EXISTS(SELECT * FROM sys.endpoints e WHERE e.[Type]=4)
    BEGIN
    CREATE ENDPOINT [Endpoint_Mirroring]
    STATE=STARTED AS
    TCP(LISTENER_PORT=5022)
    FOR DATABASE_MIRRORING(AUTHENTICATION=CERTIFICATE HOST_3_33_cert, ENCRYPTION=REQUIRED,ROLE=ALL)
    END
    GO

    6. 将主服务器和镜像服务器上备份的证书相互复制到对方服务器上

    7. 在主服务器上创建登陆和用户以及证书,并授予连接镜像端点的权限

    ---------------------------------------------------------------------
    --在主服务器上创建登陆和用户以及证书,并授予连接镜像端点的权限
    --在主服务器上运行
    USE master;
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.syslogins l WHERE l.[Name] ='HOST_3_33_login')
    BEGIN
    CREATE LOGIN HOST_3_33_login WITH PASSWORD ='Auto@sql'
    END
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.sysusers u WHERE u.[Name]= 'HOST_3_33_User')
    BEGIN
    CREATE USER HOST_3_33_User FOR LOGIN HOST_3_33_login
    END
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.certificates c WHERE c.[Name]= 'HOST_3_33_cert')
    BEGIN
    CREATE CERTIFICATE HOST_3_33_cert AUTHORIZATION HOST_3_33_User FROM FILE='D:HOST_3_33_cert.cer'
    END
    GO
    GRANT CONNECT ON ENDPOINT::[Endpoint_Mirroring] TO HOST_3_33_login
    GO

    8. 在镜像服务器上创建登陆和用户以及证书,并授予连接镜像端点的权限

    ---------------------------------------------------------------------
    --在镜像服务器上创建登陆和用户以及证书,并授予连接镜像端点的权限
    --在镜像服务器上运行
    USE master;
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.syslogins l WHERE l.[Name] ='HOST_3_32_login')
    BEGIN
    CREATE LOGIN HOST_3_32_login WITH PASSWORD ='Auto@sql'
    END
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.sysusers u WHERE u.[Name]= 'HOST_3_32_User')
    BEGIN
    CREATE USER HOST_3_32_User FOR LOGIN HOST_3_32_login
    END
    GO
    IF NOT EXISTS(SELECT 1 FROM sys.certificates c WHERE c.[Name]= 'HOST_3_32_cert')
    BEGIN
    CREATE CERTIFICATE HOST_3_32_cert AUTHORIZATION HOST_3_32_User FROM FILE='D:HOST_3_32_cert.cer'
    END
    GO
    GRANT CONNECT ON ENDPOINT::[Endpoint_Mirroring] TO HOST_3_32_login
    GO

    9. 在主服务器和镜像服务器上配置防火墙,开放5022端口

    10. 在镜像服务器上使用Telent来检查端口情况

    telnet 192.168.3.33 5022

    11. 在主服务器上使用Telent来检查端口情况

    telnet 192.168.3.32 5022

    12. 在主服务器上备份数据库和日志

    --数据库完整备份和日志备份
    BACKUP DATABASE DemoDB TO DISK='DemoDB_FULL.BAK' WITH COMPRESSION
    BACKUP LOG DemoDB TO DISK='DemoDB_Log.BAK' WITH COMPRESSION

    13. 将主服务器上的备份复制到镜像服务器上,使用WITH NORECOVERY选项还原数据库备份和日志备份

    --使用数据库完整备份和日志备份还原
    --注意修改还原目录
    RESTORE DATABASE DemoDB FROM DISK='DemoDB_FULL.BAK' WITH NORECOVERY
    RESTORE LOG DemoDB FROM DISK='DemoDB_Log.BAK' WITH NORECOVERY

    14. 在镜像服务器上配置伙伴

    ------------------------------------------------------------------
    --从服务器设置镜像
    USE [master]
    GO
    ALTER DATABASE DemoDB SET PARTNER='TCP://192.168.3.32:5022'
    GO

    15. 在主服务器上配置伙伴

    ------------------------------------------------------------------
    --主服务器设置镜像
    --如果提示日志不足,请继续备份还原日志
    USE [master]
    GO
    ALTER DATABASE DemoDB SET PARTNER='TCP://192.168.3.33:5022'
    GO

    16. 如果希望日志运行在异步模式下,修改同步模式

    ------------------------------------------------------------------
    --在主服务器上运行
    USE [master]
    GO
    ALTER DATABASE DemoDB SET PARTNER SAFETY OFF
    GO

    配置结束后,可以使用镜像监视器来查看

    --===================================================================

    惯例妹子镇邪

  • 相关阅读:
    网络编程学习笔记:Socket编程
    C# url 路径转换 相对路径 转换为 绝对路径
    利用pycharm运行scrapy以及scrapy的配置
    基于scrapy的分布式爬虫抓取新浪微博个人信息和微博内容存入MySQL
    LeetCode 1. Two Sum
    【转载】C#异常Retry通用类
    【转载】WebDriver(C#)之十点使用心得
    c#值类型和引用类型
    percona5.7 源码安装
    android UI进阶之用ViewPager实现欢迎引导页面[转]
  • 原文地址:https://www.cnblogs.com/TeyGao/p/3521666.html
Copyright © 2020-2023  润新知