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

 更新时间:2021年04月23日 11:34:22   作者:DBA随笔  
这篇文章主要介绍了MySQL InnoDB ReplicaSet(副本集)的相关资料,帮助大家更好的理解和学习使用MySQL,感兴趣的朋友可以了解下

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锁(表锁,行锁,共享锁,排它锁,间隙锁)使用详解

    本文全面讲解了MySQL中锁包括表锁,行锁,共享锁,排它锁,间隙锁的详细使用方法
    2018-10-10
  • MySQL插入数据时插入无效列的解决方法

    MySQL插入数据时插入无效列的解决方法

    MySQL插入数据时插入无效的列,解决方法是在插入时,给字符串类型的字段值加上双引号
    2014-07-07
  • 深入理解MySQL8.0默认TCP端口

    深入理解MySQL8.0默认TCP端口

    本文主要介绍了MySQL8.0默认TCP端口,默认TCP端口主要取决于其使用的协议和配置,下面就来具体介绍一下,感兴趣的可以了解一下
    2024-08-08
  • MySQL prepare语句的SQL语法

    MySQL prepare语句的SQL语法

    PREPARE语句用于预备一个语句,并指定名称statement_name,以后引用该语句
    2012-01-01
  • MySQL中的间隙锁代码示例讲解

    MySQL中的间隙锁代码示例讲解

    锁是mysql提供的一种保证不同事务读写隔离的重要措施,通过锁机制可以有效提升决多线程下并发处理事务能力,不同的锁划分对应着不同的使用场景,本文来深入探讨一下mysql的另一种容易被忽视的锁,即间隙锁,以及与之相关的相关问题,需要的朋友可以参考下
    2023-08-08
  • 获取MySQL数据表列信息的三种方法实现

    获取MySQL数据表列信息的三种方法实现

    本文介绍了获取MySQL数据表列信息的三种方法实现,包含SHOWCOLUMNS命令、DESCRIBE命令以及查询INFORMATION_SCHEMA.COLUMNS表,具有一定的参考价值,感兴趣的可以了解一下
    2024-12-12
  • mysql计算时间差函数

    mysql计算时间差函数

    MySql计算两个日期的时间差函数TIMESTAMPDIFF用法,只要用一句SQL语句就可以办到了。
    2013-11-11
  • MySQL联合索引与最左匹配原则的实现

    MySQL联合索引与最左匹配原则的实现

    最左匹配原则在我们MySQL开发过程中和面试过程中经常遇到,为了加深印象和理解,我在这里把MySQL的最左匹配原则详细的讲解一下,感兴趣的可以了解一下
    2023-12-12
  • MySQL查询语法汇总

    MySQL查询语法汇总

    这篇文章主要介绍了MySQL查询语法的汇总,帮助大家更好的理解和学习mysql,感兴趣的朋友可以了解下
    2020-08-08
  • SQL深入探究存储的过程

    SQL深入探究存储的过程

    存储过程是事先经经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于高效数据处理的效率是有好处的
    2023-01-01

最新评论