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

标签 mysql docker docker-compose

我正在尝试设置两个 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

因此,我有两个问题:

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

最佳答案

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

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

关于mysql - Docker 具有持久性的多个 MySQL 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34636261/

相关文章:

php - 无法将 Bitnami Docker Prestashop 部署到适用于 Linux 容器的 Azure Web 应用程序

windows - 在 windows docker 容器容器上安装 Print-Server 失败

mysql - 用新行 mysql 替换第一个空格

mysql - 如何使用 SQL 查询计算计费通话费用

MySQL 比较 WHERE 子句中的结果

docker - 当Laravel连接时,Mac OS上的MySQL docker在caching_sha2上的 “crash”

javascript - Docker运行,无法访问应用程序

docker - 等效于Docker Cloud中的docker-compose.yml参数

docker - VS-code 在容器中重新打开 -> ERROR : . PermissionError: [Errno 13] Permission denied

PHP 获取适合参数的下一行