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主从搭建(多主一从)的实现思路与步骤
May 13 MySQL
带你学习MySQL执行计划
May 31 MySQL
mysql 如何获取两个集合的交集/差集/并集
Jun 08 MySQL
浅析MySQL如何实现事务隔离
Jun 26 MySQL
MySQL基于索引的压力测试的实现
Nov 07 MySQL
JMeter对MySQL数据库进行压力测试的实现步骤
Jan 22 MySQL
MySQL之MyISAM存储引擎的非聚簇索引详解
Mar 03 MySQL
mysql中数据库覆盖导入的几种方式总结
Mar 25 MySQL
Mysql超详细讲解死锁问题的理解
Apr 01 MySQL
mysql 子查询的使用
Apr 28 MySQL
详解Mysql事务并发(脏读、不可重复读、幻读)
Apr 29 MySQL
MySql数据库 查询时间序列间隔
May 11 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
使用NetBeans + Xdebug调试PHP程序的方法
2011/04/12 PHP
对淘宝URL中ID提取的PHP代码
2013/09/01 PHP
php中curl和soap方式请求服务超时问题的解决
2018/06/11 PHP
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
JavaScript实用技巧(一)
2010/08/16 Javascript
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
2012/01/13 Javascript
JavaScript中prototype为对象添加属性的误区介绍
2013/10/15 Javascript
jquery实现的淡入淡出下拉菜单效果
2015/08/25 Javascript
15位和18位身份证JS校验的简单实例
2016/07/18 Javascript
jQuery简单倒计时效果完整示例
2016/09/20 Javascript
简单谈谈gulp-changed插件
2017/02/21 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
原生JS+Canvas实现五子棋游戏实例
2017/06/19 Javascript
Vue监听数据渲染DOM完以后执行某个函数详解
2018/09/11 Javascript
通过vue手动封装on、emit、off的代码详解
2019/05/29 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
Vue使用vue-recoure + http-proxy-middleware + vuex配合promise实现基本的跨域请求封装
2019/10/21 Javascript
Vue项目结合Vue-layer实现弹框式编辑功能(实例代码)
2020/03/11 Javascript
js函数和this用法实例分析
2020/03/13 Javascript
微信小程序实现点击导航条切换页面
2020/11/19 Javascript
[04:14]从西雅图到上海——玩家自制DOTA2主题歌曲应援TI9
2019/07/11 DOTA
[01:04:32]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第二场 2月23日
2021/03/11 DOTA
Python通过调用mysql存储过程实现更新数据功能示例
2018/04/03 Python
树莓派采用socket方式文件传输(python)
2019/06/22 Python
Python笔试面试题小结
2019/09/07 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
2019/11/15 Python
关于Python中定制类的比较运算实例
2019/12/19 Python
面向新手解析python Beautiful Soup基本用法
2020/07/11 Python
英国皇室御用百货:福南梅森(Fortnum & Mason)
2017/12/03 全球购物
英国游戏机和游戏购物网站:365games.co.uk
2018/06/18 全球购物
如何进行Linux分区优化
2013/02/12 面试题
中国好声音华少广告词
2014/03/17 职场文书
乡镇安全生产目标责任书
2014/07/23 职场文书
党员演讲稿
2014/09/04 职场文书
java设计模式--原型模式详解
2021/07/21 Java/Android
Win11怎样将锁屏账户头像图片改成动画视频
2021/11/21 数码科技