网站前期设计,前端开发工程师招聘要求,网站服务器哪些好,电商推广渠道有哪些简介1.1 canal介绍 Canal是一个基于MySQL二进制日志的高性能数据同步系统。Canal广泛用于阿里巴巴集团#xff08;包括https://www.taobao.com#xff09;#xff0c;以提供可靠的低延迟增量数据管道#xff0c;github地址#xff1a;https://github.com/alibaba/canalC…简介1.1 canal介绍 Canal是一个基于MySQL二进制日志的高性能数据同步系统。Canal广泛用于阿里巴巴集团包括https://www.taobao.com以提供可靠的低延迟增量数据管道github地址https://github.com/alibaba/canalCanal Server能够解析MySQL binlog并订阅数据更改而Canal Client可以实现将更改广播到任何地方例如数据库和Apache Kafka。它具有以下功能支持所有平台。支持由Prometheus提供支持的细粒度系统监控。支持通过不同方式解析和订阅MySQL binlog例如通过GTID。支持高性能实时数据同步。详见PerformanceCanal Server和Canal Client都支持HA / Scalability由Apache ZooKeeper提供支持Docker支持。缺点不支持全量更新只支持增量更新。完整wiki地址https://github.com/alibaba/canal/wiki1.2 运作原理原理很简单Canal模拟MySQL的slave的交互协议伪装成mysql slave并将转发协议发送到MySQL Master服务器。MySQL Master接收到转储请求并开始将二进制日志推送到slave即canal。Canal将二进制日志对象解析为自己的数据类型原始字节流如图所示准备工作2.1 下载解压canal-server 通过 github 下载 canal-server release 版本本次安装文档使用v1.1.4rootlocahost:/# wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.deployer-1.1.4.tar.gz
解压tar -zxvf canal.deployer-1.1.4.tar.gz
2.2 下载解压 canal-adapter 通过 github 下载 canal-adapter release 版本本次安装文档使用v1.1.4rootlocahost:/# wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.adapter-1.1.4.tar.gz
解压tar -zxvf canal.adapter-1.1.4.tar.gz
配置 canal-server3.1 canal-server 配置 解压之后进入 conf文件夹中修改 canal.properties 根据实际需要来修改如果不使用kafka或MQ 默认tcp即可canal.destinations prod # 指定instance的名字多个使用逗号分隔
保存之后在conf目录创建 prod 文件夹并将 example文件夹中的 nstance.properties copy 到and_prod中mkdir ant_prod #创建文件夹
cp example/nstance.properties prod/ # copy 文件
修改 nstance.properties 配置如下:canal.instance.master.address127.0.0.1:3306 # 源Mysql地址
canal.instance.dbUsernamecanal # 源Mysql账号
canal.instance.dbPasswordcanal # 源Mysql密码
canal.instance.connectionCharsetUTF-8 # 与源数据库编码格式一致
canal.instance.defaultDatabaseNametest_database # 默认监听源数据库
3.2 canal-server 启动 进入 canal-server bin 目录 启动cd canal-server/bin # 进入目录
./startup.sh # 后台启动
查看日志是否启动成功cd canal-server/logs/ant_prod #进入日志目录
启动成功2020-06-09 17:13:04.956 [main] WARN o.s.beans.GenericTypeAwarePropertyDescriptor - Invalid JavaBean property connectionCharset being accessed! Ambiguous write methods found next to actually used [public void com.alibaba.otter.canal.parse.inbound.mysql.AbstractMysqlEventParser.setConnectionCharset(java.nio.charset.Charset)]: [public void com.alibaba.otter.canal.parse.inbound.mysql.AbstractMysqlEventParser.setConnectionCharset(java.lang.String)]
2020-06-09 17:13:04.990 [main] INFO c.a.o.c.i.spring.support.PropertyPlaceholderConfigurer - Loading properties file from class path resource [canal.properties]
2020-06-09 17:13:04.990 [main] INFO c.a.o.c.i.spring.support.PropertyPlaceholderConfigurer - Loading properties file from class path resource [ant_prod/instance.properties]
2020-06-09 17:13:05.305 [main] INFO c.a.otter.canal.instance.spring.CanalInstanceWithSpring - start CannalInstance for 1-ant_prod
2020-06-09 17:13:05.311 [main] WARN c.a.o.canal.parse.inbound.mysql.dbsync.LogEventConvert - -- init table filter : ^.*..*$
2020-06-09 17:13:05.311 [main] WARN c.a.o.canal.parse.inbound.mysql.dbsync.LogEventConvert - -- init table black filter :
2020-06-09 17:13:05.315 [main] INFO c.a.otter.canal.instance.core.AbstractCanalInstance - start successful....
2020-06-09 17:13:05.422 [destination ant_prod , address rm-wz99s5v03gso12521.mysql.rds.aliyuncs.com/192.xxxxxx:3306 , EventParser] WARN c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - --- begin to find start position, it will be long time for reset or first position
2020-06-09 17:13:05.423 [destination ant_prod , address rm-wz99s5v03gso12521.mysql.rds.aliyuncs.com/192.xxxxxx:3306 , EventParser] WARN c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - prepare to find start position just show master status
2020-06-09 17:13:06.483 [destination ant_prod , address rm-wz99s5v03gso12521.mysql.rds.aliyuncs.com/192.xxxxxx:3306 , EventParser] WARN c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - --- find start position successfully, EntryPosition[includedfalse,journalNamemysql-bin.000234,position6676924,serverId184376678,gtid,timestamp1591693973000] cost : 1051ms , the next step is binlog dump配置 canal-adapter4.1 canal-adapter 配置 由于Mysql 是8.0 这里需要下载 mysql-connector-java-8.0.20.jar并将其放入lib中cp mysql-connector-java-8.0.20.jar /canal-adapter/lib/
解压之后进入 conf文件夹中修改 application.ymlserver:port: 8089
spring:jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT8default-property-inclusion: non_null
canal.conf:mode: tcp # kafka rocketMQcanalServerHost: 127.0.0.1:11111batchSize: 500syncBatchSize: 1000retries: 0timeout:accessKey:secretKey:
# 源Mysql 地址账号密码等srcDataSources: defaultDS:url: jdbc:mysql://localhost:3306/test_database?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/Shanghaiusername: canalpassword: canal
# 需要实时同步数据库如果多个实例进行区分即可canalAdapters:- instance: prod # canal instance在canal-server中指定instance的名称groups:- groupId: g1outerAdapters:- name: rdbkey: mysql1 # 唯一标示properties:jdbc.driverClassName: com.mysql.jdbc.Driverjdbc.url: jdbc:mysql://localhost:3306/test_database_01?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/Shanghaijdbc.username: canaljdbc.password: canal
编辑rdb目录下面表的映射文件数据库/表 多个表创建多个映射文件文件名对应表名以此类推dataSourceKey: defaultDS
destination: prod
outerAdapterKey: mysql1
concurrent: true
dbMapping:database: test_database_01table: testtargetTable: test_database_01.testtargetPk:id: idmapAll: true
4.1 canal-adapter 启动 进入 canal-adapter/bin 目录 启动cd canal-adapter/bin # 进入目录
./startup.sh # 后台启动
查看日志是否启动成功cd canal-adapter/adapter/logs/ #进入日志目录
tail -f adapter.log # 查看日志是否启动成功
测试数据库同步 更新/删除/批量插入/批量更新/批量删除
原文链接https://www.jianshu.com/p/d4c177f0d831 作者qingwenLi