canal配置mysql到mysql的数据同步

本文计划配置源端192.168.144.246的baidd库到目标端192.168.144.248 baidd库的canal同步。

一 准备工作

1.1 在源端和目标端创建数据库

create database baidd;

1.2 在源端创建canal用户

GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%' IDENTIFIED BY 'canal';

1.3 在目标端创建对目标库有操作权限的用户

GRANT ALL PRIVILEGES ON *.* TO 'baidd'@'%' IDENTIFIED BY '123456';

二 配置canal instance

可登录canal admin管理界面创建instance:

点击下三角,选择instance所属canal server:

 

点击‘载入模板’:

 

注意修改以下几项:

 

若只同步几个表,可显示指定,不同表名之间用逗号分隔,示例:

canal.instance.filter.regex=baidd.t1,baidd.t2

注意,表名前后不能有空格,否则不会同步该表。

另外还有一个地方需要注意:

canal.instance.master.journal.name=master-bin.000001  #表示从哪个binlog开始复制

canal.instance.master.position=1984       #表示从哪个postion开始复制

只有第一次配置该canal instance的时候需要指定binlog文件名和位置,后续不管这两个参数是否有配置,canal不会再从该配置中读binlog文件位置,而是会自动从上次复制的位置继续复制(/opt/canal-server/conf/实例名/meta.dat)。

 

点击‘保存’创建instance。

#查看日志是否有报错:

 

有如下输出,说明开始正常同步:

2021-04-03 00:37:37.128 [destination = baidd-test , address = /192.168.144.246: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

2021-04-03 00:37:38.893 [destination = baidd-test , address = /192.168.144.246:3306 , EventParser] WARN  c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - prepare to find start position master-bin.000001:1386:1617380063000

2021-04-03 00:37:39.692 [destination = baidd-test , address = /192.168.144.246:3306 , EventParser] WARN  c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - ---> find start position successfully, EntryPosition[included=false,journalName=master-bin.000001,position=1386,serverId=1,gtid=,timestamp=1617380063000] cost : 2526ms , the next step is binlog dump

三 配置canal client

3.1 配置rdb文件

cd /opt/canal-client/conf/rdb

vi baidd-test.yml

# Mirror schema synchronize config

dataSourceKey: defaultDS

destination: baidd-test

groupId: g1

outerAdapterKey: baidd-test

concurrent: true

dbMapping:

  mirrorDb: true

  database: baidd

3.2 配置aplication.yml

cd /opt/canal-client/conf

vi application.yml

server:

  port: 15505

spring:

  jackson:

    date-format: yyyy-MM-dd HH:mm:ss

    time-zone: GMT+8

    default-property-inclusion: non_null

 

canal.conf:

  mode: tcp # kafka rocketMQ

  canalServerHost: 192.168.144.248:11111

#  zookeeperHosts: slave1:2181

#  mqServers: 127.0.0.1:9092 #or rocketmq

#  flatMessage: true

  batchSize: 500

  syncBatchSize: 1000

  retries: 0

  timeout:

  accessKey:

  secretKey:

  canalAdapters:

#  示例:

  - instance: baidd-test  # canal instance Name or mq topic name

    groups:

    - groupId: g1

      outerAdapters:

      - name: logger

#      - name: rdb

#        key: 同rdb文件的outerAdapterKey保持一致

#        properties:

#          jdbc.driverClassName: com.mysql.jdbc.Driver

#          jdbc.url: jdbc:mysql://目标库ip:端口/库名?useUnicode=true&characterEncoding=utf-8

#          jdbc.username: 对目标库有权限的用户

#          jdbc.password: 密码

   

      - name: rdb

        key: baidd-test

        properties:

          jdbc.driverClassName: com.mysql.jdbc.Driver

          jdbc.url: jdbc:mysql://192.168.144.248:3306/baidd?useUnicode=true&characterEncoding=utf-8

          jdbc.username: baidd

          jdbc.password: 123456

#检查日志是否有报错

cd /opt/canal-client/logs/adapter

less adapter.log

四 验证数据同步

#在源端建表

USE baidd;

CREATE TABLE t1(id INT PRIMARY KEY,NAME VARCHAR(30));

INSERT INTO baidd.t1(id,NAME) VALUES(1,'dan');

 

#在目标端查询

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雅冰石

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值