转载

借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

概述

在炙手可热的 IT 领域,涌现了许多颇为积极的趋势。精致、时尚的智能设备帮助我们处理日常琐事。各种专用的、通用的传感器、执行器、机器人、机器、仪表和器具也不断出现。用户群体呈指数不断增长,而数据量也在急剧增加。对于数据库的水平可扩展性而言,应用的零宕机已成为一个强制性要求。

各种定制的打包应用不断迁移到云环境,在这些环境中,高度同步的 IT 平台可帮助之前由 IT 管理员手动处理的各种活动实现自动化并加快处理速度。当今时代,互联性和服务支持非常重要。我们已经为知识密集型服务构建了坚实的基础,但随着技术的进步,数据在生成、捕获、传输和存储方面也急剧增长。海量、多变的数据来源给我们带来了诸多关键挑战。

对于公有云环境中高性能的弹性数据和流程密集型应用而言,ScaleBase 完全可以成为您战略的一个重要部分。 ScaleBase 对久经验证且高度成熟的 MySQL 数据库进行了诸多创新,有助于您实现大数据和快速数据分析的优势。 同时,通过分片技术,企业亟需的水平可扩展性(向外扩展)功能也被纳入到 ScaleBase 之中。

分片 (Sharding) 是一种数据库扩展技术,其价值已在大多数流行的 MySQL Web 站点、应用和游戏中得到了验证。在分片数据库中,数据不是仅仅存储在单个数据库实例之中,相反您可以在多个数据库实例,甚至是多个服务器之间分配数据。

在以往,数据库分片需要采用手动的方式将数据分配策略直接编码到应用中。开发人员需要编写相应代码,严格规定特定数据的存储和搜索位置。基本上说,为了使应用能够处理更多的用户、事务和数据,他们需要构建应急代码来解决数据库的可扩展性问题。借助 ScaleBase,应用便能以成本高效的方式使用相互协作的多个 MySQL 实例。

在创建分布式或分片式数据库时,一个特别棘手的问题就是 分片冲突 问题。这个问题如果得不到妥善解决,就会带来非常严重的后果。您甚至会在不知情的情况下收到错误的查询结果。幸运的是,ScaleBase 能够有效解决分片冲突问题。ScaleBase 能够:

  • 集中进行数据分配策略管理和数据库再平衡
  • 提供易于管理且水平可扩展的数据库集群,该集群构建于 MySQL 之上,可动态优化分布式数据库集群中的工作负载
  • 集中管理从单个 MySQL 实例到分布式数据库的初始迁移,并进行额外扩展,确保在不造成应用宕机的情况下提前应对增加的数据库工作负载

在本文中,我们将学习如何将 ScaleBase 解决方案迁移至 IBM SoftLayer。在这个过程中,您将会进行必要的配置更改,同时通过一个简单的应用示例来展示 ScaleBase 在一个在线的按需型外部云环境中的工作方式。

ScaleBase 简介

ScaleBase 是一款基于 MySQL 而构建的动态数据库集群,已针对云技术进行了优化。该解决方案可实现 MySQL 关系数据的完整性,能使您向外扩展到无限数量的用户、数据和事务。 ScaleBase 强大的全天候功能包括:

  • 数据库可扩展性和弹性向外扩展,可连续提升数据库的规模和吞吐量,并确保时刻领先于应用的工作负载需求。
  • 数据库可用性、可靠性和弹性。保护用户免于遭受宕机和延迟;用户及其应用可时刻保持与文档、数据文件和业务系统的连接。
  • 采用地理式分布,数据库的子集均处于数据需求点附近。
  • 采用私有/公有混合云,数据库的子集可分布于多个私有或公有站点。

ScaleBase 可提供一个水平可扩展的数据库集群,该集群构建于 MySQL 之上,这一点与放弃了 ACID、SQL 和连接的其他数据库系统有所不同;依赖于内存持久性和耐久性;大胆采用异步式复制来实现可扩展性和可用性。该款解决方案能够动态优化多个节点之间的工作负载,从而降低成本、提高数据库弹性并提升开发敏捷性。

MySQL 的可靠性和丰富性

