场景:

有两个独立的项目A和B,都使用mysql做数据库,

其中项目A中有一个表存储新闻资讯,字段有新闻id,标题title,类型type,内容data。

后来项目B也需要这个表的数据,但项目B用了两个表:一个表存新闻id,标题title,类型type,另一个表存储新闻id和新闻内容data。

这时如果要把项目A中实时变化的数据同步项目B中,显然传统的同步方式就不满足了

实现思路

利用canal获取变化数据

利用canal_mysql_nosql_sync存入redis队列

(https://github.com/liukelin/canal_mysql_nosql_sync)

起一个守护脚本一直读取该redis,将产生的数据写入到新库

实施步骤

一.在项目A中配置canal

1.确定服务器上有java环境,如果没有需安装下java

# java -version

java version "1.8.0_121"

2.获取canal包

访问https://github.com/alibaba/canal/releases,下载相应的版本

本次以1.0.24为例

wget https://github.com/alibaba/canal/releases/download/canal-1.0.24/canal.deployer-1.0.24.tar.gz

# ls

bin conf lib logs

编辑instance.properties文件

vim ./conf/example/instance.properties

配置好数据库的相关信息

canal.instance.master.address = 127.0.0.1:3306

# username/password

canal.instance.dbUsername = root

canal.instance.dbPassword = root123456

canal.instance.defaultDatabaseName = news

canal.instance.connectionCharset = UTF-8

配置下正则表达式

# table regex

canal.instance.filter.regex = .*

# table black regex

canal.instance.filter.black.regex = platform_news\\..*

这里注意两点:

1)数据库的用户需要有slave权限;

2)正则表达式中,如果只配置白名单,在通过redis读取时,发现没生效,需同时配置黑名单才生效

配置完成后,启动服务

sh bin/startup.sh

启动完成后,会看到有个端口号为11111的进程

二.在项目B中部署canal_mysql_nosql_sync

1.获取canal_mysql_nosql_sync

git clone https://github.com/liukelin/canal_mysql_nosql_sync

2配置

cd canal_mysql_nosql_sync/canal-client/conf

vim canal.properties

配置好对应参数即可

3启动

sh ./canal_mysql_nosql_sync/canal-client/start_canal_client.sh

正常启动后,去项目A的表中改个数据,可立即看到变化

三.在项目B中通过脚本获取redis数据,并写入到项目B的数据库中

脚本就不多赘述了,任意一个语言都可以(只要能操作redis和mysql即可XD):

1.连接redis,获取redis中变化的数据,redis的数据结构如下

eventType :操作类型(UPDATE/INSERT/DELETE) db: 涉及库 table: 涉及表 before:变更前数据 after: 变更后数据 time: 操作时间

2.提取出变化的数据,根据eventType,将数据修改到项目B的数据库中

