zoukankan      html  css  js  c++  java
  • Mssql主备见证的弊端及主备模式主down掉怎么恢复

      mssql主备见证有个没有解决的问题,mssql的主备是针对单个库的,有时候单个或多个库主备切换了,但是整个主数据库并没有挂掉,并且还运行着其他的库,程序检测到的数据库连接是正常的,只是部分库连接不了,这个时候程序切换不过来,也不能切换,切换了部分还在主上的数据库也连接不了,除非是整个数据库连接不上或者关机了,这种情况数据库和程序同时切换才有意义。

    后来我们就没有要见证了,只有主从,一直运行起,只是做一个数据备份。

    程序的主备连接还是保留起,毕竟主从的情况,挂一台就是整体切换了。

      为了以防主数据库突然各种原因down了,这个时候备机数据库是不能读写的,备机显示(镜像,已断开连接/正在恢复)。我们要想办法恢复备机,而且最好是还能保持主备的模式,在主机起来的情况下还可以继续主备和切换回去。下面以A(主)B(备)来说明。

    停止主机A的SQL SERVER 服务(比如断电),此时备机上的数据库会显示正在恢复状态,大概持续几十秒

    此时,在B机上执行

    use master;

    alter database dataName set partner FORCE_SERVICE_ALLOW_DATA_LOSS

    开始会显示(正在恢复),过几秒会显示(主体,已断开连接)

    假如现在有业务往数据库里插也是能成功的

    现在把原主机A恢复(通电),起来后A显示(镜像 挂起/正在恢复),B显示(主体 挂起)然后在B机里操作

    use master;

    alter database dbtest set partner resume;

    如果A启动不了了,可以重新配置一台A机,在B机上取消镜像重新备份数据库和日志,然后到A机恢复重新设置镜像。期间B机可以继续提供服务,不影响镜像的建立。

    此时A机是作为镜像的,B机是作为主机的,数据开始同步,如果要再切换一下,则再在B上执行下面的sql或者手动切换

    use master;

    alter database dbtest set partner failover;

  • 相关阅读:
    【Python】python3.6中实现同一行动态输出
    【Python】将python3.6软件的py文件打包成exe程序
    【Java】分布式RPC通信框架Apache Thrift 使用总结
    【Java】加载驱动方法
    【Java】Comparable和Comparator接口的区别
    【Java】接口(interface)VS抽象类
    【Ubuntu】PHP环境安装-phpstudy for linux版
    【Ubuntu】xrdp完美实现Windows远程访问Ubuntu 16.04
    【系统设计】会议室预定系统房间预定系统设计
    jmeter场景设计:业务占比
  • 原文地址:https://www.cnblogs.com/xuyingzhong/p/8250227.html
Copyright © 2011-2022 走看看