原文:SQLServer 服务器架构迁移

最近服务器架构迁移,将原来的服务器架构迁移到新的服务器,新的服务器在硬件方面比之前更好!原来服务器使用双向同步,并且为水平划分到多个数据库服务器。迁移过程中,数据库方面涉及到数据一致性,帐号,重新划更多分区,规范索引,分布式查询,删除无效触发器等等。程序方面重新修改配置文件,SQL等。

原架构如图:

现在有相同的服务器,所有分库都迁移到新的服务器,再增加一台服务器作为独立的分发服务器。然而,总库已经没有多余的服务器了,怎么办?解决方法是 ,总库(DBA)中再安装一个数据库实例!这样,每台服务器都有对应了。为什么总库也要对应一个服务器?因为总库与分库有数据差异,用户使用的都是分库,所以原总库数据不能要!但是数据库名称仍然不变,所以只有新增一个实例了!总库不能要,怎么将分库数据汇总成一个完整的总库?过去使用过的方法,现在完整备份各分库还原到总库服务器并使用不同名称,停机维护时,将分库日志备份并还原到总库服务器中的各个分库,此时再使用merge与原总库对比,则原总库将会三一个完整的数据库。
但是,对比时间太长了!当前的方案是,将在各个分库建立事物发布,汇总到一个新实例中!(参考:SQL Server 中心订阅模型(多发布单订阅)

那么,整个迁移方案中,可以分为5个阶段:

第一阶段:前期阶段,计划方案,确定步骤,预先执行部分耗时操作;

第二阶段:停机前一两小时,预先准备,将步骤看清一边,预先执行可执行的操作;

第三阶段:停机维护中,更改分布式脚本;切换用户对数据库的访问;访问测试;

第四阶段:停机时间到,开启访问,重要的部分工作先完成;

第五阶段:接下来这一两天完成所有后续工作;并且观察数据库方面的性能;

切换架构如图:

上图中,上半部分是原架构,下半部分是新架构。考虑的问题较多!!同样分几个阶段处理:

第一阶段:

新服务器的和数据库的安装升级配置不必说了;

将总库备份还原到新实例,设置简单模式,并将里面的数据全部清空(truncate)并收缩数据库;

删除所有索引,批量创建主键;

添加文件及文件组,设置文件增长率;

重新划分更多分区,设置LOCK_ESCALATION ;

更改默认值约束,去掉无用触发器;

迁移登录帐号;

备份当前的空数据库,留着还原到新的分库中;

设置分发数据库;

原来的分库(db1~dbn)创建事物发布到新的总库中,只对表发布;(参考:SQL Server 中心订阅模型(多发布单订阅)

授予权限;

(新分库还原上面的空库并参考上面的一些步骤)

新总库创建发布到新分库中;

新分库设置完整模式并设置备份计划;

第二阶段:

链接服务器的更改;

停掉以前的复制;

禁止备份作业及其他相关作业;

检查同步情况;

对比没有汇总的一些参数表;

第三阶段:

停机维护启动;

检查同步情况及新旧数据库是否有差异(sysindexes)

更改sql脚本;

升级web配置文件

第四阶段:

授予开发人员权限;

部分权限修改;

观察系统运行情况;

第五阶段:

原总库数据库删除,新总库迁移到SSD盘;

辛苦备份计划创建;

作业转移或重建;

删除原分库到新总库的复制;

观察系统运行情况;

整个过程,方便的,几乎都用脚本来执行,因为脚本可以提前写好,可以计划好顺序。实际上,不出问题的话,停机维护时间可以不到半小时。总之,能其他做的先做,能往后做的后做,减少停机维护时间。

SQLServer 服务器架构迁移的更多相关文章

  1. sqlserver 高版本迁移到低版本

    奇葩事不少,  这不, 得把 sqlserver 2014 迁移到 2012 开始以为用备份再还原的方法就可以, 谁知道最终兼容性的问题无法解决(低版本不兼容高版本备份的文件, 即便在高版本中选择了兼 ...

  2. Windows平台网站图片服务器架构的演进[转]

    构建在Windows平台之上的网站,往往会被业内众多架构师认为很“保守”.很大部分原因,是由于微软技术体系的封闭和部分技术人员的短视造成 的.由于长期缺乏开源支持,所以只能“闭门造车”,这样很容易形成 ...

  3. SqlServer 禁止架构更改的复制中手动修复使发布和订阅中分别增加的字段同步

    原文:SqlServer 禁止架构更改的复制中手动修复使发布和订阅中分别增加的字段同步 由于之前的需要,禁止了复制架构更改,以至在发布中添加一个字段,并不会同步到订阅中,而现在又在订阅中添加了一个同名 ...

  4. Windows平台网站图片服务器架构的演进

    在主流的Web站点中,图片往往是不可或缺的页面元素,尤其在大型网站中,几乎都将面临“海量图片资源”的存储.访问等相关技术问题.在针对图片服务器的架构扩展中,也会历经很多曲折甚至是血泪教训(尤其是早期规 ...

  5. Serverless无服务器架构详解

    本文对Serverless架构的基础概念.具体产品.应用场景.工作原理进行详细解析. 基础概念 Serverless: 无服务器架构,即在无需管理服务器等底层资源的情况下完成应用的开发和运行,是云原生 ...

  6. sqlserver 服务器主体 无法在当前安全上下文下访问数据库

    今天使用sqlserver,发现了一个问题,就是使用 insert into 数据库名.dbo.表名(字段) values(值) 这样语句的时候,会返回错误: sqlserver 服务器主体 无法在当 ...

  7. Linux邮件服务器架构

    // 上面的过程只是实现了简单的本地用户的文件发送功能,只需要安装mailutil,不需要安装配置sendmail,看鸟哥的Linux私房菜中写的应该是本地用户发送邮件不需要sendmail.只有当非 ...

  8. [转]MMORPG服务器架构

    MMORPG服务器架构 一.摘要 1.网络游戏MMORPG整体服务器框架,包括早期,中期,当前的一些主流架构2.网络游戏网络层,包括网络协议,IO模型,网络框架,消息编码等.3.网络游戏的场景管理,A ...

  9. sqlserver服务器常用的性能计数器

    sqlserver服务器常用的性能计数器,在此标记. 性能对象 计数器 说明 Processor %Processor Time %Privileged Time 建议值:持续低于80 建议值:持续低 ...

随机推荐

  1. 散列:散列函数与散列表(hash table)

    1. 散列函数 如果输入的关键字是整数,则一般合理方法是直接返回对表大小取模(Key mod TableSize)的结果,除非 Key 碰巧具有一些不太理想的特质.如,表的大小为 10,而关键字都是 ...

  2. 数据库使用char要留心

    表根据要求需要变更,加一个标识字段,一个字母搞定,我加了一个长度为2的字段 char(2)..... 结果,他们前台开发数据一直不出来,看前台与后台都有记录了,最后发现,此字段我默认加上一个字符,其实 ...

  3. 利用QPainter绘制各种图形(Shape, Pen 宽带,颜色,风格,Cap,Join,刷子)

    利用QPainter绘制各种图形 Qt的二维图形引擎是基于QPainter类的.QPainter既可以绘制几何形状(点.线.矩形.椭圆.弧形.弦形.饼状图.多边形和贝塞尔曲线),也可以绘制像素映射.图 ...

  4. Path类的最全面具体解释 - 自己定义View应用系列

    前言 自己定义View是Android开发人员必须了解的基础:而Path类的使用在自己定义View绘制中发挥着很关键的数据 网上有大量关于自己定义View中Path类的文章.但存在一些问题:内容不全. ...

  5. 十年磨一剑 Delphi再写传奇(不争辩,不解释,十年坚持不懈的努力)

    新年伊始,英巴卡迪诺公司(Embarcadero)就在其官网发布了“激动人心的RAD Studio2018年发展规划”公告(见上图).公告中指出,将在于2018年发布10.3.X新版本,新版本兼容Ex ...

  6. JSON 对象互转

    以前写过用反射,转换,后来觉得有很大漏洞,最近发现有人写过这个help类,所以保存下来 public class JSONHelper { /// <summary> /// DataRo ...

  7. HDU 1081 To The Max - 最大字段和

    传送门 题目大意: 求一个矩阵的最大子矩阵和. 题目分析: 刚开始考虑了一下dp方程的递推,但是不好转.简便的方法是预处理sum[i][j]表示第i行的前j个元素之和,之后\(n^3\)枚举子矩阵就可 ...

  8. WPF入门(三)->几何图形之椭圆形(EllipseGeometry)

    原文:WPF入门(三)->几何图形之椭圆形(EllipseGeometry) 我们可以使用EllipseGeometry 来绘制一个椭圆或者圆形的图形 EllipseGeometry类: 表示圆 ...

  9. 课后作业 04 --DateTime应用,判断多久后生日之类

    try { Console.Write("请以年-月-日的形式输入您的生日:"); string strA = Console.ReadLine(); DateTime bir = ...

  10. Swift 中的高阶函数和函数嵌套

    高阶函数 在Swift中,函数可做为“一等公民”的存在,也就意味着,我们可以和使用 int 以及 String 一样,将函数当做 参数.值.类型来使用. 其中,将函数当作一个参数和值来使用可见下: t ...