今天就跟大家聊聊有关MYSQL如何利用MYSQL Shell安装 INNODB Cluster,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。MYSQL 8 发布有一段时间了,关于MGR 哦不现在叫MGR,雅致的名字 innodb cluster 的官方解决方案也是有一段时间了。虽然解决方案不止这个,但官方的方案还是要熟悉了解的。(注意:一定要用官方的社区版,如果使用percona最新的8.019版本依然在使用 mysqlsh 会报用户权限的错误,但这个错误是在官方版本8.014发生的问题,所以使用官方的解决方案,需要配合官方的社区版,另外使用 MYSQL 8.019的percona版本用传统方式安装也会有问题,唉)基本上用了半天的时间,研究了mysql shell 的方式安装,也看了很多其他的文章,但实际上基本按照上面去做,成功的概率……下面是踩坑实录
以下安装环境均已官方社区最新版 8.019为基准【实验环境192.168.198.100192.168.198.101192.168.198.102
】
当然官方的架构图如下
作为计划的一部分 mysql shell 除了上次讲的主要的功能,还有一个上次没有说的,就是对集群的管理和安装。在使用mysql shell 之前还要给你的帐号(这里我们用 admin),赋予相关的权限,否则是无法进行工作的,如果不赋予相关的权限,mysql shell也会在你使用的时候,报错。(这里仅仅是指安装集群时)
下面是相关的权限。CREATE USER admin@’%’ identified by ‘admin’;GRANT BACKUP_ADMIN, CLONE_ADMIN, CREATE USER, EXECUTE, FILE, PERSIST_RO_VARIABLES_ADMIN, PROCESS, RELOAD, REPLICATION CLIENT, REPLICATION SLAVE, SELECT, SHUTDOWN, SUPER, SYSTEM_VARIABLES_ADMIN ON *.* TO ‘admin’@’%’ WITH GRANT OPTION;
GRANT DELETE, INSERT, UPDATE ON mysql.* TO ‘admin’@’%’ WITH GRANT OPTION;
GRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, LOCK TABLES, REFERENCES, SHOW VIEW, TRIGGER, UPDATE ON mysql_innodb_cluster_metadata.* TO ‘admin’@’%’ WITH GRANT OPTION;
GRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, LOCK TABLES, REFERENCES, SHOW VIEW, TRIGGER, UPDATE ON mysql_innodb_cluster_metadata_bkp.* TO ‘admin’@’%’ WITH GRANT OPTION;
GRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, LOCK TABLES, REFERENCES, SHOW VIEW, TRIGGER, UPDATE ON mysql_innodb_cluster_metadata_previous.* TO ‘admin’@’%’ WITH GRANT OPTION;以上的帐号也是我们在操作mysql innodb cluster 的帐号
直接下载mysqlshell 的rpm 安装包,直接键入 mysqlsh ,每台MYSQL 都要安装,以后如果采用这一方案 mysql shell 将是你必要的工具
就进入到了mysql shell ,其中mysql shell中有很多关于DBA 的命令集合,可以看出,这些命令基本都是围绕我们的 innodb cluster
checkInstanceConfiguration()createReplicaSet()getReplicaSet()stopSandboxInstance()
configureInstance()deleteSandboxInstance()help()upgradeMetadata()
configureLocalInstance()depl 香港云主机oySandboxInstance()killSandboxInstance()
configureReplicaSetInstance()dropMetadataSchema()rebootClusterFromCompleteOutage()
createCluster()getCluster()startSandboxInstance()
1 我们先对我们的单机的 mysql 进行检查,看看我们的配置哪里还有问题(针对innodb cluster)
dba.checkInstanceConfiguration(‘admin@192.168.198.100:3306’)我们可以很明显的看出来,我当前如果要使用 innodb cluster 中在配置有一个错误,我的 binlog_checksum 当前的设置是有问题的。我需要将其改为none三台机器,在均ok的情况下,可以进行下一步的配置 (当然这里很可能有不会OK ,可能的问题 ,GTID 开没有开, 你设置那个帐号是要进行innodb cluster 集群操作的帐号,权限是否有,你的 enforce_gtid_consistency 开没有看,如果这些都不知道,建议先百度一下)这里假设,你一切都是OK 的我们直接通过刚才 admin 帐号来进行操作,进入mysqlsh通过 connect 命令来连接进来你的第一个 mysql innodb cluster ,这里我连接了100dba.createCluster(‘cluster’) 通过这个命令我们开始建立我们的 innodb cluster
var cluster = dba.getCluster()
cluster.status()
目前到这里是一切OK ,坑就就在下面了,而且看了一轮文章,包括中文的,英文的,一概不谈。按照文档,下面我们直接使用cluster.addInstance(‘admin@mgr2:3306’),将第二个节点加入到集群中。报错了,原因也找到了,是我其中一台机器和其他的机器(primary 和standby 的小版本不同导致,虽然都是8.019,但percona 和 社区版是无法之间是无法使用 clone的功能的)。OK 我们将所有的节点都更换成,官方的社区版,再次添加节点,依然报错卡在哪里,卡在clone 里,这也是最浪费时间的排错的问题,因为无论在官方的文档,还是第三方的中文,英文的文档都没有谈这个问题,所以耗费了一点时间。实际上我们只要在standby节点做以下两个工作即可(按正常的逻辑说,系统是应该在操作clone之前判断的,但实际上,根本没有,导致操作的过程系统是克隆了,但对方的机器根本不接受这个clone的文件)INSTALL PLUGIN clone SONAME ‘mysql_clone.so’;
SET GLOBAL clone_valid_donor_list = ‘mgr1:3306’;关键就是差者两句,应该是所有的节点都要安装插件,然后需要在standby节点设置,允许standby节点能接受来自mgr1节点的数据,否则无法添加节点,进入到集群中。做完这两句在mgr 2 mgr 3 后,整体的工作就很顺利了。所以到此为止,我的集群通过mysql shell 的方式来安装是成功的。整体的感官就是MYSQL 的集群安装通过mysql shell的方式来安装,很方便,但你要有一些基本的知识1 JS 的简单语法2 CLONE 的基本知识否则你的安装很难顺利。当然上面的安装整体的过程,以及后续的故障转移过程,上面的方式还会有漏洞。1 需要设置整体集群的clone 的参数设置,这样在故障转移时就会游刃有余2 每个节点要添加除自己以外的所有节点的 clone_valid_donor_list 否则故障转移成功后,故障节点重新加入不会那么顺利。另外根据以上操作,以后通过mysqlshell + 程序的方式来对 INNODB CLUSTER 进行管理,将比以前管理MYSQL 的集群要方便,并且可以进行更多的高度自动化。看完上述内容,你们对MYSQL如何利用MYSQL Shell安装 INNODB Cluster有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注开发云行业资讯频道,感谢大家的支持。
相关推荐: 如何用TopN算法在10亿个整数中找出前1000个最大的数
如何用TopN算法在10亿个整数中找出前1000个最大的数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。面试题目:如何在10亿个整数中找出前1000个最大的数。我们知道排序算法有很多:冒泡算法:通…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。