将 MySQL 集群放入 Docker 容器 已翻译 100%

oschina 投递于 2014/09/01 06:38 (共 3 段, 翻译完成于 09-01)
阅读 5647
收藏 3
1
加载中

为了更熟悉 docker 以及为 MySQL 群集做一个测试配置,我给 MySQL Cluster (也叫 NDB 群集) 的各个组件做了一个 docker 镜像。

首先我弄了一个 Fedora 20 容器,然后把所有组件都丢到容器里面运行。能用,而且配置起来也挺简单。不过这些都还没有支持 docker。

然后我为所有的控件做了个 Dockerfile 和一个基础镜像。

开源中国匿名会员
开源中国匿名会员
翻译于 2014/09/01 07:57
1

基础镜像:

  • 包含了 MySQL 群集软件

  • 安装了 libaio

  • 设置了 mysql 用户和工作组

  • 作为其他镜像的基础服务

管理节点 (ndb_mgmd) 镜像:

  • 设置 ndb_mgmd 作为入口点

  • 设置群集配置文件 config.ini 

  • 通过 "--name=mymgm01" 启动

数据节点 (ndbmtd) 镜像:

  • 设置 ndbmtd 作为入口点

  • 用下面的链接字符串: "host=${MGM01_PORT_1186_TCP_ADDR}:1186"

  • 通过 "--link mymgm01:mgm01" 启动,以便允许它连接到管理节点。

  • 你应该为这个类型节点弄 2 个容器,以便用来创建一个有 2 个节点的节点组。

API 节点 (mysqld) 镜像:

  • 设置 my.cnf

  • 运行 mysqld_safe

  • 通过 "--link mymgm01:mgm01" 启动,一边允许它连接到管理节点。

  • ndb-connectstring 作为 mysqld_safe 的启动参数,因为它来自环境变量。不支持在 my.cnf 中使用环境变量。Docker 应该是支持更新 /etc/hosts 的,不过我这没成功。

  • 暴露 3306 端口给你的应用

开源中国匿名会员
开源中国匿名会员
翻译于 2014/09/01 08:10
1

管理客户端 (ndb_mgm) 镜像:

  • 设置 ndb_mgm 作为入口点

  • 通过 "--link mymgm01:mgm01" 启动,以便允许它连接到管理节点。

  • 在容器中运行ndb_mgm ,在管理服务器上不需要再公开 1186 端口。更多细节看 这里

  • 你可以重写入口点来运行其他 NDB 组件,比如说 ndb_desc 或者 ndb_select_all

你可以在这找到镜像https://registry.hub.docker.com/u/dveeden/mysqlcluster72/
可以在这找到 Dockerfiles https://github.com/dveeden/dve-docker  

可能的改进

  • 在 config.ini 中使用主机名而不是 IPv4 地址。这可以更灵活。不过这就意味着必须和 DNS 一起更新 /etc/hosts 或 fideling。

  • 在 Dockerfiles 里用 VOLUMES ,可以让数据处理工作更简单。

开源中国匿名会员
开源中国匿名会员
翻译于 2014/09/01 08:19
1
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(1)

开源中国匿名会员
开源中国匿名会员
以后不想翻译这种纯配置的文章了。基本API一变或者环境一变就过时了。
还是讲讲思路比较好。配置到时候再查就好了。
而且这篇也没有图文并茂,算不得上乘的手册文。
返回顶部
顶部