Mysql8 InnoDB Cluster Shell Router HA配置图解
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配置图解相关推荐
- InnoDB Cluster详解
目录 一.InnoDB Cluster简介 1. 整体架构 2. MySQL Shell 3. MySQL Router 4. MySQL服务器集群 二.创建InnoDB Cluster 1. 检查实 ...
- InnoDB Cluster
文章目录 简介 部署InnoDB Cluster 要求与限制 沙箱部署(单机多实例部署) 规划 安装MySQL 安装MySQL Shell 创建mysql实例 创建沙箱InnoDB Cluster集群 ...
- MySQL高可用架构InnoDB Cluster (和NDB Cluster是两码事)
MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM, MHA, NDB Cluster, Galera Cluster, InnoDB Cluste ...
- Mysql8 NDB集群二进制方式免安装配置图解
Mysql8 NDB集群二进制解压安装配置图解 声明与简介 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理.本文主要介绍mysql的NDB集群 ...
- win10安装misql8_Win10下免安装版MySQL8.0.16的安装和配置教程图解
1.MySQL8.0.16解压 其中dada文件夹和my.ini配置文件是解压后手动加入的,如下图所示 2.新建配置文件my.ini放在D:\Free\mysql-8.0.16-winx64目录下 [ ...
- MySQL InnoDB Cluster部署
文章目录 安装 下载Yum存储库 安装发布包 导入密钥 安装MySQL 启动MySQL 查看临时口令 登录并修改口令 安装MySQL Shell InnoDB Cluster 账户配置 服务器配置账户 ...
- mysql高可靠部署_可能是我见过最好的 MySQL 高可用解决方案 MySQL InnoDB Cluster 中文教程!...
公众号关注 「运维之美」设为「星标」,每天带你玩转 Linux ! 这篇文章将详细地介绍 MySQL 的高可用解决方案-- MySQL InnoDB Cluster. 说到高可用性,首先要了解一下什么 ...
- 技术分享 | InnoDB Cluster+GreatSQL快速部署MGR集群,并实现读写分离和故障自动转移(超详细)...
本文来源:原创投稿 * GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 0. 内容提纲 1. 部署环境及初始化 2. 利用MySQL Shell构建MGR集群 3. 对在 ...
- 初探mysql innodb集群_MySQL InnoDB Cluster搭建
MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM, MHA, NDB Cluster, Galera Cluster, InnoDB Cluste ...
最新文章
- 小程序自定义分享事件及回调函数
- 餐巾计划问题 线性规划与网络流24题之10 费用流
- 【转】解决父容器高度不跟随子元素扩大的问题
- 第四-generation音频:互联网智能声音会火
- 判断非负整数是否是3的倍数_五年级数学因数与倍数知识点汇总与解题方法技巧...
- 特斯拉已撤回德国电池工厂建厂补贴申请 原有望获得近13亿美元
- 测试iis后台webservice服务_C#的WebService完全教程(之五)
- JavaScript中的对象学习笔记(属性操作)
- 句句真研—每日长难句打卡Day3
- 性能测试--jmeter结合charles,以及charles的基本使用【11】
- ad9修改焊盘阻焊层大小
- bios sgx需要开启吗_Win10改Win7,UEFI改Legacy 启动,修改BIOS大全
- 数据加密 第四篇:对称密钥
- python代码写龙卷风_python - 龙卷风服务器二进制可执行文件
- CATIA二次开发—探讨CATIA单位问题
- 刘寅立matlab数值计算案例分析 pdf,《MATLAB数值计算案例分析》源代码
- SMILES学习笔记
- 前端调用微信小程序的支付流程
- 仓库标准作业流程与WMS系统规划
- Redefinition of typedef is a C11 feature
热门文章
- VTK:vtkCamera用法实战
- boost::hana::decltype_用法的测试程序
- boost::histogram::make_weighted_profile用法的测试程序
- boost::graph模块实现斐波那契堆的测试程序
- boost : has_to_string的用法测试程序
- boost::date_time模块wrapping_int的测试程序
- GDCM:gdcm::SequenceOfFragments的测试程序
- GDCM:png文件转为dcm文件的测试程序
- Boost:BOOST_VERIFY的用法测试程序
- VTK:相互作用之MouseEvents