Docker具有持久性的多个MySQL容器

时间:2016-01-06 15:03:21

标签: mysql docker docker-compose

我正在尝试使用Docker Compose设置两个MySQL容器和一个仅用于数据的容器来保存MySQL数据。

这是docker-compose.yml:

db1:
  image: mysql
  volumes_from:
    - data
  environment:
    - MYSQL_ROOT_PASSWORD=password

db2:
  image: mysql
  volumes_from:
    - data
  environment:
    - MYSQL_ROOT_PASSWORD=password

data:
  image: mysql
  volumes:
    - /var/lib/mysql
  entrypoint: /bin/echo

但是,两个mysql守护进程都存在冲突,因为它们需要一个单独的数据目录:

[Note] InnoDB: Check that you do not already have another mysqld process using the same InnoDB data or log files.
[ERROR] InnoDB: Unable to lock ./ibdata1 error: 11

因此,我有两个问题:

  1. 如何为多个MySQL容器正确实现仅数据容器?
  2. 如何将多个MySQL容器的仅数据容器实现为具有Master-Master复制和负载均衡器的群集?

1 个答案:

答案 0 :(得分:3)

据我所知,MySQL守护进程会请求对数据文件进行独占锁定。此锁定将阻止第二个实例旋转,这可能会解释您所看到的错误。

也许尝试做一个主奴隶装备,你有两个不同的卷,但奴隶(db2)绑定到db1?