docker docker-compose.yml 部署canal 部署 mysql 8.0.30 将mysql同步rabbitmq
时间: 2023-07-18 21:46:19 浏览: 192
好的,以下是部署 Canal 和 RabbitMQ 的 Docker-Compose 文件:
```yaml
version: '3'
services:
mysql:
image: mysql:8.0.30
restart: always
environment:
MYSQL_ROOT_PASSWORD: <your_password>
volumes:
- ./mysql/conf:/etc/mysql
- ./mysql/data:/var/lib/mysql
ports:
- "3306:3306"
command: --default-authentication-plugin=mysql_native_password
canal:
image: canal/canal-server:1.1.5
restart: always
environment:
- canal.instance.mysql.slaveId=1234
- canal.instance.master.address=<mysql_host>:3306
- canal.instance.dbUsername=root
- canal.instance.dbPassword=<your_password>
- canal.instance.connectionCharset=UTF-8
- canal.instance.filter.regex=.*\\..*
- canal.instance.tsdb.enable=true
- canal.instance.gtidon=false
- canal.instance.dump.filter=DruidDataSource
ports:
- "11111:11111"
rabbitmq:
image: rabbitmq:3.8-management-alpine
restart: always
environment:
RABBITMQ_DEFAULT_USER: <your_username>
RABBITMQ_DEFAULT_PASS: <your_password>
ports:
- "5672:5672"
- "15672:15672"
```
这里需要替换 `<your_password>`、`<mysql_host>`、`<your_username>` 和 `<your_password>` 为自己的 MySQL root 密码、MySQL 主机地址、RabbitMQ 用户名和密码。
接下来,你需要在 MySQL 中创建一个用户并授予相应权限,以便 Canal 可以访问并同步数据:
```sql
CREATE USER 'canal'@'%' IDENTIFIED BY '<your_password>';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES;
```
最后,修改 Canal 配置文件,将数据同步到 RabbitMQ:
```yaml
name: example
rabbitmq:
enabled: true
host: localhost:5672
virtualHost: /
username: <your_username>
password: <your_password>
exchange: canal-exchange
exchangeType: fanout
queue: canal-queue
routingKey: canal-routing-key
```
这里需要替换 `<your_username>` 和 `<your_password>` 为自己的 RabbitMQ 用户名和密码。
现在,你可以使用以下命令启动所有服务:
```
docker-compose up -d
```
Canal 将会自动同步 MySQL 数据到 RabbitMQ 中。你可以通过 RabbitMQ 管理界面查看同步的数据。
阅读全文