本文提供常被问到问题的答案。

1.复制组中最多能有多少个mysql服务器?

复制组最多包含9个mysql服务器。尝试向已有9个服务器的组添加另外的服务器将被拒绝。

2.组内服务器间如何连接?

组内服务器间通过打开端到端TCP连接进行。这些连接仅用于内部通信和组内服务器间的信息传递。该地址通过group_replication_local_address变量进行配置。

3.group_replication_bootstrap_group选项的作用?

Bootstrap标识指示成员创建一个组并作为最初的种子服务器。加入该组的第二个成员需要询问最初启动该组的成员动态改变配置以便将其加入该组。一个成员在两种场景启动复制组。那就是,组最初创建时,或关闭并重启整个组时。

4.如何设置恢复过程的凭证?

通过change master to语句,您能预配置组复制恢复通道凭证。

5.如何通过组复制水平扩展写负载?

不是直接地,但mysql组复制是shared nothing的全复制解决方案,其中,组内所有服务器复制同等数量的数据。因此,如果组内一个成员作为一个事务提交结果向存储写入N个字节,那么,也向其他成员的存储写入大约N个字节,因为该事务被复制到所有地点。

但是,其他成员不必做原始成员最初执行事务时必须做的同等数量的处理,它们会更快的应用这些变更。事务按照仅用于应用行转变的格式复制,而不是必须再重新执行事务(基于行的格式)。

但是,变更被传播并按照基于行的格式应用,这意味着其以优化和压缩格式接收,且与其原始成员比较,可能减少了IO操作的数量。

总之,通过将不会发生冲突的事务分散到组内的不同服务器上,您能水平扩展处理。由于远程服务器仅接收稳定存储的读-改-写变更的必要变更,您可能水平扩展一小部分IO操作。

6.与相同负载下的简单复制相比,组复制需要更多的网络带宽和CPU吗?
因为为了同步目的,服务器间需要连续的交互,所以,也许会发生某些另外的负载。但难以量化具体多出多少数据。具体也看组的规模大小(组内3个服务器比9个服务器要求更少的带宽需求)。

内存和CPU占用也会大很多,因为服务器同步和组信息也会做更复杂的工作。

7.是否能在广域网上部署组复制?

可以,但成员间的网络连接必须可靠且有合适的性能。低延迟、高带网络连接是最优性能的前提。

如果网络带宽是个单独问题,那么,“信息压缩”可以用来降低带宽需求。但是,如果网络丢包,导致重传和较高端到端延迟,吞吐和延迟都会遭受负面影响。

--注:

1)当任何组成员间的网络往返时间(RTT)为2秒或更多时,您可能会遭遇内建失败探测机制不能正确触发的问题。

8.成员发生临时连接问题时是否会自动重新加入复制组?

这要看连接问题的原因。如果连接问题是暂时的且重连足够快以至于失败探测器没意识到,那么,服务器也许不会从该组移除。如果发生了“长久”的连接问题,那么,失败探测器最终会怀疑该问题,且服务器会从该组中移除。

一旦服务器从组内移除,您需要再将其重新加入复制组。换句话说,服务器显式从复制组移除后,您需要先后共将其重新加入复制组(或通过脚本自动完成)。

9.什么时候会将一个成员从复制组排除?

如果该成员边的没反应,其他成员将从组配置中将其移除。实践中,成员崩溃或网络断开时会发生这种场景。

指定成员超过指定时间后会探测到失败,且将会创建一个不包含没反应成员的新配置。

10.一个节点发生严重延迟时会发生什么?

没办法定义什么时候从复制组自动驱逐成员的策略。您需要找出成员延迟的原因并对其进行修复,或将该成员从内移除。

但是,如果服务器因为太慢而触发了流控,那么,整个复制组都会慢下来。可以根据需要对流控进行配置。

11.针对组内存疑问题,有一个特定成员负责触发重新配置吗?

没有,组内没有特定成员负责触发重新配置。

任何成员都能怀疑发生过了问题。所有成员需要(自动地)就指定成员失败达成一致。通过触发重新配置,某个成员负责将其驱逐出复制组。

您不能控制或设置哪个成员负责驱逐成员。

12.我可以用组复制进行分片(sharding)吗?

