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的次要版本升級。
在控制台中选择要执行升级的数据库,然后选择“更改”。
请选择要使用的「DB引擎版本」进行更改。此次选项范围为10.6至10.11。
接下来,您可以在”更改计划”中选择在维护窗口期间执行还是立即应用。
返回数据库页面后,状态发生变化,变为等待升级的状态。
在执行升级后,当确认版本时,可以确认已经升级到了10.7。
postgres=> SHOW SERVER_VERSION;
server_version
----------------
10.7
(1 row)
当查看事件时,“Database cluster has been patched”被输出如下所示。
最后,扩展功能不会自动升级,需要手动进行升级,根据需要进行升级。
要检查当前的扩展功能,请按照以下方法执行。
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 エンジンのアップグレード