docker docker-compose.yml 部署canal 创建配置example配置 部署 mysql 8.0.30 部署rabbitmq 创建消息队列 部署canal同步rabbitmq
时间: 2024-03-26 16:35:38 浏览: 31
好的,我理解了你的问题。首先,你需要在docker中部署canal,mysql和rabbitmq。你可以使用以下docker-compose.yml文件来创建这些容器:
```yaml
version: '3.7'
services:
canal:
image: canal/canal-server:v1.1.4
ports:
- "11111:11111"
- "11112:11112"
environment:
- canal.auto.scan=false
- canal.instance.master.address=mysql:3306
- canal.instance.dbUsername=root
- canal.instance.dbPassword=123456
- canal.instance.connectionCharset=UTF-8
- canal.instance.tsdb.enable=true
- canal.instance.gtidon=false
depends_on:
- mysql
mysql:
image: mysql:8.0.30
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=test
ports:
- "3306:3306"
rabbitmq:
image: rabbitmq:3-management
ports:
- "5672:5672"
- "15672:15672"
```
这个docker-compose.yml文件将创建三个服务:canal、mysql和rabbitmq。你需要注意的是,canal实例的master地址设置为mysql,这意味着canal将从mysql中获取数据。mysql的root密码设置为123456,数据库名为test。rabbitmq将使用默认端口5672和15672。
接下来,你需要创建一个名为example的canal配置文件,该文件包含要同步的表和目标rabbitmq队列的名称。以下是一个示例配置:
```properties
canal.instance.master.address=mysql:3306
canal.instance.dbUsername=root
canal.instance.dbPassword=123456
canal.instance.filter.regex=.*\\..*
canal.mq.topic=example
canal.mq.partition=0
canal.mq.dynamicTopic=false
canal.mq.partitionsNum=3
canal.mq.replicationFactor=3
canal.mq.rabbitmq.host=rabbitmq
canal.mq.rabbitmq.port=5672
canal.mq.rabbitmq.virtualHost=/
canal.mq.rabbitmq.username=guest
canal.mq.rabbitmq.password=guest
canal.mq.rabbitmq.exchange=canal.exchange
```
在上面的配置中,我们指定了canal实例作为mysql:3306的主服务器,并设置了mysql的root用户名和密码。canal.instance.filter.regex指定要同步的所有表。canal.mq.topic指定要将更改发送到的rabbitmq队列的名称。canal.mq.rabbitmq.host指定rabbitmq的主机名,端口为5672。注意,这里的rabbitmq主机名必须与docker-compose.yml文件中的服务名称相同。
最后,你需要在canal服务中挂载example配置文件。修改docker-compose.yml文件,如下所示:
```yaml
version: '3.7'
services:
canal:
image: canal/canal-server:v1.1.4
ports:
- "11111:11111"
- "11112:11112"
environment:
- canal.auto.scan=false
- canal.instance.config.file=/canal/conf/example.properties
depends_on:
- mysql
- rabbitmq
volumes:
- ./example.properties:/canal/conf/example.properties:ro
mysql:
image: mysql:8.0.30
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=test
ports:
- "3306:3306"
rabbitmq:
image: rabbitmq:3-management
ports:
- "5672:5672"
- "15672:15672"
```
在修改后的docker-compose.yml文件中,我们将example.properties文件挂载到canal服务的/canal/conf目录中,并将canal.instance.config.file设置为该文件的路径。现在,启动docker-compose:
```sh
docker-compose up -d
```
现在,你有了一个可以将mysql更改同步到rabbitmq的canal实例。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)