将您的SQL Server工作负载迁移到PostgreSQL –第1部分

目录

为什么要开源? 

从许可软件迁移到开源 

为什么选择PostgreSQL? 

竞争者 

SQL Server:历史记录,版本和版本 

PostgreSQL:历史,版本和版本 

根据您的需要选择合适的PostgreSQL版本 

生产工作负载

开发,测试,登台或试点 

本地与云 


为什么要开源? 

尽管毫无疑问,许可和专有数据库的功能和优势,但其严格的定价模式以及大型安装基础的较高的总体拥有成本(TCO)使得企业和中型企业都希望采用成本更低的开源解决方案。企业之所以回避开放源代码软件,主要是因为在出现任何重大问题时没有任何支持。开源数据库以更低的成本提供了相同甚至更好的功能。从商业数据库迁移到开源数据库可为企业在许可和支持方面节省大量成本。 

从许可软件迁移到开源 

诸如SQL ServerOracle之类的许可软件由其各自的供应商提供支持,并根据许可模型将其作为许可的一部分或单独提供支持。当数据库由于软件错误和漏洞,繁重的负载或其他硬件和网络问题而关闭时,它们会为您提供支持(至少是在法律上)。 

另一方面,如果将开源软件托管在服务器上,并且出现任何问题,则由您自己解决,则按原样提供开源软件。但是好消息是,有第三方公司为开源数据库提供支持。请注意,该软件本身仍可免费使用,价格仅用于支持。这样的一家公司EnterpriseDB提供了对开源PostgreSQL以及它自己的PostgreSQL分支的支持。 

云解决方案提供商还提供PostgreSQL作为PaaS产品。一种这样的产品是AWS Aurora(与PostgreSQL兼容)。该模型具有高可用性,并内置了按需付费的定价模型,最适合中小型企业。请注意,AWS还以大约一半的成本提供PostgreSQL作为RDS服务,但没有内置的高可用性。您还可以通过在云上运行的Linux实例中手动托管PostgreSQL实例,从而以更低的成本在云上运行PostgreSQL 

为什么选择PostgreSQL 

PostgreSQL是企业级的,功能丰富的开源数据库系统,它高度可靠且性能卓越,非常适合实时和任务关键型应用程序。直到十年前,MySQL一直是迁移到开放源数据库的企业的默认选择。自从被Oracle bin 2010收购以来,其发展路线就变得不确定,企业也开始远离它。 

MariaDBMySQL的一个开源分支,旨在延续MySQL的开源遗产,但实际上并没有在企业界起飞。必须有一种解决方案来填补空白,PostgreSQL成为可行的替代方案,并且已成为将数据库迁移到开源的企业的选择。根据2019年数据库引擎排名,PostgreSQL是第四受欢迎的数据库MariaDB是第14 

竞争者 

SQL Server:历史记录,版本和版本 

SQL ServerMicrosoft开发的关系数据库管理系统。它于1989年首次发布,此后一直在积极开发。截至20199月,最新的稳定版本是SQL Server2017。根据DB Engines排名SQL Server2019年第三大最受欢迎的数据库,也是2016年的DBMS 

它具有各种版本,例如EnterpriseStandardDeveloperExpressAzure等。SQL Server Express EditionSQL Server的缩减版免费版本,其中包括核心数据库引擎。尽管所支持的数据库或用户数量没有限制,但仅限于使用一个处理器,1 GB内存和10 GB数据库文件。 

SQL Server是一种专有的Microsoft软件,传统上仅在Windows操作系统上可用。但是从SQL Server 2017开始,它也可以在Linux上使用。还可从Amazon Web ServicesAWS),Microsoft AzureGoogle Cloud PlatformGCP)等云提供商的PaaS产品中获得该产品。 

有关更多信息,请访问SQL Server主页Wikipedia页面或DB Engines页面。 

PostgreSQL:历史,版本和版本 

PostgreSQL是最先进的开源对象关系数据库系统。它已经开发了30多年,由PostgreSQL全球开发小组管理。根据DB Engines排名PostgreSQL2019年第四大最受欢迎的数据库,也是2017年和2018年的年度DBMS 

