Always on环境的建立,网上资料很多,主要是windows集群的建立以及Sql Server Always on的建立,略

容易忽略的是Sql server账号同步问题(Always on能实现数据库内部的同步,但是没法实现instance级别的同步,比如job、账号等)

下面来说说几种解决方式:

  1. SQL账号采用域账号,让IIS运行于域账号下
    1. 如果现状下的本地sql账号较少的话还好,否则推行困难,而且还要加入域
  2. SQL账号采用域账号,让IIS运行于本地账号下,但是在web.config或machine.config中配置模拟账号
    1. 基本上与第一种相同
  3. SQL账号采用本地账号,客户端连接字符串采用user/pwd方式连接,并且在windows集群中增加一个通用服务,目的是当主sql server服务迁移到另外一台服务器后执行一段sql脚本,这段脚本的作用是重新map本地sql账号与db的权限关系
    1. 需要与集群的通用服务一起考虑
    2. 需要自己写脚本,下载
    3. 麻烦
  4. SQL账号采用本地账号+域账号公用方式,域账号权限关联到数据库,并且设置本地sql账号拥有模拟域账号权限,同时客户端使用user/pwd方式连接,并且还需要修改框架:让每次执行sql操作时先执行切换上下文用户:EXECUTE AS LOGIN 'domain\user1'
    1. 麻烦点转移到了框架级别:C#的SqlHelper等需要注入一行SQL来模拟域账号
    2. 配置也麻烦
  5. SQL账号采用本地账号,但是账号的建立不是直接建立,步骤:从源SQL服务器上导出带SID的脚本,然后在Always on数据库中导入带SID的脚本
    1. 初次时运行
    2. 增加user时,也需要运行
    3. 无需域账号
    4. 对客户端没影响
    5. 这里的脚本用法说明
  6. 使用Always on插件,不成熟,也不清楚能否自动同步
    1. sqlskills.com插件
      1. 能实现user、job、User-defined Server Roles的同步
    2. 都是第三方的,不敢用
  7. 使用Contained Database,这种数据库能将login user/pwd包含于db级别中,但是连接的时候必须指定具体数据库名,否则无法建立连接
    1. sql 2012开始支持包含的数据库
    2. 如果数据库不多,这种最好
    3. 缺点是如果每个db的账号多了,同步、维护这些账号比较麻烦

性能方面的思考:

  • 采用了Always on后,所有的提交行为都由Master SQL来处理,因此Master的CPU占用很高(考虑到1台master,5台slave, 并且设置了3台提交成功才算整体的提交成功),而Slave的CPU几乎闲置。因此最好是用读写分离来连接侦听器IP(写入)、以及读取IP(哈西算法)
  • 主要功能是HA+中等的性能考虑
  • 不适用于非常高并发的场景(还是得拆分库,或者写DAL)