ScaleBase 是唯一一款使用真正的、可靠的 MySQL 存储引擎(包括 MySQL InnoDB、MariaDB、Percona 和 AWS RDS)的分布式数据库管理系统。ScaleBase 增加了向外扩展、可用性和高性能分析功能,显著提升了 MySQL 引擎。 之前的所有功能均可继续使用,但都进行了增强,扩展至分布式环境中。其中包括:

  • 双阶段提交和回滚
  • ACID 合规性
  • SQL 查询模型,包括跨节点连接和聚合

在 ScaleBase 中,数据分配、智能复杂平衡、复制感知的读写拆分、事务管理、并发控制和双阶段提交,均是完全透明的。如同单个 MySQL 实例一样,应用仍可以与分布式数据库进行交互。图 1 所示为 ScaleBase 的架构。

图 1. ScaleBase 的架构

借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

ScaleBase 专为云而构建,通过非常简单的部署,适用于各种复杂的生产应用。由于 ScaleBase 采用 Layer 7 直通模型以及基于策略的数据分配,因此无需任何代码更改。

回页首

准备在 IBM SoftLayer 中安装 ScaleBase

本节将为大家介绍 ScaleBase 所需的软件和硬件,以及在 SoftLayer 中安装 ScaleBase 之前配置 MySQL 的步骤。

软件

ScaleBase 目前支持的平台包括:

  • Ubuntu X86-64(12.04 版已测试)
  • CentOS X86-64(5.8 版已测试)

ScaleBase 已通过管理程序 VMWare ESXi 4 和 5 版进行了测试。ScaleBase 可在 Xen 管理程序上运行(不过我们未进行测试)。在不久的将来,本文所述的解决方案将能够在其他一流的管理程序和平台上运行。

该解决方案支持 Firefox、Internet Explorer (IE) 和 Google Chrome 等 Web 浏览器。

硬件

表 1 给出了物理主机的硬件需求。

表 1. 物理主机的硬件需求

目的 运行 ScaleBase 的最低规格

功能测试和开发环境

注:不推荐用于生产目的!

CPU:4 核,1.5Ghz
RAM:8 GB
HDD:推荐采用 2GB
生产和负载测试 CPU:16 核,2.5Ghz
RAM:32 GB
HDD:推荐采用 2GB

配置 MySQL DB

在 SoftLayer 的虚拟实例上安装 ScaleBase 之前 ,您需要执行 mysql 命令,以查看是否已安装了 MySQL。我们在本文中假定已经安装了 MySQL,如下文示例所示。

借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

接下来,需要在 MySQL 监视器中输入以下命令,对 MySQL 进行预先配置:

  1. CREATE DATABASE `scalebaseconfig`; 借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”
  2. CREATE USER 'scalebase' IDENTIFIED BY 'password'; 借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”
  3. GRANT ALL PRIVILEGES ON `scalebaseconfig`.*TO 'scalebase'@'%' identified by 'password'; 借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”
  4. GRANT ALL PRIVILEGES ON `scalebaseconfig`.*TO 'scalebase'@'localhost' identified by 'password'; 借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”
  5. GRANT ALL PRIVILEGES ON `scalebaseconfig`.*TO 'scalebase'@'198.11.235.67' identified by 'password'; 借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

    点击查看大图

    关闭 [x]

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

回页首

安装 ScaleBase

