前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL Shell 8.0.22的新增功能

MySQL Shell 8.0.22的新增功能

作者头像
MySQLSE
发布2020-10-29 14:48:56
2.4K0
发布2020-10-29 14:48:56
举报

作者: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添加了新的includeUsersexcludeUsers选项,从而可以对复制的用户帐户进行精细控制。

从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)中的用户无法使用,将产生以下错误:

代码语言:javascript
复制
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装饰器,如下所示:

代码语言:javascript
复制
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装饰器,如下所示:

代码语言:javascript
复制
@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模块。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MySQL解决方案工程师 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 转储和加载实用程序
    • importTable:自定义数据转换
      • exportTable
        • dumpTables
          • 改进了转储和加载过程中的分块
            • 事务集(GTID_EXECUTED)处理
              • 用户过滤
                • 从MySQL 5.6转储
                  • 一致的转储,不使用FLUSH TABLES WITH READ LOCK
                    • 使用预认证的OCI对象存储请求支持复杂的转储工作流
                    • MySQL InnoDB Cluster
                    • 其他变化
                      • 改进的Python插件支持
                        • 与此同时
                        相关产品与服务
                        云数据库 SQL Server
                        腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档