IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> canal实时同步mysql数据到mysql/hbase -> 正文阅读

[大数据]canal实时同步mysql数据到mysql/hbase

一、 下载canal

分别下载 canal.deployer-1.1.4canal.adapter-1.1.4

二、安装canal

1. 分别解压canal.deployer-1.1.4和canal.adapter-1.1.4
mkdir /software
tar -xzvf canal.deployer-1.1.4.tar.gz -C /software/canal
tar -xzvf canal.deployer-1.1.4.tar.gz -C /software/canal-adapter-1.1.4
2. mysql相关配置
① mysql开启binlog,修改 my.cnf 
[mysqld]
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复

查看是否成功
show variables like '%log_bin%'

在这里插入图片描述

② 创建canal用户,并赋权
# 创建用户
CREATE USER canal IDENTIFIED BY 'Canal@123456';
# mysql8.0需要在创建用户后,先更改密码加密方式,再赋权
update user set plugin='mysql_native_password' where user='canal'; 
grant all privileges ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES;
③ 查看binlog偏移量并记录
show master status;

在这里插入图片描述

④ 导出目标表历史数据,并在目标库创建表并导入 (请自行操作,注意时间格式)
3. 配置canal.deployer-1.1.4
配置instance.properties
注意:/software/canal/conf/example路径下,首次启动或者数据库变更后,请将此路径下除instance.properties以外的文件删除,否则可能报错
vim /software/canal/conf/example/instance.properties
## mysql serverId , v1.0.26+ will autoGen
## v1.0.26版本后会自动生成slaveId,所以可以不用配置
# canal.instance.mysql.slaveId=0

# 源数据库地址,此处请修改
canal.instance.master.address=127.0.0.1:3306
# binlog日志名称,此处请修改
canal.instance.master.journal.name=mysql-bin.000005
# mysql主库链接时起始的binlog偏移量,此处请修改
canal.instance.master.position=820633026
# mysql主库链接时起始的binlog的时间戳
canal.instance.master.timestamp=
canal.instance.master.gtid=

# username/password
# 在MySQL服务器授权的账号密码,此处请修改
canal.instance.dbUsername=canal
canal.instance.dbPassword=Canal@123456
# 字符集
canal.instance.connectionCharset = UTF-8
# enable druid Decrypt database password
canal.instance.enableDruid=false

# table regex .*\\..*表示监听所有表 也可以写具体的表名,用,隔开
canal.instance.filter.regex=.*\\..*
# mysql 数据解析表的黑名单,多个表用,隔开
canal.instance.filter.black.regex=

4. 配置canal.adapter-1.1.4
① 修改application.yml
vim /software/canal-adapter-1.1.4/conf/application.yml
server:
  port: 8081
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: 10.10.10.10:11111 #自己的canal-deployer启动的ip和端口,11111为默认端口
#  zookeeperHosts: slave1:2181
#  mqServers: 127.0.0.1:9092 #or rocketmq
#  flatMessage: true
  batchSize: 500
  syncBatchSize: 1000
  retries: 0
  timeout:
  accessKey:
  secretKey:
  srcDataSources:
    defaultDS:
        # 换成自己mysql源库的地址,此处请修改
      url: jdbc:mysql://127.0.0.1:3306/person?useUnicode=true
      username: canal
      password: Canal@123456
  canalAdapters:
  - instance: example # canal instance Name or mq topic name
    groups:
    - groupId: g1
      outerAdapters:
 #     - name: logger
      - name: rdb
        key: mysql1
        properties:
          # 驱动类,如果是mysql8.0,需要在lib中添加mysql-connector-java-8.0.27.jar,请自行搜索下载
          jdbc.driverClassName: com.mysql.jdbc.Driver
          # 目标库的地址,此处请修改
          jdbc.url: jdbc:mysql://8.8.8.1:3306/person?useUnicode=true
          jdbc.username: root
          jdbc.password: root@123.com
    - groupId: g2
      outerAdapters:
      - name: hbase
        properties:
          # zookeeper地址,此处请修改
          hbase.zookeeper.quorum: 8.8.8.5,8.8.8.6,8.8.8.7
          hbase.zookeeper.property.clientPort: 2181
          zookeeper.znode.parent: /hbase
② 添加mysql同步配置文件,每张表新建一个文件,名称随意
vim /software/canal-adapter-1.1.4/conf/rdb/teacher.yml
dataSourceKey: defaultDS
destination: example
groupId: g1
outerAdapterKey: mysql1
concurrent: true
dbMapping:
  database: person        #源数据库
  table: teacher   #待同步表
  targetTable: teacher     #目标表
  targetPk:     #主键映射,左侧为源表主键,右侧为目标表主键
    id: id
  mapAll: true  #全同步
  commitBatch: 3000 # 批量提交的大小
vim /software/canal-adapter-1.1.4/conf/rdb/student.yml
dataSourceKey: defaultDS
destination: example
groupId: g1
outerAdapterKey: mysql1
concurrent: true
dbMapping:
  database: person        #源数据库
  table: student   #待同步表
  targetTable: student     #目标表
  targetPk:     #主键映射,左侧为源表主键,右侧为目标表主键
    id: id
  mapAll: true  #全同步
  commitBatch: 3000 # 批量提交的大小
③ 修改hbase同步配置
dataSourceKey: defaultDS
destination: example
hbaseMapping:
  mode: STRING  #NATIVE   #PHOENIX
  database: person  # 数据库名
  table: student     # 数据库表名
  hbaseTable: test:student   # HBase表名
  family: info  # 默认统一Family名称
  uppercaseQualifier: false  # 字段名转大写, 默认为true
  commitBatch: 3000 # 批量提交的大小
  rowKey: vin  # 复合字段rowKey不能和columns中的rowKey重复
  columns:
   id: info:id  
   name: info:name
  excludeColumns: # 忽略字段
   - score

三、启动

1. 启动canal.deployer-1.1.4
# 启动
sh /software/canal/bin/startup.sh
# 重启
sh /software/canal/bin/restart.sh
# 停止
sh /software/canal/bin/stop.sh
2. 启动canal.adapter-1.1.4
# 启动
sh /software/canal-adapter-1.1.4/bin/startup.sh
# 重启
sh /software/canal-adapter-1.1.4/bin/restart.sh
# 停止
sh /software/canal-adapter-1.1.4/bin/stop.sh
3. 查看log
# 查看canal.deployer-1.1.4运行log
tail -100f /software/canal/logs/example/example.log
# 查看canal.adapter-1.1.4运行log
tail -100f /software/canal-adapter-1.1.4/logs/adapter/adapter.log

四、问题

1. 用户赋权报错
SHOW GRANTS FOR 'canal'@'%' > 1141 - There is no such grant defined for user 'canal' on host '%'
解决方法:删除用户,重新创建,赋权
drop user 'canal'@'%';
CREATE USER canal IDENTIFIED BY 'Canal@123456';
# mysql8.0需要在创建用户后,先更改密码加密方式,再赋权
update user set plugin='mysql_native_password' where user='canal'; 
grant all privileges ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES;
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-04 15:39:43  更:2022-03-04 15:41:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:45:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码