若要安装 ScaleBase:

  1. 使用 WinSCP,将产品发布文件 ScaleBase_3.2.2.tar.gz 移动到 SoftLayer VM。目标目录为目标主机上的 /var/tmp。

    为该文件提供 root 权限。

  2. 解压分配文件。在 VM 命令行中,输入 Listing 1 给出的命令。

    清单 1. 解压发布文件

    cd /var/tmp tar zxfv ScaleBase_3.2.2.tar.gz
    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机” 借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”
  3. 运行安装脚本,执行需要 root 权限的操作。在命令行,输入 Listing 2 给出的命令。

    清单 2. 运行安装脚本。

    cd /scalebase-install_3.2.2.0 ./install.pl –-help
    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

    点击查看大图

    关闭 [x]

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

    点击查看大图

    关闭 [x]

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

  4. 在安装 ScaleBase 之前,仔细阅读屏幕上的安装程序,详见 Listing 3。

    清单 3. 安装选项

    Simplified Mode: --simplified  Simplified installation with a built-in configuration database.  Does not require local mysql client, not ready for failover.  Cannot be upgraded to a standard installation later.  This mode is not recommended for production installations. -- help       Displays additional instructions for the simplified mode. --upgrade     Upgrades existing installation in the installation directory.  Parameter values are taken from existing installation.  STANDARD OPTIONS for normal installation mode: --user        Required.User name for connection to configuration database. --password    Password for connection to configuration database. --host        Address of the configuration database 1.Default=127.0.0.1 --host2       Address of the configuration database 2.Default=127.0.0.1 --port        Port of the configuration database 1.Default=3306 --port2       Port of the configuration database 2.Default=3306 --configdb    Name of schema with config. data in cfg. db 1.Default=scalebaseconfig --configdb2   Name of schema with config. data in cdg. db 2.Default=scalebaseconfig --installConfDB  Prepare configuration tables in config. dbs (y/n).Default=y --xm          Controller JVM Heap Size in GB.Minimum value is 5.Default value depends     on available RAM. --nokey       Do not wait for ENTER. --customUser  Flag for installation with different user (Not root), parameter doesn't have value. 示例: ./install.p1 --user=scalebase --password=password --host=127.0.0.1 ./install.p1 --simplified 

    有两种安装方式:

    • 使用 Listing 4 中给出的命令进行简化实例(不用于生产目的)的安装。

      清单 4. 安装简化实例

      ./install.pl --simplified

      该脚本显示了安装信息,等待用户继续操作。检查安装变量,然后按下 Enter(回车) 继续操作。通过该脚本可完成安装过程。

    • 安装首个生产用标准实例。

    本文中的示例使用第二个标准程序,如 Listing 5 所示。

    清单 5. 标准程序(带密码)

    ./install.pl --user=scalebase --password=password --host=198.11.235.67

    在输入 Listing 5 中的命令后,安装脚本的 Stage 1 将会提供有关安装目录、用户、安装参数、可用 RAM、控制器堆大小和配置设置等消息。安装脚本的 Stage 2 用于安装 ScaleBase 组件,提取文件并安装 ScaleBase 定时任务。Stage 3 用于启动控制器、服务及 Web 控制台进程,如下图所示。

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

    点击查看大图

    关闭 [x]

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

    若要进行初始配置,在 Web 浏览器中打开向导程序,即可完成 ScaleBase 的初始配置。

  5. 按照 Putty 工具上的指示操作,打开浏览器并输入 http://198.11.235.67:2701,这是 SoftLayer VM 的公共 IP 地址。此时,您可以看到 ScaleBase 的配置向导程序,如图 2 所示。

    图 2. ScaleBase 配置向导程序

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

    点击查看大图

    关闭 [x]

    图 2. ScaleBase 配置向导程序

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

  6. 阅读试用许可协议,选择 I Agree(我同意) ,然后单击 Continue(继续) ,如图 3 所示。

    图 3. ScaleBase 试用许可协议

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

    点击查看大图

    关闭 [x]

    图 3. ScaleBase 试用许可协议

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

  7. 输入您的 Web Console Username(Web 控制台用户名)Password(密码) ,然后单击 Continue(继续) ,如图 4 所示。

    图 4. 创建第一个用户帐户

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”
  8. 如图 5 所示,单击 Upload File(上传文件) ,提供您的 ScaleBase 许可文件。

    图 5. 上传 ScaleBase 许可文件

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”
  9. 如图 6 所示,输入:
    • Friendly Name(易记名称)admin
    • Address(地址)198.11.235.67
    • Port(端口)3306
    • DBA Username(DBA 用户名)scalebase
    • DBA Password(DBA 密码)password

    图 6. 连接信息

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

    点击查看大图

    关闭 [x]

    图 6. 连接信息

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

  10. 添加任何附加数据库节点的连接信息,然后单击 Finish(完成) ,如图 7 所示。

    图 7. 附加数据库节点的连接信息

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

    点击查看大图

    关闭 [x]

    图 7. 附加数据库节点的连接信息

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

