MySQL InnoDB ReplicaSet(副本集)简单介绍


Posted in MySQL onApril 24, 2021

01 InnoDB ReplicaSet(副本集)介绍

      在MySQL8.0引入了InnoDB ReplicaSet,它提供了我们熟悉的复制特性,如果有mongodb副本集的概念,理解InnoDB ReplicaSet会比较容易。

      InnoDB ReplicaSet使用了下面的技术:

1、MySQL Shell,一个功能更强大的客户端

2、MySQL Router,一个轻量级别的中间件,可以类比MongoDB中的mongos的角色;

3、MySQL Server,也就是MySQL服务

     InnoDB ReplicaSet,下面简称 innodb副本集。它采用了MySQL的复制技术,副本集中拥有一个primary节点,一个或者多个secondary节点,它不像innodb cluster(innodb cluster是另外一种MySQL高可用方案)一样提供故障自愈和多主模式,但是提供手工的方法添加、移除和配置相关节点。

     我们通常使用MySQL Shell中的AdminApi来管理innodb副本集,adminapi有js和python两种版本,我们可以很方便的去编写脚本来自动部署MySQL,AdminAPI为MySQL实例集提供了一个有效的现代接口,使您能够从一个中心工具提供、管理和监视部署。

      innodb副本集支持MySQL Clone组件,我们可以利用克隆插件很方便的搭建起来一个副本集。

      InnoDB ReplicaSet与MySQL Router紧密集成,可以使用AdminAPI与它们一起工作。MySQL Router可以基于InnoDB ReplicaSet自动配置自己,这个过程称为bootstrapping,这样就不需要手动配置路由。

02 InnoDB ReplicaSet的限制

     上面介绍了innodb 副本集的一些基本知识和概念,这里我们有必要说一下它的局限性,innodb副本集的局限性,主要是对比innodb cluster来体现出来的,下面我们罗列一下:

1、没有故障自动切换功能。在主库不可用的情况下,需要使用AdminApi手动触发故障转移;

2、无法防止由于意外或者不可用而导致的数据丢失,发生故障时候没有应用的事务可能有丢失现象;

3、无法防止意外退出之后的数据不一致现象;在主节点因为网络问题而短暂失联时候,如果某个从节点提升为主节点,则可能发生脑裂现象;

4、innodb 副本集不支持多主模式,经典的多主写入复制方案无法保证数据一致性;

5、innodb副本集基于异步复制,不能像MGR那样进行流控,因此读的扩展性会一定程度上受限;

6、所有secondary都要从primary复制,因此可能会对源实例产生一定的影响

从上面的描述中不难看出,innodb副本集跟MongoDB的副本集还有很大的差距,但是我们依然有研究的必要,因为它是MySQL官方在高可用之路上迈出的重要一步,后续随着版本的迭代,我相信这些问题会得到关注和解决,有更好的方案进一步满足用户的要求。

03 部署前须知

    innodb副本集的运行环境有一定的要求,如下:

1、仅支持MySQL8.0及以上版本;

2、仅支持GTID的复制方法

3、仅支持row格式的binlog,不支持statement格式的binlog

4、不支持复制过滤器

5、不允许建立额外的复制通道

6、副本集primary节点只有一个,secondary节点可以有多个,MySQL Router会对每个节点进行监控

7、副本集必须完全由MySQL Shell管理,不支持在MySQL Shell之外对实例进行配置和更改

    下一篇文章我将会从最基本的安装过程说起,详细描述MySQL Shell、MySQL Router的安装以及innodb 副本集的搭建过程。

以上就是MySQL InnoDB ReplicaSet(副本集)简单介绍的详细内容,更多关于MySQL InnoDB ReplicaSet(副本集)的资料请关注三水点靠木其它相关文章!

MySQL 相关文章推荐
MySQL分库分表与分区的入门指南
Apr 22 MySQL
详解MySQL主从复制及读写分离
May 07 MySQL
详解MySQL的Seconds_Behind_Master
May 18 MySQL
Mysql数据库命令大全
May 26 MySQL
mysql5.7使用binlog 恢复数据的方法
Jun 03 MySQL
如何搭建 MySQL 高可用高性能集群
Jun 21 MySQL
SQL实现LeetCode(176.第二高薪水)
Aug 04 MySQL
MySQL8.0的WITH查询详情
Aug 30 MySQL
mysql配置SSL证书登录的实现
Sep 04 MySQL
SQL基础查询和LINQ集成化查询
Jan 18 MySQL
mysql使用instr达到in(字符串)的效果
Apr 03 MySQL
MySQL 原理与优化之Limit 查询优化
Aug 14 MySQL
MySQL 角色(role)功能介绍
Apr 24 #MySQL
浅谈Mysql多表连接查询的执行细节
Mysql基础之常见函数
Apr 22 #MySQL
MySQL分库分表与分区的入门指南
MySQL8.0.24版本Release Note的一些改进点
Apr 22 #MySQL
详解MySQL的半同步
详解MySQL事务的隔离级别与MVCC
Apr 22 #MySQL
You might like
php计算两个整数的最大公约数常用算法小结
2015/03/05 PHP
php实现word转html的方法
2016/01/22 PHP
CodeIgniter针对数据库的连接、配置及使用方法
2016/03/03 PHP
PHP使用strrev翻转中文乱码问题的解决方法
2017/01/13 PHP
Laravel中的chunk组块结果集处理与注意问题
2018/08/15 PHP
thinkPHP框架中layer.js的封装与使用方法示例
2019/01/18 PHP
安装docker和docker-compose实例详解
2019/07/30 PHP
Javascript 汉字字节判断
2009/08/01 Javascript
Javascript级联下拉菜单以及AJAX数据验证核心代码
2013/05/10 Javascript
js实现的点击div区域外隐藏div区域
2014/06/30 Javascript
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
2016/05/20 Javascript
Angular 中 select指令用法详解
2016/09/29 Javascript
javascript 判断当前浏览器版本并判断ie版本
2017/02/17 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
2017/11/21 Javascript
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
微信小程序登录数据解密及状态维持实例详解
2019/05/06 Javascript
详解iview的checkbox多选框全选时校验问题
2019/06/10 Javascript
Vue 监听元素前后变化值实例
2020/07/29 Javascript
JavaScript 判断浏览器是否是IE
2021/02/19 Javascript
python爬虫的工作原理
2017/03/05 Python
Python:Scrapy框架中Item Pipeline组件使用详解
2017/12/27 Python
python使用turtle库绘制树
2018/06/25 Python
分析运行中的 Python 进程详细解析
2019/06/22 Python
python 使用plt画图,去除图片四周的白边方法
2019/07/09 Python
Python matplotlib绘制饼状图功能示例
2019/09/10 Python
如何用python开发Zeroc Ice应用
2021/01/29 Python
HTML5进阶段内联标签汇总(小篇)
2016/07/13 HTML / CSS
大学毕业生求职自荐信
2014/02/20 职场文书
购房意向书
2014/04/01 职场文书
文秘应届生求职信
2014/07/05 职场文书
2015年入党积极分子评语
2015/03/26 职场文书
2016年大学生暑假爱心支教活动策划书
2015/11/26 职场文书
css filter和getUserMedia的联合使用
2022/02/24 HTML / CSS
Python+Tkinter制作专属图形化界面
2022/04/01 Python