将Sql Server迁移到Always on集群 - 账号的同步的更多相关文章

  1. SQL Server上唯一的数据库集群:负载均衡、读写分离、容灾(数据零丢失、服务高可用)

    SQL Server上唯一的数据库集群:负载均衡.读写分离.容灾(数据零丢失.服务高可用).审计.优化,全面解决数据库用户问题.一键安装,易用稳定,性价比高,下载链接:http://www.zheti ...

  2. SQL Server 2016 + AlwaysOn 无域集群

    目录 AlwaysOn 搭建 WSFC 配置计算机的 DNS 后缀 安装故障转移集群 验证集群 创建集群 创建文件共享见证 配置 AlwaysOn 新建可用性组 创建侦听器 可读副本的负载均衡 主角色 ...

  3. SQL SERVER 2016 AlwaysOn 无域集群+负载均衡搭建与简测

    之前和很多群友聊天发现对2016的无域和负载均衡满心期待,毕竟可以简单搭建而且可以不适用第三方负载均衡器,SQL自己可以负载了.windows2016已经可以下载使用了,那么这回终于可以揭开令人憧憬向 ...

  4. SQL Server技术内幕笔记合集

    SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...

  5. 从 Microsoft SQL Server 迁移到 Oracle

    来源于:http://www.oracle.com/technetwork/cn/database/migration/sqlserver-095136-zhs.html Oracle SQL Dev ...

  6. SQL Server里如何随机记录集

    今天的文章,我想给你简单介绍下SQL Server里如何随机记录集. SELECT * FROM Person.Person ORDER BY NEWID() GO 这会引入新的UNIQUEIDENT ...

  7. 从Microsoft SQL Server迁移到MySQL指南

    转自 https://www.mysql.com/why-mysql/white-papers/sql-server-to-mysql-zh/ 由于 MySQL 将节约成本.自由选择平台.特性丰富等优 ...

  8. MS SQL Server迁移至Azure SQL(官方工具)

    前面,我有尝试过将MS SQL Server数据数据迁移至Azure SQL,请参考<MS SQL Server迁移至Azure SQL>,使用的是第三方工具,但现在官方更新了工具,我们尝 ...

  9. sql server迁移数据(文件组之间的互相迁移与 文件组内文件的互相迁移)

    转自:https://www.cnblogs.com/lyhabc/p/3504380.html?utm_source=tuicool SQLSERVER将数据移到另一个文件组之后清空文件组并删除文件 ...

随机推荐

  1. Tomcat7.0安装配置详细

    说明:Tomcat服务器上一个符合J2EE标准的Web服务器,在tomcat中无法运行EJB程序,如果要运行可以选择能够运行EJB程序的容器WebLogic,WebSphere,Jboss等:Tomc ...

  2. opengles2.0之图元装配和光栅化

    光栅化的过程就是把三维世界中的物体转换成屏幕上像素的过程. glGetfloatv();    --------v表示的是数组 gles2.0里面有两种绘图命令.glDrawArrays和glDraw ...

  3. 怎么定义 logger

    随便打开一个 spring 的 源文件,比如  PathMatchingResourcePatternResolver.class 里面是这样定义logger 的 import org.apache. ...

  4. php函数间的参数传递(值传递/引用传递)

    php:函数间的参数传递 1.值传递 代码如下: <?php function exam($var1){ $var1++: echo "In Exam:" . $var1 . ...

  5. hdu 5101 n集合选2个不同集合数使和大于k

    http://acm.hdu.edu.cn/showproblem.php?pid=5101 给n个集合,选择两个来自不同集合的数,加和大于k,问有多少种选择方案. 答案=从所有数中选择的两个加和大于 ...

  6. android 一题多改系列——android 打电话实现两种方法

    在android开发中,用户能够拨打电话是最基本的需求.俗话说“条条大路通罗马”,实现拨打电话的方式有多种,今天,就提供最常用两种. 首先,拨打电话,对于用户来说,是一个耗费的操作,因此,需要一定权限 ...

  7. 尝试在Linux上编译KestrelHttpServer

    Kestrel是目前在非Windows平台上运行ASP.NET 5应用程序的唯一可用Web服务器,但微软似乎将它冷落在一边,源代码更新很慢. 今天试着在Linux上编译Kestrel的源代码,遇到了很 ...

  8. 小觑数据库(SqlServer)查询语句执行过程

    近年来,越来越多的NoSql产品不断的以技术革命的者的身份跳出来:“你看哥是多么的快,你们关型型数据库真是战五渣阿”.是的,高性能的场景下NoSql真的很出彩.而我们关系型数据库只能在墙角哭泣&quo ...

  9. JQuery以JSON方式提交数据到服务端

    JQuery将Ajax数据请求进行了封装,从而使得该操作实现起来容易许多.以往我们要写很多的代码来实现该功能,现在只需要调用$.ajax()方法,并指明请求的方式.地址.数据类型,以及回调方法等.下面 ...

  10. js操作textarea方法集合

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...