Mysql8 InnoDB集群配置图解

声明与简介

本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。本文主要介绍mysql InnoDB Cluster(集群)的配置及操作。

: 1  当前已经在CentOS8里安装配置单主MGR集群,详见 Mysql 8 MGR集群单主配置图解 、  Mysql8 MGR集群操作图解

2  当前各节点内mysql版本是8.0.23,其中host_128是单主、host_129、Host_130是从节点。

3 当前安装方式是RPM离线包。

官方介绍

  • MySQL InnoDB Cluster为MySQL提供了完整的高可用性解决方案。
  • MySQL Shell的AdminAPI可以轻松地配置和管理一组至少三个MySQL服务器实例,以充当InnoDB集群。每个数据库实例都运行组复制,这通过内置故障转移提供一个复制 InnoDB Clusters数据的方法。有了AdminAPI,客户端将不在与InnoDB群集直接交互。
  • MySQL Router可以根据之前的部署自动配置, 可以协助客户端程序跟数据库服务实例无感连接,在集群内某个实例掉线时集群会自动重新配置。
  • 在单主模式下,InnoDB集群仅有一个读写服务器实例(即单主节点)。多个从节点是单主的副本。如果主发生故障,则从节点会选举一个作为单主。MySQL Router会检测到这种变化并将客户端应用程序转发到新的单主上。高级用户还可以将集群配置配置成多主模式。

个人理解

  • MySQL InnoDB Cluster是建立在group repalication基础之上的高可用方案,其中MGR是基础。
  • Mysql shell作为客户端提供对集群的管理和访问,支持JS、Python、SQL三种方式。可谓新一代mysql client。
  • Mysql Router主要提供对集群的检测和自动配置以及访问端口的映射。
  • MySQL InnoDB Cluster的HA方案有三剑客MySQL MGR、MySQL SHELL、MySQL Router构成。

InnoDB集群工作流程

MySQL InnoDB Cluster Workflow:

下载安装Mysql Shell

下载并安装Mysql Shell,这里采用离线rpm的方式,免安装(解压配置环境变量)方式,后文会有提及。

下载Mysql Shell

Step 1 下载安装Mysql Shell

MySQL :: Download MySQL Shell 里找到 Archives(归档)按钮下载Mysql Shell 8.0.23

Step 2 :选择软件版本、操作系统、操作系统版本

:绿色(免安装)版可下载gz文件如 mysql-shell-8.0.23-linux-glibc2.12-x86-64bit.tar.gz,见下例:

安装Mysql Shell

此步骤在集群的3台主机上都要操作。

Step 1 通过SSH客户端重新上传Mysql Shell rpm包。

Step 2:切换到上传后的目录准备安装

#切换到rpm包目录
cd /root/softwares/mysql/

Step 3:通过rpm方式离线安装

# 安装mysql-shell
rpm -ivh mysql-shell-8.0.23-1.el8.x86_64.rpm

:如果不知道Mysql Shell目录行的位置,可以通过 rpm的ql参数查询:

#查询rpm包的安装路径
rpm -ql mysql-shell-8.0.23-1.el8.x86_64

Step 4:查看mysql-shell版本

# 查看mysql shell的版本,结果见如下注释部分
mysqlsh –V
#mysqlsh   Ver 8.0.23 for Linux on x86_64 - for MySQL 8.0.23 (MySQL Community Server (GPL))

Step 5:分发到其它节点,重复Step1到Step4,这里仅演示分发。

# SCP分发到从节点,并以上述步骤安装
scp -r mysql-shell-8.0.23-1.el8.x86_64.rpm root@host_129:/root/softwares/mysql/

使用Mysql Shell配置集群

Step 1:Mysql shell连入单主节点

# 通过mysqlsh进入本机数据库
mysqlsh -uroot -proot1234

Step 2:创建Innodb集群,这里adoptFromGR即以适应当前group replication方式加入集群。

// 创建集群
dba.createCluster('testInnodbCluster', {adoptFromGR: true});

 注:这里mysql的root用户访问主机权限(比如'%')需要打开,如果仅能访问localhost则命令为报错。详见文末的问题章节。

Step 3:查看集群状态

