在 Docker 环境下搭建 MySQL InnoDB Cluster 集群的步骤如下:
准备工具与组件:
使用 MySQL Shell 作为管理工具。使用 MySQL Router 作为访问路由转发中间件。使用 MySQL Group Replication 作为高可用与高扩展解决方案。
准备 MGR 节点:
在 Docker 环境下,参考相关文档搭建 Mysql MGR 集群。在 dockerentrypoint.sh 中添加必要的配置参数,包括 binlog_checksum、enforce_gtid_consistency、gtid_mode 和 server_id。启动 MGR 容器,并通过 mysqlmgr.sh 创建 clusteradmin 用户。
搭建 MGR 集群:
下载并构建 mysqlshell 的 Docker 镜像。启动 mysqlshell 容器,使用 mysqlshell 来搭建 MGR 集群。使用 dba.checkInstanceConfiguration 检查用户的权限和 MySQL 配置是否满足搭建 MGR 集群的条件。创建一个 MGR 集群,包括在连接的节点上创建存储元数据信息、验证配置信息、将此节点注册为 seed 节点、创建必要的管理账号以及启动 Group Replication。
添加其他节点:
手动启动相应的 Docker 容器以添加其他节点。完成节点添加后,进入 MGR 节点,查看集群信息,确认 MGR 集群已经搭建完成,并确认 master 节点是其中一个集群成员。
配置 MySQL Router:
下载并构建 mysqlrouter 的 Docker 镜像。启动 mysqlrouter 容器,并通过 IP 登录 MGR 集群中 master 节点的 root 用户。在 master 节点创建一个 'root'@'172.19.0.5' 用户并授权。通过 mysqlrouter 自动生成配置,并查看生成的配置以了解协议模式和非协议模式下读写端口的设置。
验证集群与路由:
启动 mysqlrouter,通过 mysqlrouter 连接到 MGR 集群。在某个 MGR 容器中,通过 mysqlrouter 连接到 MGR 集群,并执行简单的 SQL 操作。停止当前的 master 容器,观察 MGR 集群的主节点是否自动切换到另一个集群成员。验证 mysqlrouter 是否能够根据 MySQL InnoDB Cluster 中的 metadata 调整请求路由,确保 client 请求被路由到新的主服务器节点。
通过以上步骤,你可以在 Docker 环境下成功搭建一个 MySQL InnoDB Cluster 集群,并实现高可用性和高扩展性。