回页首

配置写入节点故障转移

按照本节的说明将复制的从节点添加到集群中,并配置应用故障转移策略。

将复制的从节点添加到集群中

在 ScaleBase 控制台界面,选择 Administer(管理) 选项卡。单击 Apps(应用) ,然后选择需要添加从节点的应用和集群,如图 8 所示。

图 8. 节点详情

借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

点击查看大图

关闭 [x]

图 8. 节点详情

借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

  1. 单击 Add(添加) 打开 Add/Modify Database Node(添加/修改数据库节点)窗口,如图 9 所示。

    图 9. 添加或修改数据库节点

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”
  2. 如果之前已经在系统中输入了数据(这种情况不常见),则可以选择现有的数据库服务器,或者您可以添加一个新服务器。

    若要添加新服务器,选择 Add New Server(添加新服务器) 并填写以下字段即可:

    • Friendly Name(易记名称)Server 0.2
    • Address(地址)localhost
    • DB port(DB 端口)3307
    • DBA Username(DBA 用户名)root
    • DBA Password(DBA 密码)password

    单击 Verify and save(验证并保存) ,如图 10 所示。

    图 10. 添加新服务器

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”
  3. 为新服务器节点调整读取负载平衡和故障转移策略。若要启用故障转移选项,在 Failover Enabled(启用故障转移) 一项中选择 ON(开) ,并修改节点的 Failover Priority(故障转移优先级) (数值越小,优先级越高),如图 11 所示。然后单击 Verify and save(验证并保存)

    图 11. 调整选项

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”
  4. 若要检查新添加的节点,单击 Monitor(监视) 选项卡,并依次选择 Application (应用) > Cluster(集群) > Node(节点) 。检查从节点的复制状态,如图 12 所示。

    图 12. 检查新节点

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

    点击查看大图

    关闭 [x]

    图 12. 检查新节点

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

  5. 若要修改节点属性,转至 Administer(管理) > Application(应用) > Cluster(集群) > Node(节点) ,并修改属性。

配置应用故障转移策略

  1. 切换到 Administer(管理) 选项卡,并转至 Apps(应用) 选项卡,然后单击 Configuration(配置) 选项卡,如图 13 所示。

    图 13. Configuration(配置)选项卡

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

    点击查看大图

    关闭 [x]

    图 13. Configuration(配置)选项卡

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

  2. Replication lag threshold for failover (seconds)(故障转移复制延迟阈值,秒) 选项中输入值。在我们给出的示例中,该值为 2
  3. 指定 Database replication method(数据库复制方法) ,在我们给出的示例中,选择 MYSQL

    。该方法用以从写入节点复制数据到所有从节点。

    请注意:该选项仅会向 ScaleBase 指定希望采用的方法,且仅供测试用;不会修改或配置数据库之间的实际复制规则。

  4. 完成设置后,向下滚动并单击 Save(保存) 。该项配置更改不需要重启 ScaleBase 控制器。

回页首

读取负载平衡

对于读取密集型应用,为了改善数据库操作的可扩展性,ScaleBase 可将读取负载分配到每个集群中多个复制的从节点。在 Read Enabled(启用读取) 一项中选择 ON(开) ,如图 14 所示,然后单击 Save(保存)

图 14. 启用读取

借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

点击查看大图

关闭 [x]

图 14. 启用读取

借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

只要节点已复制且复制延迟低于规定的阈值,ScaleBase 均会以循环的方式将读取负载分配到所有可用的复制节点上。如果某个节点的复制延迟超过阈值,该节点将会被排除在读取负载平衡之外,直至其延迟再次低于延迟为止。

配置读取负载平衡策略