PostgreSQL始于1982年,是Ingres数据库的分支,并于1996年首次发布。截至20199月,最新版本是PostgreSQL 11.5。这是一个非常成熟和稳定的产品,具有非常丰富的功能和工具集。除非另有特别说明,否则本文将讨论迁移到PostgreSQL 11.x的问题。 

PostgreSQL可以在LinuxFreeBSDOpenBSDmacOSWindows上使用,也可以从云服务提供商(如Amazon Web ServicesAWS),Microsoft AzureGoogle Cloud PlatformGCP))作为PaaS产品使用。 

要开始使用PostgreSQL,请访问其网站Wikipedia文章或DB Engines页面。

根据您的需要选择合适的PostgreSQL版本 

PostgreSQL是一个开放源代码数据库,并且可用范围广泛。首先要做的是确定在哪里托管PostgreSQL数据库。可用的选项有: 

  1. Linux基础架构上的本地托管
  2. Windows基础结构上的本地托管
  3. 使用IaaS进行云托管,例如运行Linux的AWS EC2 VM
  4. 使用IaaS的云托管,例如运行Windows的AWS EC2 VM
  5. 使用PaaS解决方案(如AWS RDS或Aurora)进行云托管。由于稳定性和经济性的考虑,这些解决方案几乎总是在Linux上运行。

接下来要做的是选择您的PostgreSQL版本。对于本地托管,经验法则是始终从最新的稳定版本(在撰写本文时为PostgreSQL 11.5)开始,然后继续升级到新发布的稳定版本(牢记支持生命周期)。像AWS这样的云提供商可以让您选择最近的三个或四个稳定版本,并花一些时间进行认证并提供最新的稳定版本。它们还允许您就地升级,以进行次要版本升级以及主要版本升级,并且停机时间最少。 

请查看功能列表页面以获取功能的版本比较。在注册之前,请查看其他云提供商的相关PostgreSQL提供页面以获取功能和限制。 

生产工作负载

PostgreSQLLinux上运行效果最好,因此请始终为您的生产工作负载选择Linux,以实现最佳性能,稳定性和高可用性。SQL Server通常在Windows上运行,如果您打算重用SQL Server硬件,则可能要在Windows上运行PostgreSQL。您很可能将无法执行此操作,因为在退出SQL Server数据库之前,必须先将PostgreSQL数据库实例与SQL Server数据库一起启动并并行运行一段时间。 

开发,测试,登台或试点 

对于开发和测试,您可以选择在本地或云基础架构上运行的LinuxWindows,这取决于最适合您组织的知识和团队的技能。 

这是节省成本的提示。您可以在Cloud中运行所有非生产PostgreSQL数据库,并在不需要时将其关闭以节省费用。例如,可以停止AWS EC2,直到重新启动实例后才对它们收费。AWS RDS不允许您在启动RDS实例后停止它,您只能终止实例。 

一个巧妙的技巧是对数据库进行备份,将备份移至S3存储桶,然后终止实例。以后恢复开发时,请启动新实例并从备份中还原。为避免在每次启动新数据库时更改代码中的数据库端点,可以创建一个指向当前数据库的DNS条目,并在代码和作业中使用DNS端点。启动新数据库时唯一需要更改的地方是DNS记录。  

这比一年四季在您的数据中心中安装物理服务器以及在硬件,电源和维护上的花费要便宜得多。 

本地与云 

 

内部部署

云IaaS

云PaaS

托管

PostgreSQL已安装在数据中心的服务器上

您启动云虚拟机(如AWS EC2)并安装PostgreSQL 

这是“数据库即服务”,无需安装。您选择启动参数并启动服务 

集群

需要手动集群设置 

需要手动集群设置 

集群是内置的,具体取决于服务提供的类型 

高可用性/自动故障转移

必须手动设置高可用性,负载平衡和复制。 

必须手动设置高可用性,负载平衡和复制。 

内置的高可用性取决于服务产品。例如,AWS Aurora提供高可用性,而普通的AWS RDS实例不提供。 

工具

您可以控制硬件,因此应该能够在服务器上运行所有PostgreSQL工具。 

您可以控制硬件,因此应该能够在服务器上运行所有PostgreSQL工具。 

云平台可能会限制您运行某些工具。例如,pgAgent在AWS Aurora中不可用 

调度

您可以使用pgAgent或其他第三方调度程序来调度服务器上的数据传输作业和维护作业。 

