在炙手可热的 IT 领域,涌现了许多颇为积极的趋势。精致、时尚的智能设备帮助我们处理日常琐事。各种专用的、通用的传感器、执行器、机器人、机器、仪表和器具也不断出现。用户群体呈指数不断增长,而数据量也在急剧增加。对于数据库的水平可扩展性而言,应用的零宕机已成为一个强制性要求。
各种定制的打包应用不断迁移到云环境,在这些环境中,高度同步的 IT 平台可帮助之前由 IT 管理员手动处理的各种活动实现自动化并加快处理速度。当今时代,互联性和服务支持非常重要。我们已经为知识密集型服务构建了坚实的基础,但随着技术的进步,数据在生成、捕获、传输和存储方面也急剧增长。海量、多变的数据来源给我们带来了诸多关键挑战。
对于公有云环境中高性能的弹性数据和流程密集型应用而言,ScaleBase 完全可以成为您战略的一个重要部分。 ScaleBase 对久经验证且高度成熟的 MySQL 数据库进行了诸多创新,有助于您实现大数据和快速数据分析的优势。 同时,通过分片技术,企业亟需的水平可扩展性(向外扩展)功能也被纳入到 ScaleBase 之中。
分片 (Sharding) 是一种数据库扩展技术,其价值已在大多数流行的 MySQL Web 站点、应用和游戏中得到了验证。在分片数据库中,数据不是仅仅存储在单个数据库实例之中,相反您可以在多个数据库实例,甚至是多个服务器之间分配数据。
在以往,数据库分片需要采用手动的方式将数据分配策略直接编码到应用中。开发人员需要编写相应代码,严格规定特定数据的存储和搜索位置。基本上说,为了使应用能够处理更多的用户、事务和数据,他们需要构建应急代码来解决数据库的可扩展性问题。借助 ScaleBase,应用便能以成本高效的方式使用相互协作的多个 MySQL 实例。
在创建分布式或分片式数据库时,一个特别棘手的问题就是 分片冲突 问题。这个问题如果得不到妥善解决,就会带来非常严重的后果。您甚至会在不知情的情况下收到错误的查询结果。幸运的是,ScaleBase 能够有效解决分片冲突问题。ScaleBase 能够:
在本文中,我们将学习如何将 ScaleBase 解决方案迁移至 IBM SoftLayer。在这个过程中,您将会进行必要的配置更改,同时通过一个简单的应用示例来展示 ScaleBase 在一个在线的按需型外部云环境中的工作方式。
ScaleBase 是一款基于 MySQL 而构建的动态数据库集群,已针对云技术进行了优化。该解决方案可实现 MySQL 关系数据的完整性,能使您向外扩展到无限数量的用户、数据和事务。 ScaleBase 强大的全天候功能包括:
ScaleBase 可提供一个水平可扩展的数据库集群,该集群构建于 MySQL 之上,这一点与放弃了 ACID、SQL 和连接的其他数据库系统有所不同;依赖于内存持久性和耐久性;大胆采用异步式复制来实现可扩展性和可用性。该款解决方案能够动态优化多个节点之间的工作负载,从而降低成本、提高数据库弹性并提升开发敏捷性。
ScaleBase 是唯一一款使用真正的、可靠的 MySQL 存储引擎(包括 MySQL InnoDB、MariaDB、Percona 和 AWS RDS)的分布式数据库管理系统。ScaleBase 增加了向外扩展、可用性和高性能分析功能,显著提升了 MySQL 引擎。 之前的所有功能均可继续使用,但都进行了增强,扩展至分布式环境中。其中包括:
在 ScaleBase 中,数据分配、智能复杂平衡、复制感知的读写拆分、事务管理、并发控制和双阶段提交,均是完全透明的。如同单个 MySQL 实例一样,应用仍可以与分布式数据库进行交互。图 1 所示为 ScaleBase 的架构。
图 1. ScaleBase 的架构
ScaleBase 专为云而构建,通过非常简单的部署,适用于各种复杂的生产应用。由于 ScaleBase 采用 Layer 7 直通模型以及基于策略的数据分配,因此无需任何代码更改。
回页首
本节将为大家介绍 ScaleBase 所需的软件和硬件,以及在 SoftLayer 中安装 ScaleBase 之前配置 MySQL 的步骤。
ScaleBase 目前支持的平台包括:
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 |
在 SoftLayer 的虚拟实例上安装 ScaleBase 之前 ,您需要执行 mysql
命令,以查看是否已安装了 MySQL。我们在本文中假定已经安装了 MySQL,如下文示例所示。
接下来,需要在 MySQL 监视器中输入以下命令,对 MySQL 进行预先配置:
CREATE DATABASE `scalebaseconfig`;
CREATE USER 'scalebase' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON `scalebaseconfig`.*TO 'scalebase'@'%' identified by 'password';
GRANT ALL PRIVILEGES ON `scalebaseconfig`.*TO 'scalebase'@'localhost' identified by 'password';
GRANT ALL PRIVILEGES ON `scalebaseconfig`.*TO 'scalebase'@'198.11.235.67' identified by 'password';
点击查看大图
关闭 [x]
回页首
若要安装 ScaleBase:
使用 WinSCP,将产品发布文件 ScaleBase_3.2.2.tar.gz 移动到 SoftLayer VM。目标目录为目标主机上的 /var/tmp。
为该文件提供 root 权限。
清单 1. 解压发布文件
cd /var/tmp tar zxfv ScaleBase_3.2.2.tar.gz
清单 2. 运行安装脚本。
cd /scalebase-install_3.2.2.0 ./install.pl –-help
点击查看大图
关闭 [x]
点击查看大图
关闭 [x]
在安装 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
有两种安装方式:
清单 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 控制台进程,如下图所示。
点击查看大图
关闭 [x]
若要进行初始配置,在 Web 浏览器中打开向导程序,即可完成 ScaleBase 的初始配置。
图 2. ScaleBase 配置向导程序
点击查看大图
关闭 [x]
图 3. ScaleBase 试用许可协议
点击查看大图
关闭 [x]
图 4. 创建第一个用户帐户
图 5. 上传 ScaleBase 许可文件
admin
198.11.235.67
3306
scalebase
图 6. 连接信息
点击查看大图
关闭 [x]
图 7. 附加数据库节点的连接信息
点击查看大图
关闭 [x]
回页首
按照本节的说明将复制的从节点添加到集群中,并配置应用故障转移策略。
在 ScaleBase 控制台界面,选择 Administer(管理) 选项卡。单击 Apps(应用) ,然后选择需要添加从节点的应用和集群,如图 8 所示。
图 8. 节点详情
点击查看大图
关闭 [x]
图 9. 添加或修改数据库节点
若要添加新服务器,选择 Add New Server(添加新服务器) 并填写以下字段即可:
Server 0.2
localhost
3307
root
单击 Verify and save(验证并保存) ,如图 10 所示。
图 10. 添加新服务器
图 11. 调整选项
图 12. 检查新节点
点击查看大图
关闭 [x]
图 13. Configuration(配置)选项卡
点击查看大图
关闭 [x]
2
。 。该方法用以从写入节点复制数据到所有从节点。
请注意:该选项仅会向 ScaleBase 指定希望采用的方法,且仅供测试用;不会修改或配置数据库之间的实际复制规则。
回页首
对于读取密集型应用,为了改善数据库操作的可扩展性,ScaleBase 可将读取负载分配到每个集群中多个复制的从节点。在 Read Enabled(启用读取) 一项中选择 ON(开) ,如图 14 所示,然后单击 Save(保存) 。
图 14. 启用读取
点击查看大图
关闭 [x]
只要节点已复制且复制延迟低于规定的阈值,ScaleBase 均会以循环的方式将读取负载分配到所有可用的复制节点上。如果某个节点的复制延迟超过阈值,该节点将会被排除在读取负载平衡之外,直至其延迟再次低于延迟为止。
若要对选定应用进行读取负载平衡,转至应用配置屏幕,修改阈值设置和节点关联度。
图 15. 设置复制
0
。 。该方法用以从写入节点复制数据到复制从节点。
请注意:该选项仅会向 ScaleBase 指定希望采用的方法,且仅供测试用;不会修改或配置数据库之间的实际复制规则。
图 16. 设置负载平衡关联度
点击查看大图
关闭 [x]
完成后,单击 Save(保存) 。该项配置更改不需要重启 ScaleBase 控制器。
回页首
更新现有的分配策略是一项比较复杂的任务,因为该操作对集群中的现有数据及待录入的数据(碎片)有着直接影响。 借助 ScaleBase,您可以通过一个两步流程来确保操作的容错性、一致性和透明性,从而在更改期间确保数据的一致性和完整性。
在任何时候,都会存在一个“活动配置”,用以指示集群中现有(当前)数据的实际物理分配。 安装完成后,活动配置由单个集群构成;所有的数据都存储在该单个集群中,并没有生效的实际分配。
修改分片配置。例如:添加新集群、标记待删除的集群、添加新分配策略或更新现有分配策略、在策略中添加新模式或表格、更新或拆分分配规则的范围等等。
在由 ScaleBase 操作员手动提交(详见下一步骤)之前,这些待决更改都不会激活。屏幕上的指示器也会为您提供帮助,具体如下:
注:您可以在控制台界面通过操作员操作 Revert Scheduled Policy Changes(恢复计划的策略更改) 来撤销所有待决更改。
重新分配可能需要较长时间,尤其是根据更新后的策略,需要重新分派较多数据时。 操作员可以调整重新分配进程,我们称之为 CoRD,有关讨论详见提交策略更改和重新分配数据。
ScaleBase 是一个带有复制从节点的主节点,用于以高可用的方式存储数据片段(碎片)。存储记录及其所在集群在数据分配策略中定义。因此,数据分配的第一个要求是集群的物理配置。每个集群至少必须包含其主数据库节点。在将新集群添加到应用配置时,该 DB 实例必须做好准备。
若要添加一个新集群:
图 17. 添加集群
Cluster(集群):1
scalebase.softlayer.com
3306
scalebase
图 18. 添加位置和证书
单击 Finish(完成) ,将通过单个读/写主节点完成集群的创建,如图 19 所示。
图 19. 创建集群
图 20. 检查新集群
若要向系统中添加额外的集群,重复上述步骤即可。
回页首
我们建议您在首个集群的主节点上创建了数据库模式,且所有集群都添加到系统中 之后 ,再开始本步骤。
本节将介绍如何使用 UI 配置应用的分配策略。策略设计一般出现在分析阶段,不在本文讨论范围之内。
您可以快速从文件中导入或导出策略定义。在 Administer(管理) 选项卡,选择应用。在屏幕的右上角是 Actions(操作)选项,您可以选择 Import Distribution Configuration(导入分配配置)和 Export Distribution Configuration(导出分配配置),如图 21 所示。选择从文件中导入或导出分配策略。
图 21. 导入或导出分配策略
点击查看大图
关闭 [x]
回页首
本节将向您介绍如何设置哈希规则和范围规则。
哈希规则比较适用于多个集群之间免维护型的统一记录分配。该规则的主要缺点是用户无法控制数据在集群中的位置。此外,集群数量增加或减少时,会需要对大量数据进行重新分配。
若要向哈希规则添加表格:
图 22. 添加分配规则
scalebaseconfig
customer
id
图 23. 添加已分配表格定义
添加表格后,您会看到窗口上显示 NOT ACTIVE(未激活) ,如图 24 所示。在您提交策略更改之前,所有的新规则和新表格都不会激活。
图 24. 已分配表格
如果您希望控制记录在每个集群中的分配位置,则可以使用范围规则。对范围规则进行仔细的计划,您将无需在为了扩容而在系统中添加新集群时重新分配数据。在范围规则中,操作员主要负责定义范围集群的映射。范围规则仅会引用已经输入到系统之中的集群。
若要添加新的范围规则和列表规则:
RANGE(范围)
,并选择 Data Type(数据类型),在我们的示例中,类型为 INTEGER 。 图 25. 选择类型
点击查看大图
关闭 [x]
单击 Verify and save(验证并保存) 。此时,您会看到一条警告消息,提示您必须指定值范围及其集群。
表格,此时可以看到新范围定义窗口。
图 26. 定义新范围
点击查看大图
关闭 [x]
在 Add Data Distribution Key Range(添加数据分配键范围)窗口,定义范围,如图 27 所示。
图 27. 设置范围的上下限
添加范围后,您会看到如图 28 所示的屏幕。范围值表示将会转至该集群的键值间隔上限。下限值通过之前(较小的)范围值定义来定义。ScaleBase 会自动对范围值列表进行分类,因此无需在 UI 中分类。
图 28. 范围值
点击查看大图
关闭 [x]
回页首
如图 29 所示,选择规则,然后单击 添加 。在 Add Distributed Table Definition(添加已分配表格定义)窗口,选择适用于该表格的 Schema(模式)、Table(表格)和 Data Distribution Key(数据分配键)。
图 29. 添加已分配表格定义
在进行下一步操作之前,使用期望的规则,针对所有待分配的表格,重复执行该程序。
回页首
若为哈希规则,当系统中添加或移除集群时,会需要在集群之间重新分配数据。在这种情况下,操作员无法控制数据的位置。系统会使用哈希算法和模块算法来实现最佳分配。范围是指: 添加、拆分或合并。
若为范围规则,ScaleBase 可提供以下功能:
图 30 所示为如何修改集群的分配规则。
图 30. 修改分配规则
点击查看大图
关闭 [x]
回页首
在提交过程中,会根据主集群的当前模式以及现有数据,检查修改后的策略。新集群可能不包含存在于策略中的模式,而且新集群应始终保持空白。之后,将会在所有新集群上创建所有使用中的模式,所有的策略更改会被激活,而所有的新策略也将生效。提交流程的最后一步是自动执行 CoRD(持续数据重新分配),该步骤仅会移动已经移动的数据,确保其与更新的策略保持同步。
在提交流程中,需要充分分配数据的典型更改包括:
在 Administer(管理) 选项卡,选择应用。在屏幕的右上角,选择 Actions(操作)选项旁边的 Commit Policy Changes(提交策略更改) ,然后单击 Run(运行) 。
此时,您可以看到 Data Re-distribution(数据重新分配)窗口,如图 31 所示。选择 Offline(离线) ,然后单击 Run data re-distribution(运行数据重新分配) 。
图 31. 数据重新分配警告
在很多情况下,在重新分配期间,要确保数据库处于运行状态。在线模式便是专为这种情况设计。在重新分配完成之前,集群中的大多数数据都可用于读写操作,只有正处于重新分配之中的数据子集会锁定写入。
离线重新分配会忽略数据行的锁定,而且速度相比在线模式要快(速度最高可提升 10 倍,具体视实际数据及数据量而定)。不过这种模式需要将应用切换到离线状态。 在离线 CoRD 运行期间,ScaleBase 操作员要负责确保任何应用都不会尝试连接。
回页首
在 Administer(管理) 选项卡,选择 defaultApp 应用,如图 32 所示,然后单击 Users(用户) 选项卡。
单击用户列表上方的 Add(添加) ,然后输入新用户证书。
图 32. 添加用户
使用 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 将自动启动。以超级用户(root 用户)的身份登录或使用 Sudo 运行以下命令。
service scalebase stop
。 service scalebase start
。 service scalebase restart
。 若要重置 admin(管理员)
用户的密码,转至 ScaleBase 主机上的 ScaleBase 安装目录 /bin,并运行 adminAccountReset.pl 脚本,如 Listing 7 所述。
清单 7. 重置密码
cd /usr/scalebase/bin ./adminAccountReset.pl
在排除故障或检查特定行为时,ScaleBase 人员可能会例行要求您提供日志。若要使用日志创建报告:
/usr/scalebase/bin/CreateErrorLogZip.pl
。 一个完整的集群连同其所有的数据库,可通过离线的方式进行维护,而无需触发成本高昂的故障转移模式。在维护模式下,除非集群已返回在线模式,否则需要从外部访问已禁用集群(及其任一数据库)的请求均将被拒绝并报错。
若要将集群设置为维护模式,转至 Administer(管理) 选项卡并选择集群。在 Actions(操作)选项中选择 Turn On Maintenance Mode(打开维护模式) ,然后单击 Run(运行) ,如图 33 所示。
图 33. 将集群设置为维护模式
点击查看大图
关闭 [x]
处在维护模式下的集群会采用特殊的图标进行标记,如图 34 所示。
图 34. 维护模式图标
维护模式可以随时关闭,只需返回到 Actions(操作)选项,并选择 Turn Off Maintenance Mode(关闭维护模式) 即可。
安装脚本会在目标操作系统中准备并启动一个新的 ScaleBase 服务(称之为 ScaleBase),务必使用该服务来启动和停止 ScaleBase 实例。该脚本位于 /etc/init.d/scalebase 文件中。
若要启动和停止 ScaleBase 服务,以超级用户(root 用户)的身份登录或使用 Sudo 运行以下命令。
service scalebase stop
。 service scalebase start
。 service scalebase restart
。 回页首
IT 基础架构正在以严谨的方式得到优化和组织,用以托管和运行下一代的软件应用和服务。自动扩展已成为云世界不可或缺的要素之一,而且会接受每一层的审核,—尤其是数据库层。
ScaleBase 部署非常简单,甚至对于最复杂的生产应用亦是如此,而且它是专为云而构架的。由于 ScaleBase 采用 Layer 7 直通模型以及基于策略的数据分配,因此无需任何代码更改。ScaleBase 可提供以下诸多优势,使您可以专注于创新:
本文介绍了在开发新的大数据应用时,如何使用 ScaleBase 的独特功能。我们还介绍了如何对现有应用进行修改,从而提高其可扩展性,实现零宕机。