//查看集群状态
dba.getCluster("testInnodbCluster").status()

Step 4:生成Innodb Cluster集群管理员,单独管理集群而不再以root方式。

//通过root用户登录后指定新的集群管理员,手动输入用户密码。
dba.getCluster("testInnodbCluster").setupAdminAccount('icadmin');

:icadmin用户密码是icadmin123

下载安装mysql router

下载mysql router

Step 1 下载安装Mysql Router

MySQL :: Download MySQL Router 里找到 Archives(归档)按钮下载Mysql Router 8.0.23

Step 2 :选择软件版本、操作系统、操作系统版本

安装mysql router

Step 1 通过SSH客户端重新上传Mysql Shell rpm包。

Step 2 集群里单主节点安装mysql router。

#切换到rpm包目录
cd /root/softwares/mysql/
#rpm 安装mysql router
rpm -ivh mysql-router-community-8.0.23-1.el8.x86_64.rpm

Step 3 查看mysql router版本

#查看mysql router版本
mysqlrouter -V

配置启动mysql router

Step 1 :初始化mysql router,这里配置文件地址为/data/mysqlrouter,可自行修改。conf-bind-address可选集群内其它节点,当前选择是单主节点。

#初始化mysqlrouter
mysqlrouter --bootstrap root@localhost:3306 --directory /data/mysqlrouter --conf-use-sockets --user=mysql --conf-bind-address=192.168.111.128

Step 2:查看router目录及配置信息

#切换到mysqlrouter配置目录
cd /data/mysqlrouter
tree .

#查看router配置信息
more mysqlrouter.conf

:不难发现单主映射端口为6446,从节点端口为6447.

Step 3: 启动mysql router

#启动mysqlrouter(以指定配置文件的方式)并查看mysqlrouter进程
mysqlrouter -c /data/mysqlrouter/mysqlrouter.conf
ps –ef | grep mysqlrouter

Step 4 其它节点均安装mysql router(选做,当前环境仅安装在单主节点)

客户端访问集群

访问单主节点(RW)

#通过绑定地址和映射的端口访问集群里可RW的节点
mysql -uicadmin -p -h 192.168.111.128 -P 6446
# 执行查看主机和端口号SQL命令
# select @@hostname,@@port;
# exit;

访问从节点(RO)

这里模拟两次访问,同样的客户端命令,mysql router可能会转发不到不同的从节点上。

#通过绑定地址和映射的端口访问集群里可RO的节点
# 这里模拟两次访问,对应到两个从节点。
mysql -uicadmin -p -h 192.168.111.128 -P 6447;
# 执行查看主机和端口号SQL命令
# select @@hostname,@@port;
# exit;
mysql -uicadmin -p -h 192.168.111.128 -P 6447;
#select @@hostname,@@port;
#exit;

可见mysql router会根据内部算法(如Round-Robin)选举某个从节点接受客户端的访问。是不是有点像HAPRoxy?

问题

Issue 1:  mysqlsh直连,不加任何参数报错。

解决方法:msqlsh需要以某个用户连接进入。

Issue 2: 集群名参数错误

解决方法:集群名只能以字符、数字和下划线“_”,其它符号如空格属非法。

Issue 3:当前管理用户root访问从节点受限,当前虚拟机内mysql root用户不能以IP方式访问自己和从节点。

解决方法: 在组复制的单主节点上创建个集群管理员用户root或者更新root的host限制为%。

-- Way 1:
create user 'root'@'%' identified by 'root1234';
grant all on *.* to 'root'@'%';
flush privileges
/*
注:此时会有两个root用户,但访问的host不一样,一个是localhost,一个是无限制。可用Way 2直接更新host为‘%’(无限制)。
*/
-- Way 2:
use mysql
update user set host = '%' where user = 'root';

:该操作仅需要在单主上执行,其它节点会自动同步。

