广告
返回顶部
首页 > 资讯 > 数据库 >基于Canal实现MySQL 8.0 数据库数据同步
  • 891
分享到

基于Canal实现MySQL 8.0 数据库数据同步

数据库mysql服务器 2023-10-25 09:10:35 891人浏览 八月长安
摘要

前言 服务器说明 主机名称操作系统说明192.168.11.82ubuntu 22.04主库所在服务器192.168.11.28oracle linux Server 8.7从库所在服务器 版本说明

前言

服务器说明

主机名称操作系统说明
192.168.11.82ubuntu 22.04主库所在服务器
192.168.11.28oracle linux Server 8.7从库所在服务器

版本说明

Mysql版本:mysql_8.0.32Canal版本:Canal_1.1.7           //我的canal安装部署在192.168.11.82上,当然你也可以部署在其它的服务器上Java版本:1.8.0.362

配置Mysql8.0数据库

修改MySQL配置文件

1、Ubuntu系统下MySQL配置文件位置
cd /etc/mysql/mysql.conf.dvi mysqld.cnf
2、Centos系统下MySQL配置文件位置
vi /etc/my.cnf
3、添加如下配置,开启MySQL binlog功能
# 服务编号, 与其它节点不冲突即可server_id=1log_bin=binlogbinlog_fORMat=ROW

Canal简介

关于canal简介,这里就不再阐述,具体可以参看官方文档介绍,地址如下:

https://GitHub.com/alibaba/canal/wiki/%E7%AE%80%E4%BB%8B

主库服务器操作

启动MySQL8.0数据库

systemctl start mysql  或者systemctl start mysqld.serviceUbuntu 使用前者

在这里插入图片描述

创建账号密码

mysql> CREATE USER canal IDENTIFIED BY 'canal';  mysql> GRANT SELECT, SHOW VIEW, REPLICATioN SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';mysql> FLUSH PRIVILEGES;

canal数据同步服务器操作

创建canal文件夹

cd /usr/localmkdir canalcd canalmkdir canal-package canal-adapter canal-deployer

安装canal deployer和canal adapter

官网下载地址
Https://github.com/alibaba/canal/releases/tag/canal-1.1.7-alpha-2

在这里插入图片描述
只需要下载标红框的两个文件即可。复制到canal-package文件夹下。
解压

tar -zxvf canal.adapter-1.1.7-SNAPSHOT.tar.gz -C /usr/local/canal/canal-adaptertar -zxvf canal.deployer-1.1.7-SNAPSHOT.tar.gz -C /usr/local/canal/canal-deployer

配置和启动canal-deployer

配置canal-deployer

由于此次同步为MySQL数据库间的数据同步,所以只需修改 instance.properties 即可。

cd /usr/local/canal/canal-deployer/conf/examplevi instance.properties

修改内容如下:
在这里插入图片描述

# 修改说明第一个框:主库所在服务器IP第二个框:主库数据库账号密码第三个框:规则如下:instance.properties中同步数据表默认为同步数据库下所有的表信息,具体配置如图第三个框:# 若需要同步某几张表,可以参考如下配置:# 同步某数据库test1下的user表,test2数据库下的所有表,所有库下所有表数据canal.instance.filter.regex=test1.user,test2\\..*,.*\\..*
启动canal-deployer
cd /usr/local/canal/canal-deployer/bin./startup.sh

查看日志确定是否启动成功

cd /usr/local/canal/canal-deployer/logs/examplecat example.log

我遇到的几个错误情况,仅供参考:
canal-deployer启动之后,如果在 logs 文件夹下没有 example 文件,参考如下情况说明:
1、查看 /usr/local/canal/canal-deployer/bin 文件夹下,是否存在.pid的文件。
2、查看logs文件夹下的canal文件夹下的canal_stdout.log文件,命令如下:

cat /usr/local/canal/canal-deployer/logs/canal/canal_stdout.log

若出现如下信息:
在这里插入图片描述
解决方案:(在此强烈建议系统中只安装jdk8或者jdk11,切不可采用jenv管理jdk,安装多个版本)

cd /usr/local/canal/canal-deployer/bin./stop.shvi startup.sh# 删除报错信息包含的参数(该错误信息可能会出现多次,出现哪个删除哪个即可)./startup.sh

重新启动:

