mysql - 用于 mysql 复制的端口转发(在 docker 内)

标签 mysql docker docker-compose

抱歉,如果我犯了一个错误,这是我的第一篇文章。

我的问题

如何配置主/从 mysql 数据库以更改主发送数据的端口(我想要端口 3307 而不是 3306)?

我需要这样做才能拥有多个从属数据库。

配置

所以我有一个schema of my replication environment .

还有一个part of my Docker compose yaml file .

带端口:

php_my_admin:
  ports:
    - '8081:80'

db_caucasus:
  ports:
    - '3307:3307'

为了启动主/从复制,我做了:

stop slave;
CHANGE MASTER TO MASTER_HOST='11.111.111.01', MASTER_USER='db-rep', MASTER_PASSWORD='001', MASTER_LOG_FILE='mysql-bin.000111', MASTER_LOG_POS= 111, MASTER_PORT=3306;
start slave;

之后:

  • 主数据库上的服务器 ID 正确为 777

  • 从数据库上的SHOW SLAVE STATUS正常(Slave_IO_Running:OK,Slave_SQL_Running:OK,相同的Master_Log_File和相同的Read_Master_Log_Pos)

当我修改主数据库上的数据时,我可以看到复制数据被发送到端口3306(例如使用下面的命令)

tcpdump -A port 3306 and host 11.111.111.01
tcpdump -A port 3307 and host 11.111.111.01

预先感谢您的回答!

最佳答案

您必须在 docker-compose.yml 中链接 mysql 主服务器和从服务器。如果主设备和从设备都配置正确,它们应该可以毫无问题地进行通信。

mysql_slave:
     ports:
        - "3307:3307"
mysql_master:
     ports:
        - "3306:3306"
     links:
        - mysql_slave

关于mysql - 用于 mysql 复制的端口转发(在 docker 内),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42008036/

相关文章:

mysql - Docker Compose 收到错误 ECONNREFUSED 127.0.0.1 :3306 with MySQL and NodeJS

docker-compose - Traefik 2 网关超时

mysql - 如何设置从 5000 开始的自动递增

mysql - SQL 查询字符串中的可选变量

docker - 使用 Spring Boot 插件发布 Docker 镜像,无需凭据

c++ - 如何让 ASan 使用 4.12.3 Linux 内核?

windows - 在 Windows 上使用 docker compose 进行卷绑定(bind)

mysql - 尝试对来自三个 SQL 表的两组结果进行求和和分组

mysql - MySQL 维护需要 Cron 语法

mysql - 为什么我不能使用密码通过docker登录mysql服务器?