前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL8.0.19 InnoDB ReplicaSet介绍与搭建

MySQL8.0.19 InnoDB ReplicaSet介绍与搭建

原创
作者头像
卖菜小弟
修改2020-01-22 15:43:09
1.4K0
修改2020-01-22 15:43:09
举报
文章被收录于专栏:mysql8

MySQL8.0.19 InnoDB ReplicaSet介绍与搭建

简介

AdminAPI包含对InnoDB ReplicaSet的支持,使您能够以类似于管理InnoDB cluster的方式构建与管理基于异步GTID的复制的一组MySQL实例。InnoDB ReplicaSet由一个主节点和多个从节点构成。您可以使用ReplicaSet对象和AdminAPI操作管理复制集,例如检查InnoDB复制集的状态,并在发生故障时手动故障转移到新的主服务器。与InnoDB cluster类似,MySQL Router支持针对InnoDB replicset的引导,这意味着您可以自动配置MySQL Router以使用InnoDB replicset,而无需手动配置文件。这使得InnoDB ReplicaSet成为一种快速简便的方法,可以启动和运行MySQL复制和MySQL Router,非常适合扩展读取,并在不需要InnoDB集群提供高可用性的用例中提供手动故障转移功能。

InnoDB ReplicaSet限制

与InnoDB集群相比,InnoDB复制集有几个限制,因此,建议尽可能部署InnoDB Cluster。

通常,InnoDB Cluster集本身并不提供高可用性。InnoDB复制集的局限性包括:

1.没有自动故障转移。在主服务器不可用的情况下,需要使用AdminAPI手动触发故障转移,然后才能再次进行任何更改。但是,从实例仍然可供读取。

2.由于意外停止或不可用,无法防止部分数据丢失。到暂停时尚未应用的事务可能会丢失。

3.在崩溃或不可用之后,没有针对不一致性的保护。如果故障转移在前一个主节点仍然可用(例如由于网络分区)的情况下提升从节点,则可能会由于脑裂而导致不一致。

部署

以与InnoDB cluster相似的方式部署InnoDB ReplicaSet。首先配置一些MySQL服务器实例,最少配置两个实例。

InnoDB ReplicaSet 先决条件

要使用InnoDB ReplicaSet,您应该了解以下先决条件:

1.只支持运行MySQL8.0及更高版本的实例。

2.仅支持基于GTID的复制。

3.支持一多从。

4.副本集必须完全由MySQL Shell来进行管理,不支持对MySQL Shell外部实例进行配置更改。

环境准备

IP

操作系统

安装软件及版本

hostname

10.210.1.1

centos7.x

mysql-shell-8.0.19-1.el7.x86_64

mysqlmonitor

10.210.1.2

centos7.x

mysql-community-server-8.0.19-1.el7.x86_64,mysql-router-community-8.0.19-1.el7.x86_64

mysqlnode1

10.210.1.3

centos7.x

mysql-community-server-8.0.19-1.el7.x86_64,mysql-router-community-8.0.19-1.el7.x86_64

mysqlnode2

软件安装步骤略过

配置InnoDB Replica Set实例

使用dba.configureReplicaSetInstance(instance)配置要在副本集中使用的每个实例。MySQL Shell可以连接到一个实例,然后对其进行配置,也可以传入实例来配置特定的远程实例。如何继续取决于实例是否支持持久化设置。

首先在10.210.1.1输入mysqlsh连接上服务器10.210.1.2

代码语言:txt
复制
MySQL JS > \connect root@10.210.1.2:3306

创建 InnoDB Replica Set

配置完实例后,连接到实例并使用dba.createReplicaSet() 创建使用MySQL异步复制的托管ReplicaSet,而不是InnoDB cluster使用的MySQL Group Replication。MySQL Shell当前连接到的MySQL实例用作Replication的初始主实例。此操作仅支持TCP/IP连接。 createReplicaSet()操作执行若干检查,以确保实例状态和配置与托管Replication兼容,如果兼容,则在实例上初始化元数据架构。如果您想检查操作,但实际上没有对实例进行任何更改,请使用dryRun选项。这显示了MySQL Shell将采取哪些操作来创建ReplicaSet。如果ReplicaSet创建成功,则返回一个ReplicaSet对象。因此,最好将返回的ReplicaSet赋给一个变量。这使您能够使用ReplicaSet,例如通过调用ReplicaSet.status()操作。下面的例子是在实例mysqlnode1创建一个叫做example的ReplicaSet

代码语言:txt
复制
\connect root@10.210.1.2:3306
代码语言:txt
复制
var rs = dba.createReplicaSet("example")
代码语言:txt
复制
rs.status()

{

"replicaSet": {

"name": "example",

"primary": "mysqlnode1:3306",

"status": "AVAILABLE",

"statusText": "All instances available.",

"topology": {

"mysqlnode1:3306": {

"address": "mysqlnode1:3306",

"instanceRole": "PRIMARY",

"mode": "R/W",

"status": "ONLINE"

}

},

"type": "ASYNC"

}

}

添加第二节点

代码语言:txt
复制
rs.addInstance('root@10.210.1.3')
代码语言:txt
复制
rs.status()

{

"replicaSet": {

"name": "example",

"primary": "mysqlnode1:3306",

"status": "AVAILABLE",

"statusText": "All instances available.",

"topology": {

"mysqlnode1:3306": {

"address": "mysqlnode1:3306",

"instanceRole": "PRIMARY",

"mode": "R/W",

"status": "ONLINE"

},

"mysqlnode2:3306": {

"address": "mysqlnode2:3306",

"instanceRole": "SECONDARY",

"mode": "R/O",

"replication": {

"applierStatus": "APPLIED\_ALL",

"applierThreadState": "Slave has read all relay log; waiting for more updates",

"receiverStatus": "ON",

"receiverThreadState": "Waiting for master to send event",

"replicationLag": null

},

"status": "ONLINE"

}

},

"type": "ASYNC"

}

}

下一次连接需要输入接入集群

代码语言:txt
复制
var rs = dba.getReplicaSet()

通过\help命令可以查看帮助文档

通过

代码语言:txt
复制
\? ReplicaSet

可以查看帮助文档

如果要删除集群需要先通过removeInstance删除第二节点,再通过stop slave 以及reset slave all,并删除mysql_innodb_cluster_metadata数据库实现

之前的8.0.18 的clone插件已经大大简化了主从复制的构建,8.0.19在这基础上更近一步.通过mysql shell近一步简化了操作.可自建平台调用mysqlshell完成实例的构建和管理.对比innodb cluster该部署方式性能上有一定提升,后续将会写mysql8.0.19关于innodb cluster与ReplicaSet(基于gtid的主从复制)的压力测试对比报告.

官方文档地址

https://dev.mysql.com/doc/refman/8.0/en/mysql-innodb-replicasets.html

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MySQL8.0.19 InnoDB ReplicaSet介绍与搭建
    • 简介
      • InnoDB ReplicaSet限制
        • 部署
          • 环境准备
          • 配置InnoDB Replica Set实例
          • 创建 InnoDB Replica Set
      相关产品与服务
      云数据库 SQL Server
      腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档