若要对选定应用进行读取负载平衡,转至应用配置屏幕,修改阈值设置和节点关联度。

  1. 转至 Administer(管理) 选项卡,单击 Apps(应用) 选项卡,选择您的应用,然后单击 Configuration(配置) 选项卡,如图 15 所示。

    图 15. 设置复制

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”
  2. Replication lag threshold for reading (seconds)(读取复制延迟阈值,秒) 选项中输入新值。在我们给出的示例中,该值为 0
  3. 指定 Database replication method(数据库复制方法) ,在我们给出的示例中,选择 MYSQL

    。该方法用以从写入节点复制数据到复制从节点。

    请注意:该选项仅会向 ScaleBase 指定希望采用的方法,且仅供测试用;不会修改或配置数据库之间的实际复制规则。

  4. 向下滚动并设置 Load balancing affinity(负载平衡关联度) 参数,如图 16 所示。在我们的示例中,该参数为 STATEMENT

    图 16. 设置负载平衡关联度

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

    点击查看大图

    关闭 [x]

    图 16. 设置负载平衡关联度

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

    完成后,单击 Save(保存) 。该项配置更改不需要重启 ScaleBase 控制器。

回页首

分配数据

更新现有的分配策略是一项比较复杂的任务,因为该操作对集群中的现有数据及待录入的数据(碎片)有着直接影响。 借助 ScaleBase,您可以通过一个两步流程来确保操作的容错性、一致性和透明性,从而在更改期间确保数据的一致性和完整性。

在任何时候,都会存在一个“活动配置”,用以指示集群中现有(当前)数据的实际物理分配。 安装完成后,活动配置由单个集群构成;所有的数据都存储在该单个集群中,并没有生效的实际分配。

  1. 修改分片配置。例如:添加新集群、标记待删除的集群、添加新分配策略或更新现有分配策略、在策略中添加新模式或表格、更新或拆分分配规则的范围等等。

    在由 ScaleBase 操作员手动提交(详见下一步骤)之前,这些待决更改都不会激活。屏幕上的指示器也会为您提供帮助,具体如下:

    • 对于策略和集群配置中尚未提交的待决更改,用户界面 (UI) 会给出即时的视觉指示。
    • 带有更改(添加或删除)的集群,会通过图标进行标记,指明其待决状态。
    • 更新后的策略要素会带有备注,指明更改的性质,如 NOT Active(未激活)、FROM GLOBAL(从全局)等等。

    注:您可以在控制台界面通过操作员操作 Revert Scheduled Policy Changes(恢复计划的策略更改) 来撤销所有待决更改。

  2. 您也可以通过 Commit Policy Changes(提交策略更改) 选项,提交所有的待决配置和策略更改。 ScaleBase 操作员提交未激活的更改时,ScaleBase 会执行一系列任务,以确保:
    • 所有集群上创建的模式保持统一
    • 已调整了自动增量栏偏置和增量,以防多个独立的集群之间出现复用值。
    • 全局表格数据已统一在所有集群中进行了再分配
    • 所有的主表格数据已迁移到主集群中
    • 所有已分配的表格数据均已按照更新后分配策略的规定迁移到各自的目标集群中
    • 对于哈希规则,数据已分配表格已在所有集群中进行了统一重新分配
    • 对于更新后的范围,具有新地址的数据均以移至新集群中

    重新分配可能需要较长时间,尤其是根据更新后的策略,需要重新分派较多数据时。 操作员可以调整重新分配进程,我们称之为 CoRD,有关讨论详见提交策略更改和重新分配数据。

管理集群

ScaleBase 是一个带有复制从节点的主节点,用于以高可用的方式存储数据片段(碎片)。存储记录及其所在集群在数据分配策略中定义。因此,数据分配的第一个要求是集群的物理配置。每个集群至少必须包含其主数据库节点。在将新集群添加到应用配置时,该 DB 实例必须做好准备。

若要添加一个新集群:

  1. Administer(管理) 选项卡,选择应用,然后单击 Add(添加) ,如图 17 所示。

    图 17. 添加集群

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”
  2. 在 Add Cluster Wizard(添加集群向导)中,按照以下要求填写与集群主节点的位置和 DBA 证书相关的字段,如图 18 所示。
    • 输入一个新的数据库服务器 :如果之前已经添加了服务器(该情况不常见),则可以选择该 DB 服务器的现有记录,或者您可以选择该选项,直接在窗口中添加一个新服务器。
    • Friendly Name(易记名称)Cluster(集群):1
    • Address(地址)scalebase.softlayer.com
    • Port(端口)3306
    • DBA Username(DBA 用户名)scalebase
    • DBA Password(DBA 密码)password

    图 18. 添加位置和证书

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

    单击 Finish(完成) ,将通过单个读/写主节点完成集群的创建,如图 19 所示。

    图 19. 创建集群

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”
  3. 若要检查新集群及其主节点,转至 Monitor(监视) 选项卡,选择应用,并在集群列表底部选择新集群,如图 20 所示。提交了配置更改后,集群的图标上将会显示一个箭头符号,表示该集群需要重新分配数据。由于重新分配尚未运行,因此其数据分配状态将会显示该集群尚未激活。

    图 20. 检查新集群

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

