tidb时间转字符串_如何使用TiDB节省时间

tidb时间转字符串

去年11月,我从在云中扩展两个解决方案的角度,写了MySQL与TiDB (一个兼容开源的,基于云的数据库引擎) 之间的关键区别 。 在此后续文章中,我将更深入地介绍TiDB简化和简化管理的方式。

如果您来自MySQL,那么您可能会习惯于执行很多不需要的手动任务,或者使用TiDB进行简单的操作。

TiDB的灵感来自于一些中国最大的互联网公司大规模管理分片MySQL的创始人。 由于大规模操作大型系统的要求是一个关键问题,因此我将介绍一些典型MySQL数据库管理员(DBA)任务以及它们如何转换为TiDB。

tidb时间转字符串_如何使用TiDB节省时间_第1张图片

在TiDB的体系结构中 :

  • SQL处理与数据存储分开。 SQL处理(TiDB)和存储(TiKV)组件独立地水平扩展。
  • PD(布局驱动程序)充当集群管理器并存储元数据。
  • 所有组件本身都使用Raft共识算法提供PD和TiKV的高可用性。
  • 您可以通过MySQL(TiDB)或Spark(TiSpark)协议访问数据。

添加/修复复制从属

tl; dr:它发生的方式与MySQL中不同。

数据的复制和冗余由TiKV自动管理。 你也不必担心创建初始备份副本的种子, 同时作为配置和复制是为您处理。

使用Raft共识算法,复制也是基于仲裁的,因此您不必担心与异步复制(MySQL中的默认值以及许多用户使用的错误)相关的不一致问题。

TiDB确实支持其自己的二进制日志,因此可用于集群之间的异步复制。

优化慢查询

tl; dr: TiDB仍会发生

优化开发团队引入的慢查询并没有真正的出路。

但是,作为缓解因素,如果在进行优化时需要为数据库的容量增加喘息的机会,则TiDB的体系结构允许您水平扩展。

升级和维护

tl; dr:仍需要,但通常更容易

由于TiDB服务器是无状态的,因此您可以滚动升级并部署新的TiDB服务器。 然后,您可以从负载平衡器池中删除较旧的TiDB服务器,并在连接耗尽后将其关闭。

升级PD也是非常简单的,因为一次只有PD负责人主动响应请求。 您可以执行滚动升级,一次升级PD的非领导者对等方,然后在升级最终的PD服务器之前更改领导者。

对于TiKV,升级稍微复杂一些。 如果要删除节点,建议您首先将其设置为当前每个节点上的领导者的跟随者。 之后,您可以关闭该节点而不会影响您的应用程序。 如果停机时间很短,则TiKV将从其Raft日志中与其区域同行恢复。 在更长的停机时间内,它将需要重新复制数据。 但是,如果您选择使用Ansible或Kubernetes进行部署,则可以全部由您管理。

手动分片

tl; dr:不需要

手动分片主要是应用程序开发人员的痛苦,但是作为DBA,如果分片是幼稚的或存在诸如热点(许多工作负载确实需要重新平衡)之类的问题,则您可能必须介入。

在TiDB中,重新分片或重新平衡会在后台自动发生。 PD服务器观察数据区域(键值形式的数据块的TiKV术语)何时变得太小,太大或太频繁地访问。

您还可以显式配置PD以将区域存储在某些TiKV服务器上。 当与MySQL分区结合使用时,这确实很好。

容量规划

tl; dr:容易得多

MySQL数据库的容量规划可能会有些困难,因为您需要从现在开始的两到三年内规划物理基础架构需求。 随着数据的增长(工作集发生变化),这可能是一项艰巨的任务。 我也不会说它完全消失在云中,因为更改主服务器的硬件总是很困难。

TiDB将数据拆分为大约100MiB的块,并在TiKV服务器之间分发。 因为此增量比完整服务器要小得多,所以移动和重新分配数据要容易得多。 也可以以较小的增量添加新服务器,这在规划时更容易。

缩放比例

tl; dr:容易得多

这与容量规划和分片有关。 当我们谈论扩展时,很多人都在考虑非常大的系统,但这并不是我唯一想到的问题:

  • 扩展可以从很小的东西开始,而不必在可能变得非常大的情况下预先进行大量投资。
  • 缩放也是一个人的问题。 如果系统需要太多的内部知识才能运行,那么作为工程组织就很难成长。 新员工进入的障碍可能会非常高。

因此,通过提供自动分片,TiDB可以更轻松地扩展。

架构变更(DDL)

tl; dr:更好

TiDB支持的数据定义语言(DDL)都是在线的,这意味着它不会阻止其他对系统的读取或写入。 它还不会阻止复制流。

这是个好消息,但要注意一些限制:

  • TiDB当前不支持所有DDL操作,例如更改主键或某些“更改数据类型”操作。
  • TiDB当前不允许您在同一命令中链接多个DDL更改,例如ALTER TABLE t1 ADD INDEX(x),ADD INDEX(y) 。 您将需要将这些查询分解为单个DDL查询。

这是我们希望在TiDB 3.0中改进的领域 。

为报告团队创建一次性数据转储

tl; dr:可能不需要

DBA讨厌手动任务,后者会一次性创建数据导出,以供另一个团队使用,也许是在分析工具或数据仓库中。

当在数据集上执行的查询类型为分析型时,通常需要这样做。 TiDB具有混合事务/分析处理(HTAP)功能,因此在许多情况下,这些查询应该可以正常工作。 如果您的分析团队使用的是Spark,则还可以使用TiSpark连接器使他们直接连接到TiKV。

这是我们使用列存储加速器TiFlash改进的另一个领域。 我们还在开发一个插件系统以支持外部身份验证。 这将使报告团队更易于管理访问。

结论

在本文中,我研究了一些常见MySQL DBA任务以及它们如何转换为TiDB。 如果您想了解更多信息,请查看我们的专为MySQL DBA设计的TiDB学院课程 (免费!)。

翻译自: https://opensource.com/article/19/3/how-save-time-tidb

tidb时间转字符串

你可能感兴趣的:(数据库,mysql,java,大数据,python)