docker环境,搭建Mysql Innodb Cluster集群

如题所述

在 Docker 环境下搭建 MySQL InnoDB Cluster 集群的步骤如下:

首先,我们使用 MySQL Shell 作为管理工具,MySQL Router 作为访问路由转发中间件,以及 MySQL Group Replication 作为高可用与高扩展解决方案。

接着,准备 MGR 节点。如果在 docker 环境下搭建 Mysql MGR 集群,可以参考前文。在搭建 InnoDB Cluster 时,需要在 docker-entrypoint.sh 中添加配置参数,包括 binlog_checksum、enforce_gtid_consistency、gtid_mode 和 server_id,这些是搭建 InnoDB Cluster 必须的配置。然后启动 MGR 容器,并通过 mysql-mgr.sh 创建 clusteradmin 用户。

接下来,使用 mysql-shell 搭建 MGR 集群。下载 mysql-shell_8.0.18-1ubuntu16.04_amd64.deb,并构建相应的镜像。启动 mysql-shell 容器后,通过 mysql-shell 来搭建 MGR 集群,MGR 节点的 IP 包括 172.19.0.2、172.19.0.3 和 172.19.0.4。通过 dba.checkInstanceConfiguration 检查用户的权限、MySQL 配置等是否满足搭建 MGR 集群的条件。然后,创建一个 MGR 集群,包括在连接的节点上创建存储元数据信息、验证配置信息、将此节点注册为 seed 节点、创建必要的管理账号以及启动 Group Replication。

在添加其他节点时,需要手动启动相应的 docker 容器。完成节点添加后,进入 MGR 节点,查看集群信息,确认 MGR 集群已经搭建完成,master 节点是其中一个集群成员。

为了实现请求转发,下载 mysql-router-community_8.0.18-1ubuntu16.04_amd64.deb 并构建相应的镜像,启动 mysql-router。通过 mysql-router 可以自动生成配置,但需要通过 IP 登录 MGR 集群中 master 节点的 root 用户。在 master 节点创建一个 'root'@'172.19.0.5' 用户并授权(172.19.0.5 是 mysql-router 的 IP)。自动生成配置后,可以通过查看生成的配置来了解协议模式和非协议模式下读写端口的设置。

启动 mysql-router,至此,就可以通过 mysql-router 连接到 MGR 集群。在 mgr-2 容器中,通过 mysql-router 连接到 MGR 集群,并执行简单的 SQL 操作。当将 master 容器(即 mgr-1 容器)停止后,可以看到 MGR 集群的主节点自动切换到另一个集群成员(mgr-2)。在切换后,mysql-router 可以根据 Mysql InnoDB Cluster 中的 metadata 调整请求路由,确保 client 请求被路由到新的主服务器节点,因此,继续执行 SQL 操作是成功的。
温馨提示:答案为网友推荐,仅供参考
相似回答