Aurora(PostgreSQL)的升级

升级Aurora(PostgreSQL)

PostgreSQL每年进行一次主要版本升级,之后发布包括安全补丁、错误修复等的次要版本。主要版本发布后,将在5年后达到生命周期终止(EOL)。

即使是在Aurora(PostgreSQL)上,PostgreSQL的重要版本和次要版本也会稍晚发布。截至2020年4月,可以使用的版本从9.6到11.6。最新的PostgreSQL是12.2,所以它是稍旧的版本。

您可以在以下页面上查看有关AWS官方升级的信息。

    • Amazon Aurora PostgreSQL のデータベースエンジンの更新

 

    Amazon RDS の PostgreSQL DB エンジンのアップグレード

确认Amazon Aurora PostgreSQL的版本。

Aurora有两个版本:Aurora和数据库引擎。

数据库引擎的版本可以像通常一样通过以下方式确认,我们这次使用稍旧的版本(10.5)来尝试升级。

postgres=> SHOW SERVER_VERSION;
 server_version 
----------------
 10.5
(1 row)

您可以通过以下方式查看Aurora的下一个版本。

postgres=> SELECT AURORA_VERSION();
 aurora_version 
----------------
 2.1.1
(1 row)

此外,您可以在以下页面上查看Aurora和PostgreSQL之间的版本对应关系。
(虽然我不清楚知道Aurora的版本有什么好处。。。)

确认可以升级的版本。

您可以使用以下命令来确认是否可以升级Aurora。

aws rds describe-db-engine-versions --engine aurora-postgresql

如果是10.5版本的话,将会输出以下内容:
根据”AutoUpgrade”: true可以确认是否开启了自动升级。

另外,从10.5版本似乎可以升级到10.6至10.11版本。

        {
            "Engine": "postgres",
            "EngineVersion": "10.5",
            "DBParameterGroupFamily": "postgres10",
            "DBEngineDescription": "PostgreSQL",
            "DBEngineVersionDescription": "PostgreSQL 10.5-R1",
            "ValidUpgradeTarget": [
                {
                    "Engine": "postgres",
                    "EngineVersion": "10.6",
                    "Description": "PostgreSQL 10.6-R1",
                    "AutoUpgrade": true,
                    "IsMajorVersionUpgrade": false
                },
                {
                    "Engine": "postgres",
                    "EngineVersion": "10.7",
                    "Description": "PostgreSQL 10.7-R1",
                    "AutoUpgrade": false,
                    "IsMajorVersionUpgrade": false
                },
~省略~
                {
                    "Engine": "postgres",
                    "EngineVersion": "10.11",
                    "Description": "PostgreSQL 10.11-R1",
                    "AutoUpgrade": false,
                    "IsMajorVersionUpgrade": false
                },
                {
                    "Engine": "postgres",
                    "EngineVersion": "11.1",
                    "Description": "PostgreSQL 11.1-R1",
                    "AutoUpgrade": false,
                    "IsMajorVersionUpgrade": true
                },
~省略~
                {
                    "Engine": "postgres",
                    "EngineVersion": "11.6",
                    "Description": "PostgreSQL 11.6-R1",
                    "AutoUpgrade": false,
                    "IsMajorVersionUpgrade": true
                }
            ],
            "ExportableLogTypes": [
                "postgresql",
                "upgrade"
            ],
            "SupportsLogExportsToCloudwatchLogs": true,
            "SupportsReadReplica": true,
            "SupportedFeatureNames": [],
            "Status": "available"
        },

升级概述

实例的升级有以下两种类型。

    • メジャーバージョンのアップグレード

 

    マイナーバージョンのアップグレード

升级主要版本

从10.5升级到11.7等是一个主要版本的升级。
主要版本的升级是不兼容的,并且不受标准支持。
因此,需要构建另一个数据库集群,并使用pg_dump/pg_restore等工具进行迁移。

比如,我们可以考虑以下步骤。

1) 获取当前的快照。
2) 停止当前的集群。
3) 使用当前的快照创建新的Aurora集群。
4) 切换到Aurora的终端点。

由于应用程序写入数据会引发差异,因此需要停止应用程序。然而,这种方法会导致停机时间延长。如果想要缩短停机时间,可以在Aurora集群之间进行复制。

小版本的升级

・次のマイナーバージョンにアップグレードする場合、下位互換性が保たれます。例えば、11.6から11.7にアップグレードする場合です。
・アップグレードには、自動アップグレードと手動アップグレードの2つの方法があります。
・アップグレード時には、データベースが停止状態になります。
・拡張機能はアップグレードされません。拡張機能を更新するには、ALTER EXTENSION UPDATEのコマンドを実行する必要があります。

自动升级

在创建或修改DB实例时,如果启用了“自动进行小版本升级”或者当前版本低于推荐版本,将自动进行升级。
升级将在维护窗口期间进行。

由于自动升级会导致系统自行升级并停止运行,因此对于非停机系统,需要格外注意。

执行手动升级

手動升级可以选择在维护窗口期间进行,或者立即应用。如果选择立即应用,升级将尽快执行,尽管不会立即生效。这次我们在设置更改后几分钟内完成了升级。并没有停机几分钟,而是在几分钟后完成了升级,实际的停机时间我们没有确认过。

升级步骤如下所示。

以下是從控制台升級次要版本的步驟。本次將嘗試從10.5升級到10.7的次要版本升級。

在控制台中选择要执行升级的数据库,然后选择“更改”。

image.png

请选择要使用的「DB引擎版本」进行更改。此次选项范围为10.6至10.11。

image.png

接下来,您可以在”更改计划”中选择在维护窗口期间执行还是立即应用。

image.png

返回数据库页面后,状态发生变化,变为等待升级的状态。

image.png

在执行升级后,当确认版本时,可以确认已经升级到了10.7。

postgres=> SHOW SERVER_VERSION;
 server_version 
----------------
 10.7
(1 row)

当查看事件时,“Database cluster has been patched”被输出如下所示。

image.png

最后,扩展功能不会自动升级,需要手动进行升级,根据需要进行升级。
要检查当前的扩展功能,请按照以下方法执行。

postgres=> select * from pg_available_extensions;
             name             | default_version | installed_version |                                                       comment                                                       
------------------------------+-----------------+-------------------+---------------------------------------------------------------------------------------------------------------------
 dblink                       | 1.2             |                   | connect to other PostgreSQL databases from within a database
 pg_repack                    | 1.4.3           |                   | Reorganize tables in PostgreSQL databases with minimal locks
 hstore                       | 1.4             |                   | data type for storing sets of (key, value) pairs
 postgis_tiger_geocoder       | 2.4.4           |                   | PostGIS tiger geocoder and reverse geocoder
 pg_visibility                | 1.2             |                   | examine the visibility map (VM) and page-level visibility info
 orafce                       | 3.6             |                   | Functions and operators that emulate a subset of functions and packages from the Oracle RDBMS
 prefix                       | 1.2.0           |                   | Prefix Range module for PostgreSQL
 isn                          | 1.1             |                   | data types for international product numbering standards
~省略~

如果安装版本比默认版本旧的话,请进行升级(本次情况除外)。
执行以下命令进行升级。

ALTER EXTENSION [拡張名] UPDATE TO [新しいバージョン];

这次我们选择了通过控制台进行升级,但也可以通过AWS CLI和RDS API进行修改。

请参考

    • Amazon Aurora PostgreSQL のデータベースエンジンの更新

 

    • Amazon RDS の PostgreSQL DB エンジンのアップグレード

 

    Aurora PostgreSQL の PostgreSQL DB エンジンのアップグレード