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

时间:2017-02-02 16:59:33

标签: mysql docker docker-compose

对不起,如果我犯了错误,这是我的第一篇文章。

我的问题

如何配置主/从mysql数据库更改主设备发送数据的端口(我希望端口3307而不是3306)?

我需要这样做才能拥有多个奴隶db。

配置

所以我有schema of my replication environment

part of my Docker compose yaml file

使用Ports:

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;

之后:

  • 主数据库上的server-id正确777

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

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

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

提前感谢您的回答!

1 个答案:

答案 0 :(得分:0)

你必须在docker-compose中链接mysql master和slave。如果主设备和从设备都已正确配置,则应该没有问题进行通信。

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