原文:Replication的犄角旮旯(一)--变更订阅端表名的应用场景

《Replication的犄角旮旯》系列导读

Replication的犄角旮旯(一)--变更订阅端表名的应用场景

Replication的犄角旮旯(二)--寻找订阅端丢失的记录

Replication的犄角旮旯(三)--聊聊@bitmap

Replication的犄角旮旯(四)--关于事务复制的监控

Replication的犄角旮旯(五)--关于复制identity列

Replication的犄角旮旯(六)-- 一个DDL引发的血案(上)(如何近似估算DDL操作进度)

Replication的犄角旮旯(七)-- 一个DDL引发的血案(下)(聊聊logreader的延迟)

Replication的犄角旮旯(八)-- 订阅与发布异构的问题

Replication的犄角旮旯(九)-- sp_setsubscriptionxactseqno,赋予订阅活力的工具

---------------------------------------华丽丽的分割线--------------------------------------------

接触Replication只有1年多的时间;曾追随JD首席DBR(DB for Replication)陈璟同鞋学习复制,受益匪浅;

关于SQLServer Replication的文章看过不少,大多以原理介绍、如何搭建复制居多。本文旨在从生产环境出发,挖掘Replication中各种犄角旮旯的功能,使其成为运维环节中便于使用的工具;

如无特殊说明,本系列均是基于transaction replication场景;

变更订阅端表名的应用场景

本文以之前我在SQL PASS活动上分享的“翻滚吧 Replication”为背景,相关PPT及demo如下:

http://yun.baidu.com/share/link?shareid=2808657365&uk=120218674

场景描述:一般通过快照或备份初始化,订阅端表名与发布端一致;而我们要研究的是订阅端表名与发布端不一致时的应用场景(发布端 table、订阅端table_new)

用途:适用于在不影响当前复制链路的情况下,实现对同一订阅存在多个副本,以至于延伸到可以满足数据移动、表结构变更等用途;

案例:对于一个较大的且数据表,如果业务方提出要升级表结构(如int类型改为bigint),如何尽量减少停机操作时间?如果这个表参与复制呢?如果被修改的column是主键呢?

操作:

  1、按照一般方法创建好一个publication,并添加需要发布的article;

  2、编辑项目属性,参照下图,编辑“目标对象名称”、“名称已被使用时的操作”及“语句传递”

    注:

      a)对于修改表结构(int类型改为bigint类型)的需求,可以先在订阅端创建新结构的新表(如table_new),在通过指定“名称已被使用时的操作”为“现有对象保持不变”,让订阅在应用快照时只写入数据而忽略表结构上不一致;

      b)事务复制是通过调用订阅端对应的ins、del、upd存储过程实现复制命令在订阅端的执行,为了不影响原有复制链路,需要自定义新的订阅端存储过程名

  3、添加订阅并通过快照初始化,即可生成“更名的订阅”;

  4、参照原订阅端旧表,添加对新表的相关权限、索引等;

  5、在停机维护窗口,停止发布端的写操作;

  6、待复制命令完全应用到订阅端后,拆除全部复制关系,交换订阅端table和table_new的表名,参照旧的复制关系重新添加不初始化的订阅,即可实现订阅端表结构的变更;

  至此,我们实现了大数据表升级表结构的业务需求,较之直接在数据表上进行alter table,时间大大缩短,且尽可能的避免长时间架构锁给业务带来的影响;

  对于无复制关系的单表而言,同样可以参照此方法创建“更名的订阅”实现表结构的升级,但需要注意的是SQLServer Replication的限制:

  1、同一个数据库不能既是发布又是订阅(自己复制到自己是不允许的);

  2、如果增加一个实例,实现A--B--A的链式复制,

    你会发现,即使复制链路可以搭建成功,但B--A,是不会应用复制命令的(貌似Replication将此类复制认为是形成了复制环,也是不被允许的)

  针对上述限制,就产生了我提出的另一个概念--复制回路;

  其实就是欺骗了一下Replication,既然2个实例被认为是复制环,那就再加1个实例:A--B--C--A,这样就实现了复制回路,相当于将A上的table重新复制回A上,并更名为table_new;

  关于复制回路2实例和3实例的测试,可以看一下我云盘中“复制回路Demo.flv”的演示;

  http://yun.baidu.com/share/link?shareid=2819400848&uk=120218674

