1.docker安装mysql8.0.27
#拉取MySQL8镜像
docker pull mysql:8.0
#创建MySQL目录并打开
mkdir ~/mysql
cd mysql/
创建并运行容器
docker run -id \
-p 3306:3306 \
--name=mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0
安装时终端显示:
进入mysql容器
docker exec -it mysql /bin/bash
进入MySQL
mysql -uroot -p123456
允许root用户远程访问
#切换数据库
use mysql;
#查看当前用户
select user,host,plugin,authentication_string from user;
#host:访问主机--改成%
#user:访问用户名
#plugin:认证方式(密码加密方式)--改成mysql_native_password
#authentication_string:密码加密后的一长串字符
#将访问主机改成任意
update user set host='%' where user='root';
#开通所有权限
GRANT ALL ON *.* TO 'root'@'%';
#mysql8加密规则为caching-sha2-password,需要修改为mysql_native_password
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的数据库密码';
修改后的user表
本地navicat连接
2.docker安装redis6.0
#拉取redis镜像
docker pull redis:6.0
#创建容器,设置端口映射
docker run -id --name=c_redis -p 6379:6379 redis:6.0
3.canal
3.1canal简介
原理相对比较简单:
1. canal
模拟
mysql slave
的交互协议,伪装自己为
mysql slave
,向
mysql master
发送
dump
协议
2. mysql master
收到
dump
请求,开始推送
binary log
给
slave(
也就是
canal)
3. canal
解析
binary log
对象
(
原始为
byte
流
) canal需要使用到
mysql,
canal 是基于mysql
的主从模式实现的,所以必须先开启
binlog.
3.2 mysql开启binlog模式
先使用
docker
创建
mysql
容器
,
此处不再演示
.
(1)
连接到
mysql
中
,
并修改
/etc/mysql/my.conf
需要开启主 从模式,开启
binlog
模式。 执行如下命令,编辑mysql配置文件.
#进入mysql容器
docker exec -it mysql /bin/bash
#安装vim
apt-get update
apt-get install vim
#编辑mysql配置文件
vi /etc/mysql/my.conf
#######################################
#在文件当中加入:
log-bin=/var/lib/mysql/mysql-bin
server-id=12345
binlog_format=ROW
sync-binlog=1
mysql配置文件:
(2)
创建账号用于测试使用
, 使用root
账号创建用户并授予权限
#创建canal用户
create user canal@'%' IDENTIFIED by 'canal';
#授权
GRANT ALL ON *.* TO 'canal'@'%';
#同安装mysql原理
ALTER USER 'canal'@'%' IDENTIFIED WITH mysql_native_password BY 'canal';
FLUSH PRIVILEGES;
(3)
重启
mysql
容器
docker restart mysql
3.3 canal容器安装
下载镜像:
docker pull docker.io/canal/canal-server
容器安装 :
docker run -p 11111:11111 --name canal -d docker.io/canal/canal-server
进入容器
,
修改核心配置
canal.properties
和
instance.properties
,
canal.properties
是
canal
自身的配
置,
instance.properties
是需要同步数据的数据库连接配置。
执行代码如下
:
docker exec -it canal /bin/bash
cd canal-server/conf/
vi canal.properties
cd example/
vi instance.properties
修改
canal.properties
的
id
,不能和
mysql
的
server-id
重复,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/370dbfb4c8e12cf34051e404ab310ebe.png)
修改instance.properties,配置数据库连接地址:
取消这行注释:
配置完成后,设置开机启动,并记得重启canal。
#自启
docker update --restart=always canal
#重启canal
docker restart canal
查看日志:
#查看example.log
cd canal-server/logs/example/
cat example.log
#查看canal.log
cd canal-server/logs/canal/
cat canal.log
正常启动的example.log
正常启动的canal.log