组复制设计用来支持高可用副本集;数据和写复制到组内的每个成员。扩展超出了单个系统的支撑范围,您需要围绕多个组复制集构建一个分片框架,其中,每个副本集维护和管理总数据集的指定分片或分区。这种设置,通常称为一个“分片集群(sharded cluster)”,其允许您线性的扩展读写且没有限制。

13.如何与SELinux使用组复制?

如果开启了SELinux,您可以通过setstatus –v对其进行验证,那么,您需要为mysql开启组复制通信端口,通过group_replication_local_address对其进行配置,以便其能绑定和在那里监听。为了查看mysql目前允许使用那些端口,可以发布semanage port –l |grep mysqld。假设配置的端口为6606,通过semanage –a –t mysqld_port_t –p tcp 6606来向SELinux添加必要允许的端口。

14.如何与iptables使用组复制?

如果iptables开启,那么,您需要在机器间打开组复制端口。为了查看每台机器的现有规则,发布iptables –L。假设配置端口为6606,发布iptables –A INPUT –p tcp –dport 6606 –j ACCEPT来开启必要端口间的通信。

15.如何恢复组成员使用的复制通道的中继日志(relay log)?

组复制使用的复制通道与主备复制使用的复制通道行为方式一样,像都基于中继日志(relay log)。改变relay_log变量时,或不设置该选项且改变主机名时,可能会发生错误。另外,修复复制组中该特定问题的一个方法是发布STOP GROUP_REPLICATION语句并接着发布START GROUP_REPLICATION语句以重启实例。组复制插件再次创建group_replication_applier通道。

16.复制组为什么使用绑定地址?

复制组使用两个地址,以便将客户端与组成员通信用的SQL地址和组成员内部通信用的group_replication_local_address间的网络交通分开。例如:假设一个服务器有两个网卡,分别分配地址为203.0.113.1和198.51.100.179。这种情况下,您能通过设置group_replication_local_address=203.0.113.1:33061将203.0.113.1:33061作为组内部网络地址。那么,您能用198.51.100.179作为主机地址和3306作为端口。客户端SQL应用接着将连到位于198.51.100.179:3306的成员。这使得您能在不同网络配置不同规则。类似地,组内部通信能与客户端连接使用的网络连接分开,从而增加安全性。

17.组复制如何使用网络地址和主机名?

组复制使用成员间的网络连接,所以,如何配置主机名和端口会直接影响其功能。例如:组复制恢复过程基于使用服务器主机名和端口的异步复制。当一个成员加入组时,其使用列在performance_schema.replication_group_members中的网络地址信息接收组成员信息。列在该表中的一个成员选择作为组合新成员间丢失数据的捐赠者。

这意味着您使用像SQL网络地址或组种子地址的主机名配置的任何值,必须是一个完全限定名字,且可以被每个组成员解析。您可以通过像DNS,或正确配置的/etc/hosts文件,或其他本地进程来确保这点。

如果您想在服务器上配置MEMBER_HOST值,服务器加入组前用—report-host选项对其进行指定。

--注:

1)分配值直接使用而不受—skip-nameresolve选项的影响。

为了配置服务器的MEMBER_PORT,用—report-port选项指定。

18.如何发现主库?

如果组在单主模式操作,发现那个成员是主库是有用的。下列命令用于发现复制组的主库:

mysql> SHOW STATUS LIKE 'group_replication_primary_member'