cd /usr/local/canal/canal-deployer/bin./startup.sh

直到出现以下信息:

# 打开日志文件cat /usr/local/canal/canal-deployer/logs/example/example.log# 出现以下信息说明canal-deployer启动成功 [destination = example , address = /192.168.11.82:3306 , EventParser] WARN  c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - ---> find start position successfully, EntryPosition[included=false,journalName=binlog.000040,position=65224673,serverId=1,gtid=,timestamp=1682062760000] cost : 1331ms , the next step is binlog dump

配置canal-adapter

修改配置文件
cd /usr/local/canal/canal-adapter/confvi application.yml
server:  port: 8081spring:  jackson:    date-format: yyyy-MM-dd HH:mm:ss    time-zone: GMT+8    default-property-inclusion: non_nullcanal.conf:  mode: tcp #tcp kafka RocketMQ RabbitMQ  flatMessage: true  ZooKeeperHosts:  syncBatchSize: 1000  retries: -1  timeout:  accessKey:  secreTKEy:  consumerProperties:    # canal tcp consumer    # 修改位置1:Canal-deployer所在主机IP    canal.tcp.server.host: 127.0.0.1:11111    canal.tcp.zookeeper.hosts:    canal.tcp.batch.size: 500    canal.tcp.username:    canal.tcp.passWord:    # kafka consumer    kafka.bootstrap.servers: 127.0.0.1:9092    kafka.enable.auto.commit: false    kafka.auto.commit.interval.ms: 1000    kafka.auto.offset.reset: latest    kafka.request.timeout.ms: 40000    kafka.session.timeout.ms: 30000    kafka.isolation.level: read_committed    kafka.max.poll.records: 1000    # rocketMQ consumer    rocketmq.namespace:    rocketmq.namesrv.addr: 127.0.0.1:9876    rocketmq.batch.size: 1000    rocketmq.enable.message.trace: false    rocketmq.customized.trace.topic:    rocketmq.access.channel:    rocketmq.subscribe.filter:    # rabbitMQ consumer    rabbitmq.host:    rabbitmq.virtual.host:    rabbitmq.username:    rabbitmq.password:    rabbitmq.resource.ownerId:# 修改位置:添加源库配置信息,此处为同步同库下所有表信息  srcDataSources:    defaultDS:      url: jdbc:mysql://192.168.11.82:3306/mynet?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false      username: ymliu      password: ymliu2023  canalAdapters:  - instance: example # canal instance Name or mq topic name    groups:    - groupId: g1      outerAdapters:      - name: logger      - name: rdb        key: mysql1        properties:          jdbc.driverClassName: com.mysql.jdbc.Driver          jdbc.url: jdbc:mysql://192.168.11.28:3306/mynet?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false          jdbc.username: ymliu          jdbc.password: ymliu2023          druid.stat.enable: false          druid.stat.slowSqlMillis: 1000#      - name: rdb#        key: oracle1#        properties:#          jdbc.driverClassName: oracle.jdbc.OracleDriver#          jdbc.url: jdbc:oracle:thin:@localhost:49161:XE#          jdbc.username: mytest#          jdbc.password: m121212#      - name: rdb#        key: postgres1#        properties:#          jdbc.driverClassName: org.postgresql.Driver#          jdbc.url: jdbc:postgresql://localhost:5432/postgres#          jdbc.username: postgres#          jdbc.password: 121212#          threads: 1#          commitSize: 3000#      - name: HBase#        properties:#          hbase.zookeeper.quorum: 127.0.0.1#          hbase.zookeeper.property.clientPort: 2181#          zookeeper.znode.parent: /hbase#      - name: es#        hosts: 127.0.0.1:9300 # 127.0.0.1:9200 for rest mode#        properties:#          mode: transport # or rest#          # security.auth: test:123456 #  only used for rest mode#          cluster.name: elasticsearch#      - name: kudu#        key: kudu#        properties:#          kudu.master.address: 127.0.0.1 # ',' split multi address#      - name: phoenix#        key: phoenix#        properties:#          jdbc.driverClassName: org.apache.phoenix.jdbc.PhoenixDriver#          jdbc.url: jdbc:phoenix:127.0.0.1:2181:/hbase/db#          jdbc.username:#          jdbc.password:
修改canal-adapter/conf/rdb文件夹下的yml文件
cd /usr/local/canal/canal-adapter/conf/rdbvi mytest_user.yml
同步数据库下的某张表,例如同步mytest数据库下的user表,操作如下:
dataSourceKey: defaultDS        # 源数据源的key, 对应上面配置的srcDataSources中的值destination: example            # cannal的instance或者MQ的topicgroupId: g1                     # 对应MQ模式下的groupId, 只会同步对应groupId的数据outerAdapterKey: mysql1         # adapter key, 对应上面配置outAdapters中的keyconcurrent: true                # 是否按主键hash并行同步, 并行同步的表必须保证主键不会更改及主键不能为其他同步表的外键!dbMapping:  database: test                # 源数据源的database/schema  table: user                   # 源数据源表名  targetTable: test.user        # 目标数据源的库名.表名  targetPk:                     # 主键映射    id: id                      # 如果是复合主键可以换行映射多个  mapAll: true                  # 是否整表映射, 要求源表和目标表字段名一模一样 (如果targetColumns也配置了映射, 则以targetColumns配置为准)  #targetColumns:               # 字段映射, 格式: 目标表字段: 源表字段, 如果字段名一样源表字段名可不填  #  id:  #  name:  #  role_id:  #  c_time:  #  test1: 
同步数据库下所有表数据,例如:同步mytest数据库下所有表数据,操作如下:
dataSourceKey: defaultDSdestination: examplegroupId: g1outerAdapterKey: mysql1concurrent: truedbMapping:  mirrorDb: true  database: test          # 该数据库名称修改为你的数据库名称
启动canal-adapter
cd /usr/local/canal/canal-adapter/bin./startup.sh

