自2019年起,Greenplum数据库团队就开始致力于构建Greenplum原地升级工具gpupgrade。gpupgrade致力于提供一个简便的升级途径帮助用户在升级的过程中减少时间和空间的消耗。该工具将使客户能够方便放心的快速升级到Greenplum数据库的最新版本,让Greenplum在快速迭代的同时更快的获得客户反馈。
Greenplum研发团队从用户那收集了升级需求,并将收集来的需求进行了综合和分级。在充分了解用户对升级工具的需求后,我们构建了一个gpupgrade原型,并与客户进行了可用性测试。可用性反馈使我们验证了最低可行产品版本的设计思路。为了获得更及时的关于功能与使用上的反馈,我们发布了一系列升级工具的beta版本。
gpupgrade
Greenplum数据库在升级过程中会将存储在Greenplum数据库数据文件中的数据升级到更高版本的Greenplum数据库主版本,而无需客户拥有包括两倍于所需容量的其他硬件。Greenplum数据库集群升级的“源头”被称为源集群(source cluster),版本升级的“终点”被称为目标集群(target cluster)。
gpupgrade支持将Greenplum数据库从5版本升级到6版本。源集群和目标集群的最低版本要求分别为5.28.0和6.9.0。gpupgrade是基于PostgreSQL pg_upgrade(https://www.postgresql.org/docs/9.4/pgupgrade.html)构建的。pg_upgrade支持原地升级单个Postgres实例中的数据。gpupgrade在Greenplum master segment上运行pg_upgrade,并在primary segments上并行运行。
gpupgrade 生命周期
gpupgrade的生命周期分为五个阶段。请参阅图1。
图一 gpupgrade生命周期
1. 升级前:用户需要准备源集群(source cluster),在所有主机上安装gpupgrade和最新二进制文件。建议用户在这个阶段开始做升级计划,在停机时间前几周为升级做好准备。客户还应查看两个主要版本之间的catalog更改和服务器配置更改,以加快升级过程。
2. 初始化:升级程序将对源集群执行完整性检查,以验证其升级状态并初始化目标集群。在初始化期间,将对源集群磁盘空间和执行目录一致性进行检查。最后,源集群可用,目标集群停止。
3. 执行:在执行阶段,该程序将在primary segment和master segment instance上执行升级。gpupgrade还将把数据和配置文件复制到目标集群。在阶段结束时,源集群将停止,目标集群可用于执行测试。
4. 完成:此阶段将升级stand-by master和mirror segment instances。升级还将更新master实例的端口数据文件夹目标集群。在阶段结束时,源集群将停止,目标集群可用于验证。
5. 升级后:在最后阶段,建议用户执行验证脚本以验证升级后的集群的性能。客户需要停止gpupgrade hub和代理进程,并删除gpupgrade控制目录和已保存的源数据目录。在该阶段的最后,目标集群将启动并准备好使用。
gpupgrade停机时间
在初始化,执行和完成阶段中需要停机时间窗口。升级前和升级后活动可以在停机时间窗口之外执行。参见图1。
还原升级
如果需要,gpupgrade可以回滚到源集群。在不升级standby和mirror segements之前,可以实现回滚。用户可以在初始化期间/之后或执行期间/之后使用还原功能。一旦用户确认完成,则不能使用回滚功能。参见图1。
gpupgrade模式
gpupgrade升级可以使用两种模式运行,即复制和链接。请参阅图2以了解两种模式之间的区别。
图2:复制 VS 链接
gpupgrade可用性
gpupgrade程序已发布beta版。该程序不适合生产环境。
升级工具是开源的。gpupgrade 0.4.0发行版可在此处在开发环境上进行测试:https://github.com/greenplum-db/gpupgrade/releases/tag/0.4.0。
欢迎参与并提供宝贵的反馈意见,以迭代出更成功的升级工具。
领取专属 10元无门槛券
私享最新 技术干货