我们最近已经转移到Azure弹性规模数据库。因此,当我们需要创建另一个碎片时,我们的DBA会手动拆分现有的碎片。因此,我被赋予了自动化该过程的任务,这样我们就可以轻松地将现有的碎片split
或merge
多个碎片合并为一个。我正在学习并遵循Elastic数据库拆分合并工具教程。这里的另一个教程在要求和限制部分中介绍了以下内容:
目前,碎片需要存在并在碎片映射中注册,然后才能对这些碎片执行拆分合并操作
所以我仍然需要手动创建另一个碎片,并将其注册到碎片映射中,为此我可能需要使用另一个工具。类似地,在进行任何拆分/合并/移动操作之前,所有分片表和引用表的模式都需要存在于目标分片上。
所以这个拆分/合并功能还没有自动化,或者我看错地方了?
我希望所有这些操作都是自动化的。你能给我介绍一些完整的软件或教程吗?
Cbattlegear是正确的——该过程尚未集成到单个工具中。目前,"拆分/合并"工具仅处理数据移动操作。然而,有一个Powershell示例可以协调整个过程,包括提供目标数据库、将其添加到shard映射以及调用拆分/合并操作。您可以在拆分/合并教程的测试部分找到它的描述。
一些客户通过维护一个空的"黄金副本"数据库来进一步简化流程,该数据库包含碎片所需的所有模式对象。然后,当需要一个新的shard时,他们执行CREATE DATABASE AS COPY命令,从引用副本快速创建一个新DB。此步骤也可以编写脚本。
最后,除了Powershell之外,还有一个可用于Split-Merge的.Net API,它允许该工具的操作与C#可执行文件中的其他步骤或API集成。API包含在拆分/合并Nuget包中,并在此处进行了说明。
最简单的答案是还没有一个一体化的工具。
这主要是因为每个分片数据库在设置方式和单个分片的模式方面都是唯一的。因此,您必须手动创建碎片并进行注册,以便将数据移动到其中。