mysql 表插入同时删除数据源问题

mysql 表插入同时删除数据源问题,第1张

这种情况可以在A表上建立两个个trigger, 分别对应触发A在insert和delete的时候情况自动完成, 在trigger里面你定义好你怎么写B表的策略就行了

insert的trigger里面,在插入之后,自动把插入数据插入到B表

delete的trigger里面,在删除之前,检查B表的数据和A表是否一致,如果不一致,insert或update, 然后执行删除

GTID 对于单源复制还是很方便,但是对于多源复制,这里就需要特别注意:

要先停止所有的从库 stop slave

然后清理本机所有的 GTID,reset master

再进行 SET @@GLOBAL.GTID_PURGED='xxxxx' gtid 设置

这里就会引入一个问题,如果是级联复制的情况下,reset master 的时候,会把本机的所有 binlog 清理掉。如果下一级的从库存在延迟,没有及时的把 binlog 传过去,就会造成主从中断,这里我们该怎么避免呢?看这里:

做 reset master 的时候,先看看下游的从库是否存在很大的延迟。如果存在,把当前的 binlog 和后面未同步的 binlog 全部备份下;

待添加好从库的 channel 后,再把未同步的 binlog 文件手动拷贝到 binlog 目录;

更新下 mysql-bin.index 文件;

注意,binlog 不能同名,需要手动更新下文件。

一、准备工作

源数据库ORACLE 目标数据库MongoDB,在源数据库添加删除、更新触发器

二、 *** 作步骤

添加表输入组件,连接ORACLE触发器记录表

添加JAVA代码组件,进行步骤跳转,根据输入的数据判断是删除或者更新,如果是删除,则跳转至MongoDB Delete步骤中,如果是更新的话,跳转至字段选择步骤中。JAVA代码中的详细信息如下:

import java.util.List

import org.pentaho.di.core.exception.KettleException

import org.pentaho.di.core.row.RowDataUtil

import org.pentaho.di.core.row.RowMeta

import org.pentaho.di.core.row.RowMetaInterface

import org.pentaho.di.core.row.ValueMeta

import org.pentaho.di.trans.Trans

import org.pentaho.di.trans.TransMeta

private Object[] previousRow//上一行

private RowSet t1 = null//业务表步骤

private RowSet t2 = null//删除步骤

public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException

{

Object[] r = getRow()//获取输入行

if ( first ) {

if ( getInputRowMeta() == null ) {

setOutputDone()//设置输出完成

return false

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8648033.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存