Mysql组复制(MGR)——常问的问题相关推荐

  1. Mysql组复制(MGR)——技术细节

    本文提供mysql组复制相关的更多技术细节. 一. 组复制插件架构 Mysql组复制是一个mysql插件,且其构建于已有mysql复制架构之上,其利用了类似二进制日志,基于行的日志及全局事务标识符等的 ...

  2. Mysql组复制(MGR)——前提及限制

    本文将对组复制的前提条件和限制进行列举和解释. 一.组复制前提 想用组复制的服务器实例必须满足如下前提条件: 1.基础架构 1)InnoDB存储引擎.数据必须存储于InnoDB事务存储引擎.事务被乐观 ...

  3. mysql组复制(MGR)——部署

    mysql组复制作为插件提供给mysql服务器,组内的每个服务器都要求配置和安装该插件.本文提供创建一个至少3个服务器的复制组所需的详细步骤. 一.部署单主模式的组复制 组内的每个服务器实例能运行在独 ...

  4. mysql组复制(MGR)——背景

    本文提供mysql组复制相关的背景信息. 创建容错系统的最常用方式是采用组件冗余方式,换句话说,就是组件能被移除且系统应该继续如期操作.这产生了一系列将系统复杂度上升到不同等级的挑战.特别是,复制数据 ...

  5. MySQL内部开发人员如何看待MySQL组复制?

    MySQL因为高性能.可扩展性和可用性被广泛应用于Web应用程序,成为支持高流量社交媒体.电商应用程序以及快速成长企业的IT平台基础.在MySQL 5.7.17版本中,MySQL Group Repl ...

  6. MySQL组复制学习笔记(基于MySQL 8+) -- 使用篇

    3.1. 启动/停止 可以通过start/stop group_replication来启动停止组复制进程. mysql> start group_replication; /* 启动MySQL ...

  7. 使用MySQL组复制的限制和局限性

    本节列出和解释了组复制相关的要求和限制. 1.组复制的要求 要使用组复制,每个MySQL节点必须满足以下条件: 1.1 基本要求 InnoDB存储引擎:数据必须存储在事务型的InnoDB存储引擎中.事 ...

  8. Mysql组复制故障恢复测试

    在前面的两篇文章中,介绍了mysql组复制的特点及配置过程,本文演示mysql单组复制下的模拟故障测试. 一.组复制所有成员服务器宕机重启后的恢复 连接所有的mysql实例查询当前的组复制成员情况,状 ...

  9. mysql 组复制 不一致_使用MySQL组复制的限制和局限性

    本节列出和解释了组复制相关的要求和限制. 1.组复制的要求 要使用组复制,每个MySQL节点必须满足以下条件: 1.1 基本要求 InnoDB存储引擎:数据必须存储在事务型的InnoDB存储引擎中.事 ...

最新文章

  1. Blender三维插图设计视频教程 3D Characters and Illustrations in Blender 2.9
  2. 计算机组成原理小论文参考文献,急!···跪求.《计算机组成原理》--论文--一篇...
  3. datagrid中巧用loadFilter对数据整形
  4. sql 服务器实例怎样显示,如何查看sql数据库的服务器名
  5. C++中的vector使用范例-
  6. 数据分析---《Python for Data Analysis》学习笔记【04】
  7. docker compose部署服务
  8. 2013年海康威视校园招聘笔试题
  9. c语言输入一段字符,C语言实现输入一个字符串后打印出该字符串中字符的所有排列...
  10. 最大似然估计_状态估计的基本概念(2)最大似然估计和最大后验估计
  11. mysql 5.6.38 数据库编译安装
  12. Win32的虚拟内存分配函数
  13. FCKEditor在.net的使用 cnblogs
  14. 网络广告中的CPS,CPA,CPL,CPC,CPM,CPR的含义是什么?
  15. combox取值以及赋值的方法
  16. MDUI的黑暗模式实现和居中问题
  17. 有双面打印功能的打印机,安装驱动后,无法选择自动双面打印的解决方法
  18. 【数据挖掘】使用R语言进行聚类分析
  19. android手游自动按键,天涯明月刀手游自动弹奏按键精灵使用详细教学 安卓ios使用教程...
  20. 51Nod 2075 图书管理员 c/c++题解

热门文章

  1. Labview Socket通讯_通讯板卡
  2. springboot中怎么进行统一日志处理?
  3. IDEA+Java+Servlet+JSP+Mysql实现学生选课签到系统
  4. Flutter Missing parentheses in call to ‘print‘. Did you mean print(‘Insert‘, text,‘to line‘, line_nu
  5. vulnhub-Brainpan (考点:windows exe和linux elf下的两种缓冲区溢出)
  6. Windows Mobile 开发常见问题集(转自zsu_darkwind的专栏)
  7. 团体程序设计天梯赛 -- 练习集 (L1合集)
  8. DoraCloud for Proxmox桌面云上启用NVIDIA Tesla P4的vGPU功能
  9. kafka-topics.sh脚本详解
  10. thinkpad重装系统不引导_联想电脑重装win7系统后引导不了的原因是什么?