Replication的犄角旮旯(一)--变更订阅端表名的应用场景相关推荐

  1. Replication的犄角旮旯(二)--寻找订阅端丢失的记录

    Replication的犄角旮旯(二)--寻找订阅端丢失的记录 原文:Replication的犄角旮旯(二)--寻找订阅端丢失的记录 <Replication的犄角旮旯>系列导读 Repl ...

  2. Replication的犄角旮旯(五)--关于复制identity列

    Replication的犄角旮旯(五)--关于复制identity列 原文:Replication的犄角旮旯(五)--关于复制identity列 <Replication的犄角旮旯>系列导 ...

  3. Replication的犄角旮旯(三)--聊聊@bitmap

    Replication的犄角旮旯(三)--聊聊@bitmap 原文:Replication的犄角旮旯(三)--聊聊@bitmap <Replication的犄角旮旯>系列导读 Replic ...

  4. Replication的犄角旮旯(四)--关于事务复制的监控

    原文:Replication的犄角旮旯(四)--关于事务复制的监控 <Replication的犄角旮旯>系列导读 Replication的犄角旮旯(一)--变更订阅端表名的应用场景 Rep ...

  5. 用 Flask 来写个轻博客 (13) — M(V)C_WTForms 服务端表单检验

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 WTForms WTF 的基础使用 常用的字段类型 fields.Da ...

  6. @alitajs/dform 移动端表单库 3.0 强势来袭

    @alitajs/dform 移动端表单库 3.0 强势来袭 一.回顾 2.0 前言 为了解决从事移动端 h5 开发的小伙伴被长表单支配的恐惧,我们在 2020 年年初推出了 dform 的第一个版本 ...

  7. 纷享销客事件变更订阅接口到底怎么用?

    纷享事件变更订阅是一种数据事件主调的服务能力,用户可以通过在纷享侧订阅事件的方式,来监听数据的变化,从而能够以一种很轻量级的方式就能达到几乎近实时的数据同步的效果. 在纷享销客开放平台推出这个接口(2 ...

  8. 强大的移动端表单开发方案 @alitajs/dform(附视频)

    强大的移动端表单开发方案 @alitajs/dform 强大的移动端表单开发方案 @alitajs/dform 一.开发设想 二.基础使用 三.提效点 1.`picker` 组件: 2.一行代码配置样 ...

  9. hbase 修改表名_HBase学习——2.HBase原理

    1.系统架构 1.1 图解 从HBase的架构图上可以看出,HBase中的组件包括Client.Zookeeper.HMaster.HRegionServer.HRegion.Store.MemSto ...

最新文章

  1. 开发你的第一个 Android 应用
  2. Arduino产生PWM的3种方法
  3. 美国农业生产与农产品国际贸易 对话国际农民丰收节贸易会
  4. maven web项目保存log4j日志到WEB-INF
  5. Android打开jsp页面,如何确定是通过jsp页面上的Android设备还是IOS设备访问网页
  6. c语言自动按键脚本,C语言键盘控制走迷宫小游戏
  7. F. Paper Grading(Trie树+dfs序+二维数点)
  8. 【DP】Rotating Substrings(CF1363F)
  9. 利用ORB/AKAZE特征点进行图像配准
  10. 不要62(HDU-2089)
  11. 精通SpringBoot---整合RabbitMQ消息队列
  12. 156 13.67用matlab答案,MATLAB习题答案
  13. 44 年前的今天,改变世界的 TA 诞生了!
  14. java实现https请求单向认证、双向认证
  15. 软件测试人员必备的60个测试工具清单,果断收藏了!
  16. html中css鼠标经过事件,css中鼠标点击变色 css里鼠标悬停变色怎么弄
  17. 三大迷宫生成算法 (Maze generation algorithm) -- 深度优先,随机Prim,递归分割
  18. 可能是全网唯一办法:解决粘滞键(shift)键一直按下,在配置中心无法关闭_v1.0.0
  19. 那些年,我们信了课本里的那些鬼话
  20. IoT全品类全场景来了,但5G时代“大雁群飞”仍需紧盯“服务”

热门文章

  1. Windows server 2008 R2 服务器安装 MySql 5.6.36 64位绿色版 报系统错误1067
  2. 缩点【洛谷P1262】 间谍网络
  3. 51nod 1237 最大公约数之和 V3
  4. windows安装composer方法和使用方法
  5. kissy 淘宝网脚本库
  6. 2019升职加薪必备:你一定要修炼的产品思维
  7. Makefile之嵌套执行(9)
  8. 这样的问题代码,我实习的时候都写不出来!
  9. 给老板解释解释,为什么要用SpringCloud alibaba作为微服务开发框架???
  10. 我给Apache顶级项目提了个Bug