自我反省系列——粗心导致GG同步失效

简介:

自我反省系列

粗心导致GG同步失效

熊熊最近刚刚加入了一家新公司,与一个同样有着OCM水平的哥们一起搭档DBA,由于对GoldenGate操作不是很熟悉,因此在昨天的操作中有了一个小错误,特写此文用以警示自己~

昨天一共收到了3封开发部发过来的数据变更的需求单,由于已经审核通过,因此由熊熊来一一操作。

每次收到邮件以后,一定首先要仔细的查阅发来的SQLPL/SQL是否合理,检查每个对象,每个表是否有主键,有索引,索引是否合适等等,确定无误才可以进行操作。

前不久一个开发人员发来一个存储过程的PL/SQL,简单的一个主键问题,居然改了四五回,我都替他觉得他回复的邮件不好看了,所以说,在日常工作中,技术能力只占一小部分,更多的是态度问题,和谨慎操作~

说别人容易,到自己这里又马虎了,唉~

第一个请求所涉及的用户无需同步到查询库,因此直接在核心库里审核SQL没有问题后,进行操作即可,对线上业务没有影响。很快就搞定了

第二个请求涉及GG同步,因为安全性考虑,我们的GG没有开启DDL自动变更同步,因此每次涉及数据架构变更的时候,需要先关闭GG上相应的模块,查看两边同步的对象是否存在,然后分别对主库和查询库进行数据变更操作,确定无误后重新开启GG相应的模块。

第三个请求有两个步骤,都分别涉及了GG同步,第一个请求需要停止GG上相应的模块,然后由开发人员在页面上做好表的数据变更后,通知熊熊,收到通知后,熊熊desc两边的表,将增加的对象在查询库相应表下用命令一一增加(alter table table_name add column column_name type),严格注意增加列的顺序,操作确认无误后,重新开启两边的GG模块。

一直到这里都没有问题,第二个请求同样涉及GG同步,由于是新对象,需要在相应模块里增加表,并且需要执行(add trandata user.table)来进行确定表传递(此步骤需要dblogin),在配置相应模块里增加该表名称的时候,熊熊一开始少增加了标点符号(MAP USER.TABLE_NAME, TARGET USER.TABLE_NAME),结果熊熊少增加了逗号和分号,导致查询库模块启动时候报错,修改以后OK了,但是主库的相关模块同样少了分号(TABLE USER.TABLE_NAME;),但是GG启动并不会报错在此时,因此熊熊就没在意。

一直到下班的时候,开发查看同步的表,发现数据没有同步,给那个DBA哥们打电话,此时GG对这张表的同步已经失效了一个小时。那兄弟很快远程登录服务器解决了该问题,并重新抽取了数据,熊熊上线后看到了他的留言,感觉特别不好意思,唉~

所以,DBA是个非常谨慎的工作,每一步操作都要特别的仔细,这次仅仅是因为一个标点符号,就导致了一张表一个小时的数据没有同步,幸亏发现的早,熊熊一直认为在这行做这么久了,结果还是粗心马虎了,实在是不该,特做此文,警示自己,也是提醒各位DBA朋友~

















本文转自bear_cat51CTO博客,原文链接:http://blog.51cto.com/bearlovecat/1180370 ,如需转载请自行联系原作者




相关文章
|
11月前
|
缓存 前端开发 JavaScript
Dan Abramov 接受油管 UP 主的面试挑战,结果差点没写出来居中……?
大家好,我是 ssh,前两天大名鼎鼎的 React 核心开发者 Dan Abramov 接受了油管 up 主 Ben Awad 的一场面试,而且是正儿八经做题的那种,不是之前国内那场戏称的面试。我们赶快一起来看看。
关于同步自我札记
Synchronization 线程通信主要是指共享访问字段和对象引用字段。这个通信形式是十分高效的,但是也可能有2种错误:线程冲突和内存一致错误。防止错误的工具就是 synchronization
关于同步自我札记
|
存储 监控 NoSQL
DDIA 读书分享 第五章:Replication,复制滞后问题
DDIA 读书分享 第五章:Replication,复制滞后问题
70 0
DDIA 读书分享 第五章:Replication,复制滞后问题
|
SQL 运维 监控
一个诡异的MySQL查询超时问题,居然隐藏着存在了两年的BUG
一个诡异的MySQL查询超时问题,居然隐藏着存在了两年的BUG
163 0
|
存储 NoSQL 算法
学术加油站|如何使用不一致的复制策略来保障事务的一致性
学术加油站|如何使用不一致的复制策略来保障事务的一致性
212 0
学术加油站|如何使用不一致的复制策略来保障事务的一致性
|
消息中间件 缓存 安全
缓存一致性问题,这么回答肯定没毛病!
方案分析更新缓存策略方式常见的有下面几种:先更新缓存,再更新数据库先更新数据库,再更新缓存先删除缓存,再更新数据库先更新数据库,再删除缓存下面一一介绍!方案一:更新缓存,更新数据库这种方式可轻易排除,因为如果先更新缓存成功,但是数据库更新失败,则肯定会造成数据不一致。方案二:更新数据库,更新缓存这种缓存更新策略俗称双写,存在问题是:并发更新数据库场景下,会将脏数据刷到缓存updateDB();updateRedis();复制代码举例:如果在两个操作之间数据库和缓存又被后面请求修改,此时再去更新缓存已经是过期数据了。方案三:删除缓存,更新数据库存在问题:更新数据库之前,若有查询请求,会将举例
|
SQL XML 关系型数据库
mysql索引失效的问题,差点我的工作凉了
下面分享的是我在工作中遇到的一个问题。有关 mysql 索引失效的问题。 处于保密考虑,我拿一个类似的场景举例子。
mysql索引失效的问题,差点我的工作凉了
|
JSON 前端开发 数据格式
我修复的印象最深的一个bug:数据内有超长整数末尾变0
接口请求json解析时,数字超过一定位数,数据内有超长整数末尾变0的处理方法
我修复的印象最深的一个bug:数据内有超长整数末尾变0
|
Web App开发 SQL Java
艾伟_转载:一次挂死(hang)的处理过程及经验
前言:        CPU占用率低,内存还有许多空余,但网站无法响应,这就是网站挂死,通常也叫做hang。这种情况对于我这样既是CEO,又是CTO,还兼职扫地洗碗的个人站长来说根本就是家常便饭。以下是一次处理hang的经验及总结,前后用了一个月,不仅涉及程序排查,数据库优化,还有硬件升级的苦恼。
1576 0
|
Web App开发 SQL Java
艾伟:一次挂死(hang)的处理过程及经验
前言:        CPU占用率低,内存还有许多空余,但网站无法响应,这就是网站挂死,通常也叫做hang。这种情况对于我这样既是CEO,又是CTO,还兼职扫地洗碗的个人站长来说根本就是家常便饭。以下是一次处理hang的经验及总结,前后用了一个月,不仅涉及程序排查,数据库优化,还有硬件升级的苦恼。
1587 0