我正在尝试设置两个 MySQL 容器和一个纯数据容器,以使用 Docker Compose 持久保存 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
因此,我有两个问题:
- 如何为多个 MySQL 容器正确实现纯数据容器?
- 如何将多个 MySQL 容器的纯数据容器实现为具有主-主复制和负载均衡器的集群?
最佳答案
据我所知,MySQL 守护进程会请求对数据文件进行独占锁定。这个锁然后会阻止第二个实例旋转起来,这可能解释了你看到的错误。
也许尝试做一个主从装备,你有两个不同的卷,但从属 (db2) 绑定(bind)到 db1?
关于mysql - Docker 具有持久性的多个 MySQL 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34636261/