mysql nosql 同步_使用canal和canal_mysql_nosql_sync同步mysql数据
场景:
有两个独立的项目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数据相关推荐
- 基于数据库数据增量同步_基于canal实现分布式数据同步
应用场景 分布式架构中,数据同步常常是个大问题.例如,mysql中的数据,可能在ElasticSearch有一份索引,在redis有一份缓存,在Nginx有一份缓存,这时候只要你修改了mysql中的数 ...
- mysql 分词搜索_实战 | canal 实现Mysql到Elasticsearch实时增量同步
题记 关系型数据库Mysql/Oracle增量同步Elasticsearch是持续关注的问题,也是社区.QQ群等讨论最多的问题之一. 问题包含但不限于: 1.Mysql如何同步到Elasticsear ...
- 增量同步_实战 | canal 实现Mysql到Elasticsearch实时增量同步
题记 关系型数据库Mysql/Oracle增量同步Elasticsearch是持续关注的问题,也是社区.QQ群等讨论最多的问题之一. 问题包含但不限于: 1.Mysql如何同步到Elasticsear ...
- centos7时间同步_基于 Canal 和 Kafka 实现 MySQL 的 Binlog 近实时同步
点击蓝色"架构文摘"关注我哟 加个"星标",每天上午 09:25,干货推送! 作者:Throwable 掘金:https://juejin.im/post ...
- 本地mysql和阿里云mysql同步_阿里云RDS和本地mysql做主从同步
一.从RDS备份要同步的数据库到本地服务器 建议将表结构和数据分开备份. [root@localhost ~]# mysqldump -hrm-wz9a985njgong7yh5.mysql.rds. ...
- 基于数据库数据增量同步_基于 Flink SQL CDC 的实时数据同步方案
简介:Flink 1.11 引入了 Flink SQL CDC,CDC 能给我们数据和业务间能带来什么变化?本文由 Apache Flink PMC,阿里巴巴技术专家伍翀 (云邪)分享,内容将从传统的 ...
- mysql long类型_怒肝两个月MySQL源码,我总结出这篇2W字的MySQL协议详解(超硬核干货)!!...
点击上方蓝色"冰河技术",关注并选择"设为星标" 持之以恒,贵在坚持,每天进步一点点! 作者个人研发的在高并发场景下,提供的简单.稳定.可扩展的延迟消息队列框架 ...
- datax 持续数据同步_采用DataX实现多表增量数据同步
这两天验证了一下阿里的DataX数据同步工具,觉得DataX可以用来做管理数据的多级数据同步.DataX用来做批量数据迁移很适合,能够保证数据的一致性,性能也很好,结合时间戳字段,用来实现数据定时增量 ...
- mysql死锁语句_记一次神奇的Mysql死锁排查
背景 说起Mysql死锁,之前写过一次有关Mysql加锁的基本介绍,对于一些基本的Mysql锁或者死锁都有一个简单的认识,可以看下这篇文章为什么开发人员需要了解数据库锁.有了上面的经验之后,本以为对于 ...
最新文章
- 提高安全意识,保护自身安全
- jQuery Pagination分页插件--无刷新
- oracle创建表需要注意什么,Oracle创建表和插入的相关注意事项
- C语言通过用户输入将八进制转为二进制(附完整源码)
- ELK学习2_用Kibana和logstash快速搭建实时日志查询、收集与分析系统
- 基于Flash的ECC纠错算法基本原理及软件C语言算法和硬件Verilog实现(PPT在主页可下载)
- 上海理工大学菜鸟驿站把无人车送进社区 协助解决抗疫物资“最后100米”配送...
- java 内部类_java的内部类和静态内部类(嵌套类)
- 《21天学通Java(第6版)》—— 1.6 总结
- Java电子发票管理系统
- 计算机怎样更新卡驱动,电脑显卡驱动怎么更新(NVIDIA显卡手动更新教程)
- PMI是什么参数在LTE中??和RI,CQI怎么作用的??
- OpenWiFi简介与学习记录
- 运行shell脚本时怎么知道jdk路径_linux查看java jdk安装路径和设置环境变量 – HouYing – 博客频道 – CSDN.NET...
- rmf 文件如何打开?
- 篮球数据API接口 - 【篮球赛事分析数据】API调用示例代码
- windows和linux系统文件目录
- Collectors
- 反渗透设备:影响反渗透系统的各种离子因素
- Java题目:动物声音模拟器
热门文章
- java file类包_Java中File类的常用API
- IDEA中添加tomcat服务器和创建一个新的web项目
- 简单动画函数封装及缓动效果
- python 手动读取cifar10_Python搞定Excel,秒解决!大大提高工作效率
- USB 之三 常用抓包/协议分析工具(Bus Hound、USBlyzer、USBTrace、USB Monitor Pro等)
- java框架_2020年Java框架排行榜,谁居榜首?
- Cortex - M3 位带别名首地址的计算方法
- 使用strcat_s函数的注意事项
- 启明云端方案分享| ESP32-C3智能网关应用解决方案
- mysql使用bka_MySQL Batched Key Access (BKA)原理和设置使用方法举例