mysql 插件介绍_MySQL Shell插件 - 简介

原标题:MySQL Shell插件 - 简介

作者:Rene Ramirez译:徐轶韬

本文转载自“MySQL解决方案工程师”公众号

MySQL Shell 8.0.17引入了一种通过插件来扩展基本功能的新方法,插件使用Java或Python脚本,允许用户:

通过 show和 watch shell命令注册一个可用于监视任务的报告。

使用自定义功能创建和注册新的全局对象。

插件的构成

插件是一个包含插件注册文件的文件夹,它将在shell启动时执行。

插件注册文件是一个名为init.js的Java文件和名为init.py的Python文件(在本篇博客文章的其余部分将其称为init文件)。

shell启动时会自动加载插件,因此,插件文件夹必须位于用户配置的plugins路径文件夹中:

Windows:%appdata%/ MySQL / mysqlsh / plugins

其他:〜/ .mysqlsh / plugins

当shell启动时,它将遍历plugins目录的内容,标识包含init文件的所有文件夹。init文件是将要加载的插件。通过在相应的语言上下文中执行init文件来加载它们。

使用插件扩展shell

shell全局对象包含以下函数,可以通过注册用户定义的报告或扩展对象来实现shell功能扩展:

shell.registerReport(name,type,report [,deion]) : 注册用户定义的报告。

shell.createExtensionObject : 创建一个扩展对象(之后可以注册为全局对象)。

shell.addExtensionObjectMember(object,name,member [,definition]) : 将新成员添加到扩展对象中。

shell.registerGlobal(name,object [,definition]) : 将扩展对象注册为shell全局对象。

在执行init文件时,一部分shell全局对象是开箱即用的,也就是说,它们可以立即在init文件上使用。

这些对象包括:

shell 对象。

dba 对象。

mysql 模块。

mysqlx 模块。

使用上面列出的shell对象的函数,init文件可以扩展shell功能。

使用shell插件添加报告

8.0.16开始提供报告功能。在本节中,我们将创建一个简单的报告来监控InnoDB集群的状态。

.mysqlsh/plugins/monitor/ init.js文件包含以下内容:

一个后端函数,它将返回与指定会话关联的集群对象:

526ba9946d21c9a6e4b108d70e8ad507.png

Java中自带的后端报告函数,在集群成员建立全局会话时,创建集群状态报告:

6c1d025111972566a61d24d9acd50f57.png

将上述函数注册成为报告,使其可以与

show和watchshell命令一起使用:

启动Shell后,将加载插件并使用show和

watch命令执行新的status报告:

使用shell插件添加新的全局对象

通过shell扩展对象,可以轻松扩展shell的基本功能。通常,扩展shell的过程包括:

创建扩展对象。

向扩展对象添加函数。

注册扩展对象。

在使用InnoDB集群时,集群对象已经提供了很多特性,这些特性的例子包括describe和satus函数。假设我们想添加一个特定的用例,并且需要一个函数来检索InnoDB集群成员的列表。

让我们定义一个名为idc的新对象,它将与全局会话关联的InnoDB集群一起工作,并具有一个函数getMembers,该函数将返回集群成员列表,而不提供任何附加信息 。

让我们添加代码来更新现有的插件。

这是后端函数,它将提供我们想要的功能。

b756d4da98f1a12cdb1f14d19fa29c00.png

现在我们创建扩展对象,将函数添加到其中,并将其注册为全局对象:

a7154c8d521e51d9824540aa5a264162.png

当shell启动时,加载插件,与此同时新的idc全局对象将变成可用:

集成帮助功能

shell扩展的主要方面是允许用户将额外的功能集成到shell中,与此同时,提供关于它的文档也非常重要的。新功能的三个函数提供以下选项以定义帮助信息:

brief:简短描述正在注册的报告/对象/函数。

details:它是一个字符串列表,包含关于正在注册的报告/函数/对象的详细信息。这个列表里的每个字符串,在显示的帮助信息时都是一个单独的段落。

请持续关注!

有关此主题的其他博客文章将会持续发表,包括:

MySQL Shell 插件-数据验证:当将函数注册到扩展对象中时,它将指导您通过不同的数据验证选项。

MySQL Shell 插件-插件组:它解释了如何组织你的插件,使他们包含在一个单一的全局对象里面。

一种Python方法:它解释了如何将Python模块与MySQL Shell插件组合起来创建复杂的插件。

资源

有关MySQL Shell插件的详细信息,请参阅MySQL Shell用户指南。

不要忘记下载并尝试一下,欢迎您的反馈!

您可以通过https://mysqlcommunity.slack.com/的#shell频道与我们联系返回搜狐,查看更多

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值