mysql nosql 同步_使用canal和canal_mysql_nosql_sync同步mysql数据相关推荐

  1. 基于数据库数据增量同步_基于canal实现分布式数据同步

    应用场景 分布式架构中,数据同步常常是个大问题.例如,mysql中的数据,可能在ElasticSearch有一份索引,在redis有一份缓存,在Nginx有一份缓存,这时候只要你修改了mysql中的数 ...

  2. mysql 分词搜索_实战 | canal 实现Mysql到Elasticsearch实时增量同步

    题记 关系型数据库Mysql/Oracle增量同步Elasticsearch是持续关注的问题,也是社区.QQ群等讨论最多的问题之一. 问题包含但不限于: 1.Mysql如何同步到Elasticsear ...

  3. 增量同步_实战 | canal 实现Mysql到Elasticsearch实时增量同步

    题记 关系型数据库Mysql/Oracle增量同步Elasticsearch是持续关注的问题,也是社区.QQ群等讨论最多的问题之一. 问题包含但不限于: 1.Mysql如何同步到Elasticsear ...

  4. centos7时间同步_基于 Canal 和 Kafka 实现 MySQL 的 Binlog 近实时同步

    点击蓝色"架构文摘"关注我哟 加个"星标",每天上午 09:25,干货推送! 作者:Throwable    掘金:https://juejin.im/post ...

  5. 本地mysql和阿里云mysql同步_阿里云RDS和本地mysql做主从同步

    一.从RDS备份要同步的数据库到本地服务器 建议将表结构和数据分开备份. [root@localhost ~]# mysqldump -hrm-wz9a985njgong7yh5.mysql.rds. ...

  6. 基于数据库数据增量同步_基于 Flink SQL CDC 的实时数据同步方案

    简介:Flink 1.11 引入了 Flink SQL CDC,CDC 能给我们数据和业务间能带来什么变化?本文由 Apache Flink PMC,阿里巴巴技术专家伍翀 (云邪)分享,内容将从传统的 ...

  7. mysql long类型_怒肝两个月MySQL源码,我总结出这篇2W字的MySQL协议详解(超硬核干货)!!...

    点击上方蓝色"冰河技术",关注并选择"设为星标" 持之以恒,贵在坚持,每天进步一点点! 作者个人研发的在高并发场景下,提供的简单.稳定.可扩展的延迟消息队列框架 ...

  8. datax 持续数据同步_采用DataX实现多表增量数据同步

    这两天验证了一下阿里的DataX数据同步工具,觉得DataX可以用来做管理数据的多级数据同步.DataX用来做批量数据迁移很适合,能够保证数据的一致性,性能也很好,结合时间戳字段,用来实现数据定时增量 ...

  9. mysql死锁语句_记一次神奇的Mysql死锁排查

    背景 说起Mysql死锁,之前写过一次有关Mysql加锁的基本介绍,对于一些基本的Mysql锁或者死锁都有一个简单的认识,可以看下这篇文章为什么开发人员需要了解数据库锁.有了上面的经验之后,本以为对于 ...

最新文章

  1. 提高安全意识,保护自身安全
  2. jQuery Pagination分页插件--无刷新
  3. oracle创建表需要注意什么,Oracle创建表和插入的相关注意事项
  4. C语言通过用户输入将八进制转为二进制(附完整源码)
  5. ELK学习2_用Kibana和logstash快速搭建实时日志查询、收集与分析系统
  6. 基于Flash的ECC纠错算法基本原理及软件C语言算法和硬件Verilog实现(PPT在主页可下载)
  7. 上海理工大学菜鸟驿站把无人车送进社区 协助解决抗疫物资“最后100米”配送...
  8. java 内部类_java的内部类和静态内部类(嵌套类)
  9. 《21天学通Java(第6版)》—— 1.6 总结
  10. Java电子发票管理系统
  11. 计算机怎样更新卡驱动,电脑显卡驱动怎么更新(NVIDIA显卡手动更新教程)
  12. PMI是什么参数在LTE中??和RI,CQI怎么作用的??
  13. OpenWiFi简介与学习记录
  14. 运行shell脚本时怎么知道jdk路径_linux查看java jdk安装路径和设置环境变量 – HouYing – 博客频道 – CSDN.NET...
  15. rmf 文件如何打开?
  16. 篮球数据API接口 - 【篮球赛事分析数据】API调用示例代码
  17. windows和linux系统文件目录
  18. Collectors
  19. 反渗透设备:影响反渗透系统的各种离子因素
  20. Java题目:动物声音模拟器

热门文章

  1. java file类包_Java中File类的常用API
  2. IDEA中添加tomcat服务器和创建一个新的web项目
  3. 简单动画函数封装及缓动效果
  4. python 手动读取cifar10_Python搞定Excel,秒解决!大大提高工作效率
  5. USB 之三 常用抓包/协议分析工具(Bus Hound、USBlyzer、USBTrace、USB Monitor Pro等)
  6. java框架_2020年Java框架排行榜,谁居榜首?
  7. Cortex - M3 位带别名首地址的计算方法
  8. 使用strcat_s函数的注意事项
  9. 启明云端方案分享| ESP32-C3智能网关应用解决方案
  10. mysql使用bka_MySQL Batched Key Access (BKA)原理和设置使用方法举例