Canal安装教程

这篇具有很好参考价值的文章主要介绍了Canal安装教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


本文将详细介绍Canal在docker环境和windows环境下的安装教程

由于同步是基于binlog实现的,所以要先在mysql中开启binlog

1.开启Mysql的同步模式

修改my.cnf配置信息

server-id = 1
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
  • docker环境下:/etc/mysql/my.cnf
  • windows环境下:my.ini
    canal安装,# mysql,# canal,docker,binlog,全量复制,数据同步

重启mysql服务,然后连接到mysql服务,使用指令查看是否已经开启

show variables like '%log_bin%';

canal安装,# mysql,# canal,docker,binlog,全量复制,数据同步

源数据库创建一个canal账号,并且设置slave,dump权限

CREATE USER canal IDENTIFIED BY 'canal';  
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
FLUSH PRIVILEGES;

canal安装,# mysql,# canal,docker,binlog,全量复制,数据同步

因为mysql8.0.3后身份检验方式为caching_sha2_password,但canal使用的是mysql_native_password,因此需要设置检验方式(如果该版本之前的可跳过),否则会报错IOException: caching_sha2_password Auth failed

ALTER USER 'canal'@'%' IDENTIFIED WITH mysql_native_password BY 'canal';
select host,user,plugin from mysql.user ;

canal安装,# mysql,# canal,docker,binlog,全量复制,数据同步

2.docker环境下安装Canal

为了方便对canal-server以及后期集群的管理,我们先安装canal-admin

2.1 安装canal-admin

2.1.1 获取镜像

docker pull canal/canal-admin

2.1.2 在mysql数据库中导入canal-manage数据库

  • sql内容如下:
/*
Navicat MySQL Data Transfer

Source Server         : local_docker_3307
Source Server Version : 80027
Source Host           : 192.168.0.104:3307
Source Database       : canal_manager

Target Server Type    : MYSQL
Target Server Version : 80027
File Encoding         : 65001

Date: 2023-04-05 16:23:13
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for canal_adapter_config
-- ----------------------------
DROP TABLE IF EXISTS `canal_adapter_config`;
CREATE TABLE `canal_adapter_config` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `category` varchar(45) NOT NULL,
  `name` varchar(45) NOT NULL,
  `status` varchar(45) DEFAULT NULL,
  `content` text NOT NULL,
  `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Records of canal_adapter_config
-- ----------------------------

-- ----------------------------
-- Table structure for canal_cluster
-- ----------------------------
DROP TABLE IF EXISTS `canal_cluster`;
CREATE TABLE `canal_cluster` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `name` varchar(63) NOT NULL,
  `zk_hosts` varchar(255) NOT NULL,
  `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Records of canal_cluster
-- ----------------------------

-- ----------------------------
-- Table structure for canal_config
-- ----------------------------
DROP TABLE IF EXISTS `canal_config`;
CREATE TABLE `canal_config` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `cluster_id` bigint DEFAULT NULL,
  `server_id` bigint DEFAULT NULL,
  `name` varchar(45) NOT NULL,
  `status` varchar(45) DEFAULT NULL,
  `content` text NOT NULL,
  `content_md5` varchar(128) NOT NULL,
  `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `sid_UNIQUE` (`server_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Records of canal_config
-- ----------------------------

-- ----------------------------
-- Table structure for canal_instance_config
-- ----------------------------
DROP TABLE IF EXISTS `canal_instance_config`;
CREATE TABLE `canal_instance_config` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `cluster_id` bigint DEFAULT NULL,
  `server_id` bigint DEFAULT NULL,
  `name` varchar(45) NOT NULL,
  `status` varchar(45) DEFAULT NULL,
  `content` text NOT NULL,
  `content_md5` varchar(128) DEFAULT NULL,
  `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Records of canal_instance_config
-- ----------------------------

-- ----------------------------
-- Table structure for canal_node_server
-- ----------------------------
DROP TABLE IF EXISTS `canal_node_server`;
CREATE TABLE `canal_node_server` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `cluster_id` bigint DEFAULT NULL,
  `name` varchar(63) NOT NULL,
  `ip` varchar(63) NOT NULL,
  `admin_port` int DEFAULT NULL,
  `tcp_port` int DEFAULT NULL,
  `metric_port` int DEFAULT NULL,
  `status` varchar(45) DEFAULT NULL,
  `modified_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Records of canal_node_server
-- ----------------------------

-- ----------------------------
-- Table structure for canal_user
-- ----------------------------
DROP TABLE IF EXISTS `canal_user`;
CREATE TABLE `canal_user` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `username` varchar(31) NOT NULL,
  `password` varchar(128) NOT NULL,
  `name` varchar(31) NOT NULL,
  `roles` varchar(31) NOT NULL,
  `introduction` varchar(255) DEFAULT NULL,
  `avatar` varchar(255) DEFAULT NULL,
  `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3;

-- ----------------------------
-- Records of canal_user
-- ----------------------------
INSERT INTO `canal_user` VALUES ('1', 'admin', '6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9', 'Canal Manager', 'admin', null, null, '2019-07-14 00:05:28');

导入之后的效果如下图所示:
canal安装,# mysql,# canal,docker,binlog,全量复制,数据同步

2.1.3 启动canal-admin镜像

docker run -d --name canal-admin  -e spring.datasource.address=192.168.0.104:3307 -e spring.datasource.database=canal_manager -e spring.datasource.username=root -e spring.datasource.password=root -p 8089:8089 canal/canal-admin:latest

自己按照自己的环境对数据的地址、端口、用户名、密码进行修改

启动之后,访问:http://localhost:8089,默认账号密码为admin/123456
canal安装,# mysql,# canal,docker,binlog,全量复制,数据同步

2.2 安装Canal-Server

2.2.1 下载镜像

docker pull canal/canal-server:latest

canal安装,# mysql,# canal,docker,binlog,全量复制,数据同步

2.2.2 启动镜像

docker run -d --name canal-server -e canal.instance.master.address=192.168.0.104:3307  -e canal.instance.dbUsername=root  -e canal.instance.dbPassword=root  -e canal.admin.manager=192.168.0.104:8089 -e canal.admin.port=11110 -e canal.admin.user=admin -e canal.admin.passwd=4ACFE3202A5FF5CF467898FC58AAB1D615029441   -p 11111:11111 canal/canal-server:latest

canal安装,# mysql,# canal,docker,binlog,全量复制,数据同步

初次启动后如果我们需要修改instance.properties,建议复制到宿主机进行修改

docker cp canal-server:/home/admin/canal-server/conf/example/instance.properties  /home/ninesun/mydata/canal/conf/

PS:/home/ninesun/mydata/canal/conf/是我宿主机的目录,自己选择自己的复制地址

具体需要修改的内容大致如下图所示,自己按照需求修改
canal安装,# mysql,# canal,docker,binlog,全量复制,数据同步
instance.properties配置描述
canal安装,# mysql,# canal,docker,binlog,全量复制,数据同步

同时我们还需要设置全量同步
查询源mysql服务器的binlog位置

# 源mysql服务器中登陆mysql执行
show binary logs;

canal安装,# mysql,# canal,docker,binlog,全量复制,数据同步

canal安装,# mysql,# canal,docker,binlog,全量复制,数据同步

然后将你修改好的配置文件复制回容器内

docker cp /home/ninesun/mydata/canal/conf/instance.properties  canal-server:/home/admin/canal-server/conf/example/instance.properties  

重启镜像即可

docker restart canal

2.3 查看是否配置成功

  • 1.进入canal容器内
docker exec -it canal bash
cd  ./canal-server/logs/example/
cat ./example.log

canal安装,# mysql,# canal,docker,binlog,全量复制,数据同步
若出现以下内容则表示配置成功
canal安装,# mysql,# canal,docker,binlog,全量复制,数据同步
刷新admin管理页面的列表就可以看到我们的server已经注册进来了
canal安装,# mysql,# canal,docker,binlog,全量复制,数据同步
至此docker安装canal就结束了

3.Windows环境下安装Canal

下载地址:https://github.com/alibaba/canal/releases
canal安装,# mysql,# canal,docker,binlog,全量复制,数据同步

同时Canal是基于Java开发的,所以要保证你的电脑上有jdk或jre

3.1 管理端Admin操作

创建一个canal_manager数据库,编码格式utf8mb4(如果未安装admin管理服务则不需要该数据库),该数据库用于远程统一配置管理
canal安装,# mysql,# canal,docker,binlog,全量复制,数据同步

导入脚本canal_manager.sql,初始化数据库结构数据,该脚本文件在canal.admin下的conf目录中
canal安装,# mysql,# canal,docker,binlog,全量复制,数据同步

3.2 配置修改

查询源mysql服务器的binlog位置

# 源mysql服务器中登陆mysql执行
show binary logs;

canal安装,# mysql,# canal,docker,binlog,全量复制,数据同步

修改example/instance.properties
canal安装,# mysql,# canal,docker,binlog,全量复制,数据同步

具体修改内容和我们docker里配置的一样
canal安装,# mysql,# canal,docker,binlog,全量复制,数据同步

3.3 启动

双击startup.sh即可
canal安装,# mysql,# canal,docker,binlog,全量复制,数据同步文章来源地址https://www.toymoban.com/news/detail-737437.html

到了这里,关于Canal安装教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Canal安装教程

    本文将详细介绍Canal在docker环境和windows环境下的安装教程 由于同步是基于binlog实现的,所以要先在mysql中开启binlog 修改my.cnf配置信息 docker环境下:/etc/mysql/my.cnf windows环境下:my.ini 重启mysql服务,然后连接到mysql服务,使用指令查看是否已经开启 源数据库创建一个canal账号,

    2024年02月06日
    浏览(16)
  • 基于Canal实现Mysql数据实时同步到Elasticsearch(Docker版)

    1、Canal简介   Canal主要用途是对MySQL数据库增量日志进行解析,提供增量数据的订阅和消费,简单说就是可以对MySQL的增量数据进行实时同步,支持同步到MySQL、Elasticsearch、HBase等数据存储中去。   Canal会模拟MySQL主库和从库的交互协议,从而伪装成MySQL的从库,然后向My

    2024年02月10日
    浏览(53)
  • 使用 Docker 部署 canal 服务实现MySQL和ES实时同步

    参考 ClientAdapter: Canal的Adapter配置项目 Sync ES:Canal的Adapter中ES同步的配置项 使用 Docker 部署 canal 服务 docker canal-server canal-adapter mysql Canal(基于Docker同步mysql数据到elasticsearch) Canal部署过程中的错误 Canal 1.1.4 Canal Adapter 1.1.4 Kibana: 6.8.8 ElasticSearch: 6.4.3 由于Canal 1.1.4只能适配 Ela

    2024年02月13日
    浏览(45)
  • Cannal初体验:使用Docker安装Canal详细流程说明

    此次安装命令皆是以管理员身份运行 ①创建名为mysql-test的网络 ②让mysql加入此网络 2.1 开启mysql主从配置 1、修改配置文件 打开mysql挂载目录下( /mydata/mysql/conf )的 my.cnf 配置文件,添加以下配置 配置解读: ① server-id :指定当前服务的id,必须指定,否则会报错 ② log-bin :设

    2024年02月13日
    浏览(45)
  • 使用canal同步MySQL5.7到ES中小白配置教程

    在本篇博客中,我们将深入探讨如何使用Canal进行MySQL到Elasticsearch (ES) 的数据同步。本文将涵盖Canal的基本概念、安装过程、配置步骤以及具体的同步操作,旨在帮助开发者和数据工程师理解并实现实时数据处理。包括:Canal介绍、MySQL同步、Elasticsearch配置、实时数据同

    2024年04月24日
    浏览(45)
  • 大数据Canal(三):使用Canal同步MySQL数据

    文章目录 ​​​​​​使用Canal同步MySQL数据 一、Canal架构原理

    2024年02月03日
    浏览(50)
  • Canal框架 Redis和MySQL数据一致性的解决方案 阿里中间件Canal

    MySQL与Redis缓存的同步的两种方案 方案2:解析MySQL的binlog 实现,将数据库中的数据同步到Redis。数据库每一步操作都会写入binlog,通过订阅监听binlog实时感知数据变化,根据数据变化情况删除reids并添加重试机制。 引入消息队列:若Redis删除失败,则将Redis key放入消息队列,消

    2023年04月12日
    浏览(51)
  • Alibaba Canal数据同步 mysql->mysql

    目录 1.前言 2.什么是canal 3.canal能做什么 4.如何搭建canal 4.1首先有一个MySQL服务器 4.2 准备canal 1.下载 2.解压 3.修改配置文件 4.启动canal 5.Java创建客户端,监听canalServer(官网推荐方式) 1.创建SpringBoot项目 略过… 2.导入canal客户端包 3.导入测试Main方法 6.Java创建客户端,GitHub推荐

    2023年04月22日
    浏览(82)
  • Canal+Kafka实现Mysql数据同步

    canal [kə\\\'næl] ,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 canal可以用来监控数据库数据的变化,从而获得新增数据,或者修改的数据。 canal是应阿里巴巴存在杭州和美国的双机房部署,存在跨机房同步的业务需求而提出的。

    2024年02月12日
    浏览(50)
  • canal实现MySQL和ES同步实践

    canal是阿里开源的数据同步工具,基于binlog可以将数据库同步到其他各类数据库中,目标数据库支持mysql,postgresql,oracle,redis,MQ,ES等。 MySQL的主从复制是依赖于binlog,也就是记录MySQL上所有操作的逻辑日志保存在磁盘上。主从复制就是将binlog中的数据从主库传输到从库上,一般这

    2024年04月14日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包