mysql8 shell使用方法_MySQL Shell 8.0.22的新增功能

MySQL Shell 8.0.22引入了多项增强,如importTable支持自定义数据转换,exportTable用于多种格式的数据导出,dumpTables用于单表转储。此外,改进了转储和加载过程中的分块处理,增加了对GTID_EXECUTED的更新支持,并提供了用户过滤选项。同时,不使用FLUSH TABLES WITH READ LOCK也能实现并行一致转储,且支持使用预认证的OCI对象存储请求。
摘要由CSDN通过智能技术生成

作者:Alfredo Kojima 编译:徐轶韬

MySQL Shell 8.0.22刚刚发布,现在可以下载。

除了发行说明中描述的错误修复和较小更改外,还包括一些更重要的增强功能。

转储和加载实用程序

importTable:自定义数据转换

importTable

实用程序现在支持将导入的数据进行任意数据转换。可以在decodeColumns

选项中指定任意SQL表达式,该选项由MySQL服务器针对每个加载的行进行转换。

该功能允许在导入或迁移表时对数据进行转换,规范化和/或重新规范化,以及将简单的Extract-Transform-Load工作流程实现为MySQL Shell脚本。

exportTable

添加了一个新实用程序exportTable与importTable

配合使用

。它可以用于从单个表中以几种不同格式导出行数据,包括CSV、TSV、JSON等。与importTable一样,数据可以存储在本地文件以及OCI对象存储中。

dumpTables

添加了一个新实用程序dumpTables,用于转储单个表及其DDL。支持dumpInstance和dumpSchemas的大多数选项同样适用于dumpTables

。另外,可以将dumpTables创建的转储加载到不同名称的模式中。

改进了转储和加载过程中的分块

修复了在某些特殊情况下无法进行转储和/或加载的错误。尤其是对于产生过大块的键分布的表的处理得到了改进。

事务集(GTID_EXECUTED)处理

支持更新GTID_EXECUTED。在MySQL Shell 8.0.21中创建的转储文件在可用时已经存储了GTID_EXECUTED的值。在8.0.22版本中,添加了一个新的updateGtidSet选项。

用户过滤

向dumpInstance和loadDump添加了新的includeUsers

和excludeUsers

选项,从而可以对复制的用户帐户进行精细控制。

从MySQL 5.6转储

现在可以从MySQL 5.6转储并将这些转储加载到MySQL 5.7或8.0中。但是,从MySQL 5.6转储时,不支持对用户帐户进行转储。

一致的转储,不使用FLUSH TABLES WITH READ LOCK

Shell使用带有独立事务的多个线程执行并行转储。执行FLUSH TABLES WITH READ LOCK来同步事务,这样所有线程都可以在相同的一致视图上工作。在事务启动后立即释放锁,允许应用程序在转储期间继续正常更新数据库。

但是,该语句的执行通常受到权限不足的限制,托管云服务(例如RDS)中的用户无法使用,将产生以下错误:ERROR 1227 (42000): Access denied; you need (at least one of) the RELOAD privilege(s) for this operation

它仍然可以执行一致的转储(例如,使用单个线程或在禁用了consistent选项的情况下从只读副本进行转储)。但是在8.0.22中,对dumpInstance进行了改进,允许不使用FTWRL的并行一致转储。如果FTWRL由于缺少权限而失败,dump将自动回退到通过LOCK TABLES ... READ来同步事务。

使用预认证的OCI对象存储请求支持复杂的转储工作流

OCI对象存储支持通过Pre-Authenticated Requests(PAR)进行身份验证,是基于API签名密钥的认证的替代方案。现在,转储和加载实用程序都支持使用该方式。使用PAR时,在不损害数据安全性和私密性的情况下,支持在使用不同的API密钥和租户区域产生实例和加载转储。此外,PAR支持经过了精心设计,以方便使用。

MySQL InnoDB Cluster

与MySQL Server中一样,对复制相关功能中已弃用的术语进行了更新,同时在必要时保持向后兼容性。

您可以在MySQL术语更新博客文章中了解有关常规更改的信息。

在InnoDB的AdminAPI中完成了一些错误修复和较小的改进。您可以在发行说明中阅读完整列表。

其他变化

改进的Python插件支持

添加了新的装饰器,以便更轻松地在Python中注册扩展对象和函数。

要注册新的扩展对象,只需使用@plugin装饰器

,如下所示:from mysqlsh.plugin_manager import plugin, plugin_function

@plugin

class system_info:

"""

System Information

A collection of tools to gather system information.

"""

@plugin

装饰器将创建扩展对象,并使用doc string来注册,从而在shell上注册内建的帮助数据。

要将函数注册到预先存在的对象中,使用@plugin_function

装饰器,如下所示:@plugin_function("system_info.uptime")

def uptime(session=None, verbose=False):

"""

Get the server uptime

Args:

session (object): The session from which the uptime will be calculated

verbose (bool): The level of vervosity of the output

"""

print("--> foo")

@plugin_function装饰器将使用函数定义将myFunction成员注册到myPlugin对象中,以收集参数名称和类型,以及Shell中内置帮助的文档字符串。

与此同时添加了一个新的--pym

命令行选项,等效于标准python解释器中的-m选项,从而允许直接从命令行调用Python模块。

感谢您关注“MySQL解决方案工程师”!

b0bbb7ed6369d0ad8558af06eb6e5d67.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值