出现错误,排查方式同canal-deployer
查看日志信息

cd /usr/local/canal/canal-adapter/logs/adaptercat adapter.log
补充说明:

只有canal-adapter成功启动并正确连接canal-deployer后,canal-deployer才会读取binlog信息。/usr/local/canal/canal-deployer/conf/example 文件夹下才会出现meta.dat文件。
2、canal-adapter启动以后会出现127.0.0.1:3306/canal_manage连接失败信息,该信息是因为我们没有安装启动前端页面所致,可以忽略,不影响数据同步。
3、以上所有内容均为自己实操结果。

来源地址:https://blog.csdn.net/lym003/article/details/130315396

您可能感兴趣的文档:

--结束END--

本文标题: 基于Canal实现MySQL 8.0 数据库数据同步

本文链接: https://www.lsjlt.com/news/442195.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 基于Canal实现MySQL 8.0 数据库数据同步
    前言 服务器说明 主机名称操作系统说明192.168.11.82Ubuntu 22.04主库所在服务器192.168.11.28Oracle Linux Server 8.7从库所在服务器 版本说明 ...
    99+
    2023-10-25
    数据库 mysql 服务器
  • Canal+Kafka实现Mysql数据同步
    Canal介绍 canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 canal可以用来监控数据库数据的变化,从而获得新增数据,或者修改的数据。 canal是应阿里巴巴...
    99+
    2023-09-05
    kafka mysql 分布式
  • Canal中怎么实现MySQL数据库实时数据同步
    这期内容当中小编将会给大家带来有关Canal中怎么实现MySQL数据库实时数据同步,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.1 canal介绍Canal是一个基于...
    99+
    2022-10-18
  • canal如何实现mysql的数据同步
    这篇文章将为大家详细讲解有关canal如何实现mysql的数据同步,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。canal是什么?canal [kə'næl],译...
    99+
    2022-10-18
  • MySQL高性能实现Canal数据同步神器
    目录简介配置mysqlCentos7 安装 canalJava客户端简介 Canal是阿里巴巴基于Java开源的数据同步工具。平时业务场景使用比较多的如下: 同步数据到ES、Redis缓存中。 数据同步。 业务需要监听数...
    99+
    2022-08-11
    MySQLCanal数据同步 MySQLCanal
  • 使用Canal实现PHP应用程序与MySQL数据库的实时数据同步
    目录canal简介安装配置启动安装php与canal连接的组件简单示例结果展示canal简介 由阿里巴巴开源 github地址:https://github.com/alibaba/...
    99+
    2023-05-16
    PHP Canal PHP Canal数据同步
  • canal使用说明:MySQL、Redis实时数据同步
    1. canal简介 canal是阿里开源的数据同步工具,基于bin log可以将数据库同步到其他各类数据库中,目标数据库支持mysql,postgresql,oracle,redis,MQ,ES等 ...
    99+
    2023-09-08
    mysql redis 数据库
  • 基于Flink CDC实时同步数据(MySQL到MySQL)
    一、环境 jdk8Flink 1.16.1(部署在远程服务器:192.168.137.99)Flink CDC 2.3.0MySQL 8.0(安装在本地:192.168.3.31) (安装部署过程略) 二、准备 准备三个数据库:flink_...
    99+
    2023-08-16
    mysql flink etl
  • 基于Java方式实现数据同步
    本文实例为大家分享了Java方式实现数据同步的具体代码,供大家参考,具体内容如下 使用java方式实现两个系统之间数据的同步。 业务背景 在新系统中设置定时任务需要实时把客户系统中的...
    99+
    2022-11-13
    java 数据同步
  • 关于SpringBoot整合Canal数据同步的问题
    目录1、CentOS7编译安装MySQL5.7.242、Mysql设置binLog配置3、Linux下载安装Canal服务4、Boot项目中引入依赖5 、修改properties配置...
    99+
    2022-11-13
  • 基于Flink SQL CDC Mysql to Mysql数据同步
    基于Flink SQL CDC Mysql to Mysql数据同步 Flink CDC有两种方式同步数据库: 一种是通过FlinkSQL直接输入两表数据库映射进行数据同步,缺点是只能单表进行同步;一...
    99+
    2023-10-07
    flink sql mysql
  • Mysql数据库中怎么实现数据同步
    Mysql数据库中怎么实现数据同步,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. 安装配置两台服务器,分别安装好Mysql,都安装在 /u...
    99+
    2022-10-18
  • 如何实现MySQL数据库同步
    这篇文章主要介绍了如何实现MySQL数据库同步,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。MySQL 的数据同步,在 MySQL 官方网站...
    99+
    2022-10-19
  • MySQL数据库实现主主同步
    前言 MySQL主主同步实际上是在主从同步的基础上将从数据库也提升成主数据库,让它们可以互相读写数据库,从数据库变成主数据库;主从相互授权连接,读取对方binlog日志并更新到本地数据库的过程,只要对...
    99+
    2023-09-08
    mysql 数据库 服务器
  • 基于Canal以及消息队列实现MySQL的Binlog近实时同步
    基于Canal以及消息队列实现MySQL的Binlog近实时同步 1.canal的应用场景 目前普遍基于日志增量订阅和消费的业务,主要包括 基于数据库增量日志解析,提供增量数据订阅和消费数据库镜像数据库实时备份索引构建和实时维护(拆分异构索...
    99+
    2023-08-21
    mysql 数据库 java
  • Canal进行MySQL到MySQL数据库全量+增量同步踩坑指南
    背景 最近工作中遇到一个迁移数据库的需求,需要将数据库从A服务器迁移至B服务器,为了尽量减少迁移导致的停机时间,考虑使用全量迁移+增量同步的方式,最终选择使用Canal作为迁移工具 准备工作 1. 数据库 两台服务器的数...
    99+
    2023-10-03
    Canal进行MySQL同步方法 Canal进行MySQL全量同步 Canal进行MySQL增量
  • SpringBoot整合canal实现数据同步的示例代码
    目录一、前言二、docker-compose部署canal三、canal-admin可视化管理四、springboot整合canal实现数据同步五、canal-spring-boot...
    99+
    2022-11-13
  • MySQL数据库中怎么实现同步
    本篇文章给大家分享的是有关MySQL数据库中怎么实现同步,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。  1.修改 master 端的my.c...
    99+
    2022-10-18
  • MySQL数据库中怎么实现异构数据同步
    本篇文章为大家展示了MySQL数据库中怎么实现异构数据同步,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在实现levelDB挂载成MySQL引擎时,发现在实际存储是...
    99+
    2022-10-18
  • 怎么使用canal+Kafka进行数据库同步操作
    这篇文章主要介绍了怎么使用canal+Kafka进行数据库同步操作的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用canal+Kafka进行数据库同步操作文章都会有所收获,下面我们一起来看看吧。平时工作中...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作