docker-compose.yml 部署canal和部署 mysql 8.0.30 将mysql同步rabbitmq 并且在docker-compose.yml文件中配置canal 的example和创建rabbitmq队列
时间: 2024-03-26 15:35:19 浏览: 31
好的,以下是一个示例的 Docker Compose 文件,用于部署 Canal 和 MySQL 8.0.30,并将 MySQL 数据同步到 RabbitMQ 中。同时,该文件也包含了配置 Canal 示例和创建 RabbitMQ 队列的步骤。
```
version: '3'
services:
mysql:
image: mysql:8.0.30
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=test
- MYSQL_USER=test
- MYSQL_PASSWORD=test
canal:
image: canal/canal-server:v1.1.4
ports:
- "11111:11111"
- "11112:11112"
depends_on:
- mysql
environment:
- canal.instance.master.address=mysql:3306
- canal.instance.dbUsername=root
- canal.instance.dbPassword=123456
- canal.instance.connectionCharset=UTF-8
- canal.instance.filter.regex=.*\\..*
- canal.instance.filter.black.regex=mysql\\.slave_.*,mysql\\.innodb_.*
- canal.instance.filter.table.regex=test\\..*
- canal.instance.filter.druid.ddl=true
- canal.instance.filter.query.dcl=false
- canal.instance.filter.query.dml=false
rabbitmq:
image: rabbitmq:3-management
ports:
- "5672:5672"
- "15672:15672"
environment:
- RABBITMQ_DEFAULT_USER=guest
- RABBITMQ_DEFAULT_PASS=guest
logstash:
image: docker.elastic.co/logstash/logstash:7.15.0
volumes:
- ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf:ro
depends_on:
- rabbitmq
- mysql
environment:
- LS_JAVA_OPTS=-Xmx256m -Xms256m
```
上述文件中,我们启动了 MySQL、Canal、RabbitMQ 和 Logstash 服务。其中,Canal 将监控 MySQL 数据库的变化,RabbitMQ 用于接收 Logstash 发送的 MySQL 数据变化,Logstash 用于将 MySQL 数据变化同步到 RabbitMQ 中。
接下来,我们需要在 Logstash 中编写配置文件,将 MySQL 的数据同步到 RabbitMQ 中。在这里,我们使用 Logstash 的 JDBC 输入插件和 RabbitMQ 输出插件。在该示例中,我们将 MySQL 中的 `test` 数据库的 `users` 表中的数据同步到 RabbitMQ `my_exchange` 交换机的 `my_key` 队列中。以下是 `logstash.conf` 配置文件的示例:
```
input {
jdbc {
jdbc_driver_library => "/usr/share/logstash/mysql-connector-java-8.0.26.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://mysql:3306/test"
jdbc_user => "test"
jdbc_password => "test"
statement => "SELECT * FROM users"
}
}
output {
rabbitmq {
host => "rabbitmq"
exchange => "my_exchange"
exchange_type => "direct"
key => "my_key"
durable => true
user => "guest"
password => "guest"
}
}
```
最后,我们需要在 RabbitMQ 中创建 `my_exchange` 交换机和 `my_key` 队列。以下是使用 RabbitMQ 的 Web 界面创建交换机和队列的步骤:
1. 访问 `http://localhost:15672`,使用默认的用户名和密码 `guest` 登录。
2. 在 RabbitMQ 管理界面中,选择 `Exchanges` 选项卡。
3. 点击 `Add a new exchange` 按钮,并填写以下信息:
- Name:`my_exchange`
- Type:`direct`
- Durable:勾选
4. 点击 `Add exchange` 按钮创建交换机。
5. 在 RabbitMQ 管理界面中,选择 `Queues` 选项卡。
6. 点击 `Add a new queue` 按钮,并填写以下信息:
- Name:`my_key`
- Durable:勾选
7. 点击 `Add queue` 按钮创建队列。
8. 在 `my_key` 队列中,点击 `Bindings` 选项卡。
9. 点击 `Add binding` 按钮,并填写以下信息:
- Exchange:`my_exchange`
- Routing key:`my_key`
10. 点击 `Bind` 按钮完成绑定。
现在,你可以使用 `docker-compose up` 命令启动该示例。Canal 将监控 MySQL 数据库的变化,Logstash 将 MySQL 数据变化同步到 RabbitMQ 中,RabbitMQ 将接收数据,并将其发送到 `my_key` 队列中。
相关推荐
![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)