若要向系统中添加额外的集群,重复上述步骤即可。

回页首

数据分配策略

我们建议您在首个集群的主节点上创建了数据库模式,且所有集群都添加到系统中 之后 ,再开始本步骤。

本节将介绍如何使用 UI 配置应用的分配策略。策略设计一般出现在分析阶段,不在本文讨论范围之内。

您可以快速从文件中导入或导出策略定义。在 Administer(管理) 选项卡,选择应用。在屏幕的右上角是 Actions(操作)选项,您可以选择 Import Distribution Configuration(导入分配配置)和 Export Distribution Configuration(导出分配配置),如图 21 所示。选择从文件中导入或导出分配策略。

图 21. 导入或导出分配策略

借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

点击查看大图

关闭 [x]

图 21. 导入或导出分配策略

借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

回页首

分配规则入门介绍

本节将向您介绍如何设置哈希规则和范围规则。

哈希规则

哈希规则比较适用于多个集群之间免维护型的统一记录分配。该规则的主要缺点是用户无法控制数据在集群中的位置。此外,集群数量增加或减少时,会需要对大量数据进行重新分配。

若要向哈希规则添加表格:

  1. 在控制台中,转至 Administer(管理) 选项卡,并选择应用,然后单击 Distribution Policy(分配策略) 选项卡。
  2. 选择 Rules(规则) ,然后单击 Add(添加) ,以添加 INTEGER 或 STRING 类型的哈希规则,如图 22 所示。

    图 22. 添加分配规则

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

    单击 Verify and save(验证并保存)。

  3. 在导航树中选择 INTEGER 或 STRING 类型的哈希规则,然后单击 Add(添加) 。如图 23 所示,在 Add Distributed Table Definition(添加已分配表格定义)窗口,选择以下选项:
    • Schema(模式)scalebaseconfig
    • Table(表格)customer
    • Data Distribution Key(数据分配键)id

    图 23. 添加已分配表格定义

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

    单击 Verify and save(验证并保存)。

添加表格后,您会看到窗口上显示 NOT ACTIVE(未激活) ,如图 24 所示。在您提交策略更改之前,所有的新规则和新表格都不会激活。

图 24. 已分配表格

借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

范围和列表规则

如果您希望控制记录在每个集群中的分配位置,则可以使用范围规则。对范围规则进行仔细的计划,您将无需在为了扩容而在系统中添加新集群时重新分配数据。在范围规则中,操作员主要负责定义范围集群的映射。范围规则仅会引用已经输入到系统之中的集群。

若要添加新的范围规则和列表规则:

  1. Administer(管理) 选项卡,选择应用,然后单击 Distribution Policy(分配策略) 选项卡。
  2. 单击 Distributed Tables(已分配表格) 选项卡。此时,您会在屏幕中央附近的导航树中看到一个名为“Rules(规则)”的节点。单击 Rules(规则) ,然后单击 Add(添加)
  3. 在图 25 所示的 Add Distribution Rule(添加分配规则)窗口中,输入 Description(描述),更改 Type(类型)为 RANGE(范围) ,并选择 Data Type(数据类型),在我们的示例中,类型为 INTEGER

    图 25. 选择类型

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

    点击查看大图

    关闭 [x]

    图 25. 选择类型

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

    单击 Verify and save(验证并保存) 。此时,您会看到一条警告消息,提示您必须指定值范围及其集群。

  4. 在导航树中指定值范围并选择范围规则,以查看其定义格式。
  5. 如图 26 所示,单击 Add(添加) ,然后单击 Data Distribution Keys(数据分配键)

    表格,此时可以看到新范围定义窗口。

    图 26. 定义新范围

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

    点击查看大图

    关闭 [x]

    图 26. 定义新范围

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

    在 Add Data Distribution Key Range(添加数据分配键范围)窗口,定义范围,如图 27 所示。

    图 27. 设置范围的上下限

    借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

    单击 Verify and save(验证并保存)。