Mysql8 InnoDB Cluster Shell Router HA配置图解相关推荐

  1. InnoDB Cluster详解

    目录 一.InnoDB Cluster简介 1. 整体架构 2. MySQL Shell 3. MySQL Router 4. MySQL服务器集群 二.创建InnoDB Cluster 1. 检查实 ...

  2. InnoDB Cluster

    文章目录 简介 部署InnoDB Cluster 要求与限制 沙箱部署(单机多实例部署) 规划 安装MySQL 安装MySQL Shell 创建mysql实例 创建沙箱InnoDB Cluster集群 ...

  3. MySQL高可用架构InnoDB Cluster (和NDB Cluster是两码事)

    MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM, MHA, NDB Cluster, Galera Cluster, InnoDB Cluste ...

  4. Mysql8 NDB集群二进制方式免安装配置图解

    Mysql8 NDB集群二进制解压安装配置图解 声明与简介 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理.本文主要介绍mysql的NDB集群 ...

  5. win10安装misql8_Win10下免安装版MySQL8.0.16的安装和配置教程图解

    1.MySQL8.0.16解压 其中dada文件夹和my.ini配置文件是解压后手动加入的,如下图所示 2.新建配置文件my.ini放在D:\Free\mysql-8.0.16-winx64目录下 [ ...

  6. MySQL InnoDB Cluster部署

    文章目录 安装 下载Yum存储库 安装发布包 导入密钥 安装MySQL 启动MySQL 查看临时口令 登录并修改口令 安装MySQL Shell InnoDB Cluster 账户配置 服务器配置账户 ...

  7. mysql高可靠部署_可能是我见过最好的 MySQL 高可用解决方案 MySQL InnoDB Cluster 中文教程!...

    公众号关注 「运维之美」设为「星标」,每天带你玩转 Linux ! 这篇文章将详细地介绍 MySQL 的高可用解决方案-- MySQL InnoDB Cluster. 说到高可用性,首先要了解一下什么 ...

  8. 技术分享 | InnoDB Cluster+GreatSQL快速部署MGR集群,并实现读写分离和故障自动转移(超详细)...

    本文来源:原创投稿 * GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 0. 内容提纲 1. 部署环境及初始化 2. 利用MySQL Shell构建MGR集群 3. 对在 ...

  9. 初探mysql innodb集群_MySQL InnoDB Cluster搭建

    MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM, MHA, NDB Cluster, Galera Cluster, InnoDB Cluste ...

最新文章

  1. 小程序自定义分享事件及回调函数
  2. 餐巾计划问题 线性规划与网络流24题之10 费用流
  3. 【转】解决父容器高度不跟随子元素扩大的问题
  4. 第四-generation音频:互联网智能声音会火
  5. 判断非负整数是否是3的倍数_五年级数学因数与倍数知识点汇总与解题方法技巧...
  6. 特斯拉已撤回德国电池工厂建厂补贴申请 原有望获得近13亿美元
  7. 测试iis后台webservice服务_C#的WebService完全教程(之五)
  8. JavaScript中的对象学习笔记(属性操作)
  9. 句句真研—每日长难句打卡Day3
  10. 性能测试--jmeter结合charles,以及charles的基本使用【11】
  11. ad9修改焊盘阻焊层大小
  12. bios sgx需要开启吗_Win10改Win7,UEFI改Legacy 启动,修改BIOS大全
  13. 数据加密 第四篇:对称密钥
  14. python代码写龙卷风_python - 龙卷风服务器二进制可执行文件
  15. CATIA二次开发—探讨CATIA单位问题
  16. 刘寅立matlab数值计算案例分析 pdf,《MATLAB数值计算案例分析》源代码
  17. SMILES学习笔记
  18. 前端调用微信小程序的支付流程
  19. 仓库标准作业流程与WMS系统规划
  20. Redefinition of typedef is a C11 feature

热门文章

  1. VTK:vtkCamera用法实战
  2. boost::hana::decltype_用法的测试程序
  3. boost::histogram::make_weighted_profile用法的测试程序
  4. boost::graph模块实现斐波那契堆的测试程序
  5. boost : has_to_string的用法测试程序
  6. boost::date_time模块wrapping_int的测试程序
  7. GDCM:gdcm::SequenceOfFragments的测试程序
  8. GDCM:png文件转为dcm文件的测试程序
  9. Boost:BOOST_VERIFY的用法测试程序
  10. VTK:相互作用之MouseEvents