docker 安装canal、mysql、rabbitmq,实现数据同步

最近研究了一下数据库问题,搭建了一主多从数据库,实现读写分离,后来发现canal实现数据库同步的机制和主从数据库一样,也就搭建了一个canal,可以和rabbitmq进行交互,代码订阅消息就可以获取数据库的变更信息,废话不说,现在开始

第一步:

从docker拉取数据库镜像,进行安装,我的数据库版本8.0.29、canal的版本为1.1.5

 接下来就是安装数据库,执行以下语句,会创建一个mydata/mysql/文件,把配置信息挂载到这里

docker run -p 3306:3306 --name mysql \
-v /root/mysql/mysql-files:/var/lib/mysql-files \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0.29

修改配置文件my.cnf

[mysqld]
# 服务器唯一id,默认值1
server-id=1
# 设置日志格式,默认值ROW
binlog_format=STATEMENT
# 二进制日志名,默认binlog
# log-bin=binlog
# 设置需要复制的数据库,默认复制全部数据库
#binlog-do-db=mytestdb
# 设置不需要复制的数据库
#binlog-ignore-db=mysql
#binlog-ignore-db=infomation_schema

重新启动 docker restart 容器id

进入到容器内部docker exec -it 容器id bash,登录mysql -u root -p

创建canal 用户

create user 'extension_replace' @'192.168.1.130' identified by '1q2w3e4r5t6yWEQWEW7u*U&Y^T%R$E#W@QWDDSADSADASDSADSAD'

赋予创建用户权限

grant replication slave on *.* to 'extension_replace' @'192.168.1.130' identified by '1q2w3e4r5t6yWEQWEW7u*U&Y^T%R$E#W@QWDDSADSADASDSADSAD';

flush privileges;

然后查看时候开启 show slave status\G;

 这就开启了主数据库日志,

第二步,安装canal,同上,拉去之后,执行下面启动语句

docker run --name canal -p 11111:11111 \
-v /mydata/canal/instance.properties:/home/admin/canal-server/conf/example/instance.properties \
-v /mydata/canal/canal.properties:/home/admin/canal-server/conf/canal.properties \
-v /mydata/canal/logs:/home/admin/canal-server/logs \
-d canal/canal-server:v1.1.5

然后修改配置文件canal.properties文件,将模式改为rabbitmq

 并配置rabbitmq信息,配置里面的交换机要和rabbitmq里面的一致

 

 

 继续配置实例新型instance.propertise里面的信息,配置主数据库的id:port,用户名密码,既可以了,然后重启canal

 第三部

rabbitmq,和上面差不多,拉取镜像,启动,配置rabbitmq的信息皆可以了,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值