您可以使用pgAgent或其他第三方调度程序来调度服务器上的数据传输作业和维护作业。 

云提供商有自己的内置服务来安排作业。例如,AWS有其自己的调度服务,并且支持RDS或Aurora中的pgAgent。 

管理与监控

管理和监控应手动完成 

管理和监控应手动完成 

云平台会自动为您管理数据库,并提供GUI /门户以监视数据库的运行状况。例如,AWS CloudWatch 

支持

对本地安装的支持通常是组织的基础结构支持团队。一些第三方公司为本地安装提供支持。 

对本地安装的支持通常是组织的基础结构支持团队。一些第三方公司为Cloud IaaS安装提供支持。 

云提供商通过自动支持系统提供支持。 

备份与还原

备份和还原必须手动完成,或者需要设置自动作业。 

备份和还原必须手动完成,或者需要设置自动作业。 

大多数云提供商都提供自动备份和还原功能。例如,您可以设置自动备份,并通过AWS Console从备份中还原。 

成本

仅基础设施成本。如果您已经拥有硬件,那么这可能是三者中最便宜的选择。 

根据您选择的配置,像AWS EC2这样的Cloud VMs相对便宜。如果您选择使用第三方许可的软件进行监视,管理等,则可能需要花费额外的费用。 

Cloud PaaS通常很昂贵,因为它们具有许多高可用性和内置的其他几个功能。  

在谈论云提供商时,我总是从AWS提供示例,因为到目前为止,这只是我将数据库迁移到的云平台。这绝不是一个提供者对另一个提供者的认可。其他提供商也提供类似的产品,请访问其网站以了解有关其产品的更多信息。

下一篇: 将您的SQL Server工作负载迁移到PostgreSQL –第2部分

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 目标与需求: - 将原有的 SQL Server 数据库迁移PostgreSQL 数据库 - 保证数据迁移过程中数据的完整性和一致性 - 最小化升级过程对业务系统的影响 - 保证升级后的 PostgreSQL 数据库的性能和稳定性 2. 方案设计: (1)技术路线 a. 评估 SQL Server 数据库的结构和规模,确定 PostgreSQL 数据库的硬件配置和性能需求 b. 导出 SQL Server 数据库结构和数据,并将其转换为符合 PostgreSQL 标准的格式 c. 在 PostgreSQL 数据库中创建与 SQL Server 数据库相同的表结构和索引,并导入数据 d. 配置 PostgreSQL 数据库的连接、权限和安全性,并对其进行优化和调整,以保证其稳定性和性能 e. 修改应用程序的代码,确保其能够与新的 PostgreSQL 数据库正常交互 f. 对升级后的 PostgreSQL 数据库进行性能测试和负载测试,确保其能够满足业务需求 (2)流程 a. 评估 SQL Server 数据库的结构和规模,确定 PostgreSQL 数据库的硬件配置和性能需求 b. 导出 SQL Server 数据库结构和数据,并将其转换为符合 PostgreSQL 标准的格式 c. 在测试环境中创建与 SQL Server 数据库相同的表结构和索引,并导入数据 d. 配置 PostgreSQL 数据库的连接、权限和安全性,并对其进行优化和调整,以保证其稳定性和性能 e. 修改应用程序的代码,确保其能够与新的 PostgreSQL 数据库正常交互 f. 进行功能测试、性能测试和负载测试,确保升级后的 PostgreSQL 数据库能够满足业务需求 g. 完成测试后,进行正式部署并切换到新的 PostgreSQL 数据库 (3)其他具体内容或细节 a. 数据类型转换:SQL ServerPostgreSQL 支持的数据类型有所不同,需要将 SQL Server 中的数据类型转换为 PostgreSQL 支持的数据类型 b. 数据库引擎的差异:SQL ServerPostgreSQL 的数据库引擎有所不同,需要进行相应的调整和优化 c. 存储过程和触发器的转换:SQL ServerPostgreSQL 支持的存储过程和触发器也有所不同,需要进行相应的转换和调整 d. 数据迁移过程中的数据验证和校验:需要对数据迁移过程中的数据进行验证和校验,以保证数据的完整性和一致性 e. 备份和恢复机制的建立:需要建立 PostgreSQL 数据库的备份和恢复机制,以保

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值