添加范围后,您会看到如图 28 所示的屏幕。范围值表示将会转至该集群的键值间隔上限。下限值通过之前(较小的)范围值定义来定义。ScaleBase 会自动对范围值列表进行分类,因此无需在 UI 中分类。

图 28. 范围值

借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

点击查看大图

关闭 [x]

图 28. 范围值

借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

回页首

在范围规则或列表规则中添加表格

如图 29 所示,选择规则,然后单击 添加 。在 Add Distributed Table Definition(添加已分配表格定义)窗口,选择适用于该表格的 Schema(模式)、Table(表格)和 Data Distribution Key(数据分配键)。

单击 Verify and save(验证并保存)。

图 29. 添加已分配表格定义

借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

在进行下一步操作之前,使用期望的规则,针对所有待分配的表格,重复执行该程序。

回页首

修改在集群之间重新分配数据的分配规则

若为哈希规则,当系统中添加或移除集群时,会需要在集群之间重新分配数据。在这种情况下,操作员无法控制数据的位置。系统会使用哈希算法和模块算法来实现最佳分配。范围是指: 添加、拆分或合并。

若为范围规则,ScaleBase 可提供以下功能:

  • 在对存有现有数据的单个数据库进行初始分片时,若策略更改已提交,所有的现有数据将会按照新定义的值范围迁移到目标集群中。
  • 带有范围的策略激活后,您可以将每个范围重新分配到不同的集群,或者将现有范围拆分为两个范围,并为每个子范围指定新位置。在将两个或多个相邻的范围重新分配到同一集群时,则会在策略更改提交期间,进行有效合并。

图 30 所示为如何修改集群的分配规则。

图 30. 修改分配规则

借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

点击查看大图

关闭 [x]

图 30. 修改分配规则

借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

回页首

提交策略更改并重新分配数据

在提交过程中,会根据主集群的当前模式以及现有数据,检查修改后的策略。新集群可能不包含存在于策略中的模式,而且新集群应始终保持空白。之后,将会在所有新集群上创建所有使用中的模式,所有的策略更改会被激活,而所有的新策略也将生效。提交流程的最后一步是自动执行 CoRD(持续数据重新分配),该步骤仅会移动已经移动的数据,确保其与更新的策略保持同步。

在提交流程中,需要充分分配数据的典型更改包括:

  • 表格转换(例如分配到全局)
  • 新模式列表(未入册表格的全局化)
  • 采用哈希规则时,添加或删除集群
  • 重新分配或拆分范围

Administer(管理) 选项卡,选择应用。在屏幕的右上角,选择 Actions(操作)选项旁边的 Commit Policy Changes(提交策略更改) ,然后单击 Run(运行)

此时,您可以看到 Data Re-distribution(数据重新分配)窗口,如图 31 所示。选择 Offline(离线) ,然后单击 Run data re-distribution(运行数据重新分配)

图 31. 数据重新分配警告

借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

在线重新分配与离线重新分配

在很多情况下,在重新分配期间,要确保数据库处于运行状态。在线模式便是专为这种情况设计。在重新分配完成之前,集群中的大多数数据都可用于读写操作,只有正处于重新分配之中的数据子集会锁定写入。

离线重新分配会忽略数据行的锁定,而且速度相比在线模式要快(速度最高可提升 10 倍,具体视实际数据及数据量而定)。不过这种模式需要将应用切换到离线状态。 在离线 CoRD 运行期间,ScaleBase 操作员要负责确保任何应用都不会尝试连接。

回页首

添加新应用用户到 ScaleBase

Administer(管理) 选项卡,选择 defaultApp 应用,如图 32 所示,然后单击 Users(用户) 选项卡。

单击用户列表上方的 Add(添加) ,然后输入新用户证书。

图 32. 添加用户

借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

使用 Listing 6 中的信息配置用户。

