canal-admin
(非必须但推荐使用):为canal提供整体配置管理、节点运维等面向运维的功能,提供相对友好的WebUI操作界面,方便更多用户快速和安全的操作。
canal-server:
服务端,从mysql读取binlog日志获取增量日志,可以通过tcp、kafka、RocketMQ等方式与客户端通信;通过zookeeper搭建集群。
canal-adapter
客户端,根据canal-server获取的增量日志执行适配到其他诸如elasticsearch、redis、mysql等端,实现数据同步
----------------------------------------------------------------------------------------------------
前提准备工作:
1、需要先安装JDK
2、没设置网段先设置网段【已经设置了就不需要再设置(nacos安装时有设置过)】
docker network create --subnet=172.172.0.0/24 docker-mysql
3、先安装mysql
下载canal组件 canal-server、canal-adapter、canal-admin
4、数据库中创建用户并授权
CREATE USER 'canal'@'%' IDENTIFIED BY 'canal'; GRANT SELECt, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%'; FLUSH PRIVILEGES;
查看canal是否有权限
select * from mysql.user where user='{canal-服务连接数据库的账户名字}' -- 这句好像并没有啥作用
5、开启mysql的binlog
show variables like 'log_bin'; show variables like 'binlog_format';
置完成后重启mysql,并查询是否配置生效:ON就是开启
查看mysql的用户:
select host,user,plugin from mysql.user ;
查看binlog:show master status;
---------------------------------------------------------------------
创建存放canal的目录
mkdir /home/canal
mkdir /home/canal/canal-server
mkdir /home/canal/canal-adpter
mkdir /home/canal/canal-admin
mkdir /home/canal/canal-tar.gz (这边将下载的压缩文件放在该目录下)
查看权限:ll
注意给文件赋权:chmod 777 canal/
部署canal-server
1.解压:将下载好的压缩文件放到服务器上进行解压(推荐用这个解压方式 不然很多文件要赋权)
cd /home/canal/canal-tar.gz/ tar -zxvf canal.deployer-1.1.6.tar.gz -C ../canal-server/ cd /canal/canal-server/canal.deployer-1.1.6/bin
用ll 查看权限,没有x说明没有执行权限
执行:chmod 777 startup.sh 赋权
创建数据库和表CREATE DATABASE canal; CREATE DATABASE IF NOT EXISTS canal default charset utf8 COLLATE utf8_general_ci; mysql> use canal; mysql> CREATE TABLE `product` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `sub_title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `price` decimal(10, 2) NULL DEFAULT NULL, `pic` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
canal-deployer 配置:
修改/canal/canal-server/conf下的canal.properties
修改/canal/canal-server/conf/example下的instance.properties
启动:
进入/canal/canal-server/bin 执行./ startup.sh
查看启动日志:进入/canal/canal-server/logs/canal
进入:/canal/canal-server/logs/example
启动后有碰到的问题:
1、内存剩余1.6G都不够,最后将服务都关掉只剩一个mysql才启动起来
2、
分析定位
自MySQL 8.0.3开始,身份验证插件默认使用caching_sha2_password
解决方案
解决:修改canal用户对应的身份验证插件为mysql_native_password
mysql> select host,user,plugin from mysql.user ; mysql> ALTER USER 'canal'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
3、
数据库里授权就好:
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
docker进入mysql命令:docker exec -it mysql容器名 bash
mysql登录:mysql -hlocalhost -uroot -p -P 【-h数据库主机地址-u用户-p密码-P端口号(大写P)】:
例:mysql -h127.0.0.1 -uroot -p123456 -P3306
退出mysql容器:exit命令或快捷键Ctrl+D
配置 canal-adapter
cd /home/canal/canal-tar.gz/
tar -zxvf canal.adapter-1.1.6.tar.gz -C ../canal-adpter/
部署配置修改
1.修改canal/canal-adapter/conf下的application.yml
cd ../ vim canal-adpter/conf/application.yml
2.删除canal/canal-adapter/conf下的bootstrap.yml
rm -rf canal-adpter/conf/bootstrap.yml
可以将本地application.yml文件和其他子配置文件删除或清空, 启动工程将自动从远程加载配置
3.修改/canal/canal-adapter/conf/es7下的mytest_user.yml
vim canal-adpter/conf/es7/mytest_user.yml
4.启动:
canal-adpter/bin/./startup.sh
5.Es中创建mapping索引结构
# 在kibana工具里创建es索引
PUT canal_product
{
"mappings": {
"properties": {
"title": {
"type": "text"
},
"sub_title": {
"type": "text"
},
"pic": {
"type": "text"
},
"price": {
"type": "double"
}
}
}
}
6.mysql数据库插入数据
INSERT INTO product ( id, title, sub_title, price, pic ) VALUES ( 25, '小米9', ' 全面屏游戏智能手机 6GB+64GB', 2999.00, NULL );
7.查看日志:canal/canal-adapter/logs/adapter
tailf -10 canal-adapter/logs/adapter/adapter.log
在es-head中可以查看到数据
Canal-admin 部署
1.创建canal_manager数据库
CREATE DATABASE canal_manager; CREATE DATABASE IF NOT EXISTS canal_manager default charset utf8 COLLATE utf8_general_ci;
2.建表:/canal/canal-admin/conf下的canal_manager.sql
3、修改conf/application.yml,主要是修改数据源配置和canal-admin的管理账号配置,注意需要用一个有读写权限的数据库账号
这个时候就可以启动了【但出现canal admin启动失败,且无日志】
canal-admin是要求有启动顺序的,如果无法启动且无日志,将canal-deployer,canal-adapter先停用,再启动canal-admin
4、启动canal-admin:在bin下启动,查看logs下的日志
5.访问canal-admin的Web界面,输入账号密码admin:123456即可登录,访问地址
服务器ip:8077
参考文章 参考文章2



