canal环境部署

发布时间:2023年12月17日

docker 部署canal同步数据

1 环境:

在这里插入图片描述
2 Mysql 配置

  1. 查看 binlog 是否启用 SHOW VARIABLES LIKE ‘%log_bin%’;
  2. 在这里插入图片描述
    开启 binlog,
    修改 my.cnf
    docker cp mysql:/etc/my.cnf /data/mysql/conf 拷贝文件到临时目录修改后再拷贝回去
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[mysqld]
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
## 开启二进制日志功能
log-bin=mall-mysql-bin
server-id=1
## 设置二进制日志使用内存大小
binlog_cache_size=1M

## 设置使用的二进制日志格式
binlog_format=row

## 二进制日志过期清理时间,默认值未0,表示不自动清理
expire_logs_days=7

## 跳过主从复制中遇到的所有错误或者置顶类型的错误,避免slave端复制中断
## 1062 主键重复、1032主从数据不一致
slave_skip_errors=1062

#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

#log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[client]
socket=/var/run/mysqld/mysqld.sock

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

问题:
在这里插入图片描述
解决:
设置bin log日志的时候,没有设置server_id参数,配置文件增加
server-id=1 ,重启服务.

3 创建订阅 binlog 账号

创建账户:create user canal IDENTIFIED by ‘canal’;
授权账户:grant select,replication slave, replication client on . to ‘canal’@‘%’;
刷新权限:flush PRIVILEGES;
查询账户;select host, user, authentication_string, plugin from user;
更新密码: ALTER USER ‘canal’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘canal’;

4 Canal 配置

4.1 canal.deployer 对 conf/instance.properties 进行修改,配置你的数据库地址、账号信息
在这里插入图片描述
4.2 canal.adapter
4.2.1 application.yml 服务信息配置、es7 文件夹下同步表配置
在这里插入图片描述
4.2.2 配置数据库信息
dataSourceKey: lottery_01 是对应的读取库信息,_index: lottery.user_take_activity 是索引。

dataSourceKey: lottery_01
destination: example
groupId: g1
esMapping:
  _index: lottery.user_take_activity
  _id: _id
  sql: "select t.uuid as _id,
               t.u_id as _u_id,
               t.take_id as _take_id,
               t.activity_id as _activity_id,
               t.activity_name as _activity_name,
               t.take_date as _take_date,
               t.take_count as _take_count,
               t.strategy_id as _strategy_id,
               t.state as _state,
               t.uuid as _uuid,
               t.create_time as _create_time,
               t.update_time as _update_time
        from user_take_activity t"
  etlCondition: "where t.update_time>={}"
  commitBatch: 3000

#  PUT lottery.user_take_activity
#  {
#    "mappings": {
#      "properties": {
#        "_u_id":{"type": "text"},
#        "_take_id":{"type": "text"},
#        "_activity_id":{"type": "long"},
#        "_activity_name":{"type": "text"},
#        "_take_date":{"type": "date"},
#        "_take_count":{"type": "long"},
#        "_strategy_id":{"type": "long"},
#        "_state":{"type": "long"},
#        "_uuid":{"type": "text"},
#        "_create_time":{"type": "date"},
#        "_update_time":{"type": "date"},
#      }
#    }
#  }

#{
#  "mappings":{
#    "_doc":{
#      "properties":{
#        "id": {
#          "type": "long"
#        },
#        "name": {
#          "type": "text"
#        },
#        "email": {
#          "type": "text"
#        },
#        "order_id": {
#          "type": "long"
#        },
#        "order_serial": {
#          "type": "text"
#        },
#        "order_time": {
#          "type": "date"
#        },
#        "customer_order":{
#          "type":"join",
#          "relations":{
#            "customer":"order"
#          }
#        }
#      }
#    }
#  }
#}

在这里插入图片描述

4.3 Kinaba 添加索引
每需要同步一个表,就需要在 Kinaba 创建索引映射

PUT lottery.user_take_activity
{
  "mappings": {
    "properties": {
      "_u_id":{"type": "text"},
      "_take_id":{"type": "text"},
      "_activity_id":{"type": "long"},
      "_activity_name":{"type": "text"},
      "_take_date":{"type": "date"},
      "_take_count":{"type": "long"},
      "_strategy_id":{"type": "long"},
      "_state":{"type": "long"},
      "_uuid":{"type": "text"},
      "_create_time":{"type": "date"},
      "_update_time":{"type": "date"}
    }
  }
}

五 启动服务

文章来源:https://blog.csdn.net/weixin_43076660/article/details/135025986
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。