清单 6. 配置用户

CREATE USER 'dbt2' IDENTIFIED BY 'dbt2'; GRANT ALL PRIVILEGES ON `dbt2`.*TO 'dbt2'@'%' identified by 'dbt2'; GRANT ALL PRIVILEGES ON `dbt2`.*TO 'dbt2'@'localhost' identified by 'dbt2'; GRANT ALL PRIVILEGES ON `dbt2`.*TO 'dbt2'@'198.11.235.67' identified by 'dbt2';

回页首

系统管理

本节将简要介绍一些系统管理任务。

启动并停止 ScaleBase 服务

安装完成后,ScaleBase 将自动启动。以超级用户(root 用户)的身份登录或使用 Sudo 运行以下命令。

  • 若要停止运行 ScaleBase 实例,运行 service scalebase stop
  • 若要启动已停止的 ScaleBase 实例,运行 service scalebase start
  • 若要重新启动 ScaleBase,运行 service scalebase restart

重置管理员密码

若要重置 admin(管理员) 用户的密码,转至 ScaleBase 主机上的 ScaleBase 安装目录 /bin,并运行 adminAccountReset.pl 脚本,如 Listing 7 所述。

清单 7. 重置密码

cd /usr/scalebase/bin ./adminAccountReset.pl

使用日志创建报告

在排除故障或检查特定行为时,ScaleBase 人员可能会例行要求您提供日志。若要使用日志创建报告:

  1. 运行 /usr/scalebase/bin/CreateErrorLogZip.pl
  2. 发送名称为 /var/tmp/ScalebaseErrorReport.tar.gz 的报告文件。

集群的维护模式

一个完整的集群连同其所有的数据库,可通过离线的方式进行维护,而无需触发成本高昂的故障转移模式。在维护模式下,除非集群已返回在线模式,否则需要从外部访问已禁用集群(及其任一数据库)的请求均将被拒绝并报错。

若要将集群设置为维护模式,转至 Administer(管理) 选项卡并选择集群。在 Actions(操作)选项中选择 Turn On Maintenance Mode(打开维护模式) ,然后单击 Run(运行) ,如图 33 所示。

图 33. 将集群设置为维护模式

借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

点击查看大图

关闭 [x]

图 33. 将集群设置为维护模式

借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

处在维护模式下的集群会采用特殊的图标进行标记,如图 34 所示。

图 34. 维护模式图标

借助 ScaleBase 自动扩展数据库,实现云应用的“零宕机”

维护模式可以随时关闭,只需返回到 Actions(操作)选项,并选择 Turn Off Maintenance Mode(关闭维护模式) 即可。

启动并停止已安装的运行中服务

安装脚本会在目标操作系统中准备并启动一个新的 ScaleBase 服务(称之为 ScaleBase),务必使用该服务来启动和停止 ScaleBase 实例。该脚本位于 /etc/init.d/scalebase 文件中。

若要启动和停止 ScaleBase 服务,以超级用户(root 用户)的身份登录或使用 Sudo 运行以下命令。

  • 若要停止运行 ScaleBase 实例,运行 service scalebase stop
  • 若要启动已停止的 ScaleBase 实例,运行 service scalebase start
  • 若要重新启动 ScaleBase,运行 service scalebase restart

回页首

结论

IT 基础架构正在以严谨的方式得到优化和组织,用以托管和运行下一代的软件应用和服务。自动扩展已成为云世界不可或缺的要素之一,而且会接受每一层的审核,—尤其是数据库层。

ScaleBase 部署非常简单,甚至对于最复杂的生产应用亦是如此,而且它是专为云而构架的。由于 ScaleBase 采用 Layer 7 直通模型以及基于策略的数据分配,因此无需任何代码更改。ScaleBase 可提供以下诸多优势,使您可以专注于创新:

  • MySQL 数据库引擎的可靠性和丰富功能
  • 强大的功能,有助于实现高效的分布式数据库管理
  • 部署和操作显著简化

本文介绍了在开发新的大数据应用时,如何使用 ScaleBase 的独特功能。我们还介绍了如何对现有应用进行修改,从而提高其可扩展性,实现零宕机。

正文到此结束
Loading...