当前位置: 首页 > news >正文

合肥网站建设是什么意思微信企业app手机下载安装

合肥网站建设是什么意思,微信企业app手机下载安装,有什么免费推广项目的好软件,网站怎么在百度做推广我们使用 Debezium 实时同步一个 MySQL 的数据到另一个 MySQL#xff0c;代码网上基本都有#xff0c;都是在引入 debezium-api#xff0c;debezium-embedded 后写 Java 代码#xff0c;做好了基本配置后启动程序#xff0c;Debezium 会自动读取 MySQL 的实时 binlog…        我们使用 Debezium 实时同步一个 MySQL 的数据到另一个 MySQL代码网上基本都有都是在引入 debezium-apidebezium-embedded 后写 Java 代码做好了基本配置后启动程序Debezium 会自动读取 MySQL 的实时 binlog然后触发相应的事件让我们处理我们就把事件里的数据读取出来插入到目标库即可。我们的 MySQL 的版本是 5.7 。 但我们在其中发现了一个很奇怪的问题目标库存在多个相同的 sql 我们以为是 Debezium 重复消费了 binlog 里的事件就记录下每个事件的 position 并判重但 sql 还是重复了我们一开始觉得 MySQL 写的 binlog 肯定没问题一个事务对应一个事件。之后我们使用 binlog2sql 这个 python 工具读取了已归档的 binlog 文件发现里面没有重复的 sql 这说明 MySQL binlog 还是没有问题的问题在 Debezium但 Debezium 作为一个成熟的 cdc 工具应该也不会有什么大的问题可能是 Debezium 的配置问题但检查了 Debezium 的所有配置后还是没发现有什么问题配置改了后重新运行结果还是一样。 后面我们怀疑可能和 gtid 有关我们发现 “Insert into xxx values (xxx) ” 会产生一个 binlog 事件因为一个事务会产生一个 binlog 事件但 “Insert into xxx values (xxx)xxx)xxx...” 会产生多个事件但这些事件的 gtid 还是同一个事件里的 query 属性还是同一个事件的 query 属性即原始 sql 这就破案了我们一直消费每个事件的query但可能多个事件里的 query 属性是一样的因为它们的 gtid 属性相同它们属于同一个全局事务。后面我们使用 gtid 过滤相同属性就解决了数据重复问题。至于为什么一个批量插入会产生一个多个事件并且多个事件的 gtid 是同一个我们猜测 MySQL  的 binlog 就是这样写日志的修改一行数据就产生一个事件要是批量修改就产生多个事件但这些批量事件同属于一个全局事务。 怎么过滤重复 gtid 问题因为 gtid 是递增的相同的 gtid 都会一起出现所以可以使用自动老元素的 Map或是设置键过期的 redis或是 带有 gtid 属性的数据库表并设置它是唯一索引或是插入数据之前先检查数据库里是否有本事件的gtid有就跳过没有就插入并把这个过程加锁保证原子性。 核心代码 // 启动 DebeziumEngineChangeEventString, String engine DebeziumEngine.create(Json.class).using(config) .notifying(DataSync::handleChangeEvent).build();ExecutorService executor Executors.newSingleThreadExecutor();executor.execute(engine); private static void handleChangeEvent(ChangeEventString, String event) {JSONObject valueJson JSON.parseObject(event.value());if (valueJson ! null) {JSONObject payload valueJson.getJSONObject(payload);JSONObject source payload.getJSONObject(after);// 原始sqlString query source.getString(data_definition);// 对 sql 字符串进行美化query query.replaceAll([\\n\\r\\t\\s], );String database source.getString(database);String table source.getString(table_name);String gtid source.getString(gtid);synchronized (lock) {// 查询数据库该 gtid 的数量long cnt queryGtid(gtid);if (cnt 0) {// 如果数据库不存在该 sql 就插入save(query, database, table, gtid);} else {System.out.println(gtid 有重复);}} }}
http://www.w-s-a.com/news/866615/

相关文章:

  • 微信营销软件免费版郑州关键词优化费用
  • 邢台专业做网站哪家好临沂网站建设中企动力
  • 建设网站是主营成本吗wordpress 后台
  • 猎头可以做单的网站企业网站建设
  • 建小程序需要网站吗在putty上怎样安装wordpress
  • 天津智能网站建设找哪家WordPress相册插件pro
  • 电脑网站页面怎么调大小济宁网站建设软件开发
  • 亿玛酷网站建设广州增城区最新消息
  • 企业网站视频栏目建设方案中企动力网站模板
  • 网站页面策划国外注册域名的网站
  • 百中搜如何做网站排名网站维护一年一般多少钱
  • 镇江地区做网站的公司wordpress说说加分类
  • 深圳高端网站设计免费的关键词优化软件
  • 视频网站公司沈阳网站建设服务
  • 网站全屏代码做网站必须用对方服务器
  • 网站速度慢wordpressssl正式申请后wordpress
  • 那个网站做玉石最专业西瓜创客少儿编程加盟
  • 备案时的网站建设方案书免费软件库
  • 惠州外贸网站建设网站模板 兼容ie8
  • 南京淄博网站建设方案php网站开发实训感想
  • 网站设计的含义只做恐怖片的网站
  • 网站改版方案ppt室内装修公司简介
  • 做色网站wordpress twenty ten
  • 马鞍山建设工程监督站建管处网站免费的海报模板网站
  • 类似百度的网站移动端的网站怎么做的
  • 网站开发需要什么文凭网站分析的优劣势
  • 海尔网站建设不足之处山东网站营销
  • 楚雄 网站建设广告设计一般人能学吗
  • 热搜榜排名前十山东seo多少钱
  • 衡水哪有建网站的吗企业信息系统英文