zoukankan      html  css  js  c++  java
  • SQLServer数据库镜像高性能模式下维护

    概述:

    最近公司业务说不需要见证服务器那么高配置,所以打算降配置

    降低配置阿里云这边需要关闭实例服务器,所以这边做了个本地测试会不会影响镜像

    目录:

    1、(高性能模式)测试把见证服务器关闭是否影响镜像使用

    2、(高性能模式)测试把镜像服务器关闭,保留主库和见证是否影响镜像使用

    3、(高性能模式)测试把主库服务器关闭,保留镜像和见证服务器查看镜像状态

    4、(高性能模式)镜像服务器和见证服务器关闭,查看主库服务器数据库是否能访问

    5、(高性能模式)主库服务器和见证服务器关闭,查看镜像服务器数据库是否能访问

    6、(高性能模式)去除见证服务器,镜像服务器关闭,查看主库服务器状态

    7、(高性能模式)去除见证服务器,主库服务器关闭,查看镜像服务器状态

    8、总结

    下面做了一波测试:

    环境:SQLServer2012 Enterprise Edition (64-bit)

    主库服务器:主机名(WIN-B8O213PTCEMN);IP(192.168.1.213)

    镜像服务器:主机名(WIN-B8O214PTCEMN);IP(192.168.1.214)

    见证服务器:主机名(WIN-B8O215PTCEMN);IP(192.168.1.215)

    1、(高性能模式)测试把见证服务器关闭是否影响镜像使用

    1.1、直接停止见证服务器的sqlserver服务,然后查看镜像状态显示已断开连接

    1.2、然后这边查看主库的镜像状态,查看到镜像是不受影响的!

    2、(高性能模式)测试把镜像服务器关闭,保留主库和见证是否影响镜像使用

    直接把镜像SQL服务停止,见证和主库服务开启状态

    查看镜像:主库不受影响,但是镜像受到影响

    3、(高性能模式)测试把主库服务器关闭,保留镜像和见证服务器查看镜像状态

    3.1、这边把主库服务器关闭后,在镜像从库查看到如下状态

    这边主要模拟在主库宕机了,能否镜像库开启访问的状态

    这边是高性能模式,没法自动故障转移,也不能手动故障转移,所以这边除非强制服务,但是强制服务可能会造成数据丢失

    强制服务(可能造成数据丢失)说明:

    https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2008-r2/ms189977(v=sql.105)

    如果主服务器真的没办法恢复了,能接收可能的数据丢失风险则可以在镜像服务器执行强制服务

    在高性能模式和不带自动故障转移功能的高安全性模式下,如果主体服务器失败而镜像服务器可用,

    则数据库所有者可以在出现故障时强制将服务转移到镜像数据库(可能造成数据丢失),从而使数据库可用。 此选项仅在以下情况中可用:

    • 主体服务器已关闭。

    • WITNESS 设置为 OFF 或连接到镜像服务器。

    注意:

    严格讲来,强制服务是一种灾难恢复方法。 强制服务可能会导致一些数据丢失。

    因此,只有在为了立即恢复数据库服务而不惜丢失某些数据时,才可强制执行服务。

    如果强制服务面临丢失重要数据的风险,则建议您停止镜像并手动重新同步数据库。

    强制服务会挂起会话并启动新的恢复分叉。 强制服务的结果相当于删除镜像并恢复以前的主体数据库。

    但是,强制服务便于在恢复镜像时重新同步数据库(可能造成数据丢失)。

    在数据库镜像会话中强制执行服务

    1. 连接到镜像服务器。

    2. 发出以下语句:

      ALTER DATABASE <数据库名称> SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS

      其中,<数据库名称> 为镜像数据库。

      镜像服务器将立即转换为主体服务器,并且镜像挂起。

    4、(高性能模式)镜像服务器和见证服务器关闭,查看主库服务器数据库是否能访问

    经过测试现在主库显示如下状态,如果镜像服务器和见证服务器同时宕机,主库服务器是没法使用的,除非去掉见证库!

    或者拆除镜像的情况下才能访问数据,迅速恢复!

    USE [master]
    GO
    --拆除镜像
    --当镜像库显示正在恢复想变为正在还原模式执行下面
    ALTER DATABASE 数据库名称 SET PARTNER OFF
    GO
    --将数据库从还原状态转化成正常模式
    ALTER DATABASE 数据库名称 WITH RECOVERY
    GO

    镜像拆除后的状态是可以访问数据的

    5、(高性能模式)主库服务器和见证服务器关闭,查看镜像服务器数据库是否能访问

    主库服务器和见证服务器都关闭显示如下状态

    如果主库和见证服务器宕机一时半会没法恢复,但是急需恢复业务

    可以执行拆除镜像来快速恢复使用

    但是有可能在镜像服务器有些数据没有及时同步主库的,所以可以有数据丢失的情况!(除非能接收数据可丢失的情况,不然别轻易操作)

    USE [master]
    GO
    --拆除镜像
    --当镜像库显示正在恢复想变为正在还原模式执行下面
    ALTER DATABASE 数据库名称 SET PARTNER OFF
    GO
    --将数据库从还原状态转化成正常模式
    ALTER DATABASE 数据库名称 WITH RECOVERY
    GO

     6、(高性能模式)去除见证服务器,镜像服务器关闭,查看主库服务器状态

    查看到主库的状态是断开镜像连接,但是能正常访问到表数据,不受影响!

    7、(高性能模式)去除见证服务器,主库服务器关闭,查看镜像服务器状态

    镜像服务器的状态是(镜像,已断开连接/正在恢复)

     

    强制服务把镜像库变为主库,但是这样可能会造成数据丢失

    --在高性能下手动转移镜像(在从服务器上),此时主服务器已停止
    --同样适用高安全
    --FORCE_SERVICE_ALLOW_DATA_LOSS=强制服务允许数据丢失
    USE [master]
    GO
    ALTER DATABASE 数据库名称 SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS
    GO

    也可以把镜像拆除,但是这种情况也会跟主库数据不一致的情况,因为高性能模式是主库数据传输到镜像库

    当主库突然宕机,有些数据没来得及传输到镜像库就宕机了,这种情况就好镜像库的数据跟主库对比有所丢失!

    USE [master]
    GO
    --拆除镜像
    --当镜像库显示正在恢复想变为正在还原模式执行下面
    ALTER DATABASE 数据库名称 SET PARTNER OFF
    GO
    --将数据库从还原状态转化成正常模式
    ALTER DATABASE 数据库名称 WITH RECOVERY
    GO

    8、总结:

    经过测试高性能模式得出如下结论:

  • 相关阅读:
    arm架构与体系结构
    C语言双链表遍历,插入,删除
    C语言实现单链表的遍历,逆序,插入,删除
    C语言函数的变参实用与分析
    DEBUG宏
    运算中的临时匿名变量
    main函数的传参与返回
    存储类、作用域、生命周期、链接属性
    制作动态链接库并使用
    内存管理——进程创建,执行,缺页,终止
  • 原文地址:https://www.cnblogs.com/Sungeek/p/12069330.html
Copyright © 2011-2022 走看看