Amazon Web Services ブログ

Amazon RDS for PostgreSQL – 新マイナーバージョン、ロジカルレプリケーション、 DMSサポートなどを追加 –

Amazon Relational Database Service (RDS)は構築や運用管理、スケーリングなどを行うプロセスを簡単に行えるクラウド上のリレーショナルデータベースです。現在6つのデータベースエンジン(Amazon Aurora, Oracle, Microsoft SQL Server, PostgreSQL, MySQL,  MariaDB) をサポートしており、RDSはクラウド上で動作するアプリケーションの基本となるサービスとなりました。

2013年後半にPostgreSQLサポートを発表し、PostgreSQLの新バージョンや新機能を追加し続けてきました。

本日、Amazon RDS for PostgreSQLに以下の新機能を追加しました。

  • 新マイナーバージョン – 既存のRDS for PostgreSQLデータベースインスタンスは新しいマイナーバージョンにアップグレード可能です
  • ロジカルレプリケーション – RDS for PostgreSQLがロジカルレプリケーションに対応しました。
  • DMSサポート – ロジカルレプリケーション機能によりRDS for PostgreSQLデータベースインスタンスをAWS Database Migration Serviceのソースデータベースとして利用可能になりました
  • Event Trigger – 新しいバージョンのPostgreSQLでデータベースインスタンスレベルでevent triggerをサポートしました
  • RAM Disk Size – RDS for PostgreSQLでRAM diskのサイズをコントロール可能になりました

詳しくご紹介します

 

新マイナーバージョン

PostgreSQL バージョン9.3.14, 9.4.9,  9.5.4をサポートしました。これらのバージョンはリリースノートに記載されているように機能向上やbug fixが行われています。RDSコンソールAWS Command Line Interface (CLI)から今お使いのデータベースインスタンスをアップグレード可能です。9.5.2から9.5.4にコンソールを利用してアップグレードする例です:

rds_pg_mod_954

次回のMaintenance Windowまでアップグレードを行ないたくない場合はApply immediatelyにチェックが入っていないか確認をしてください。

command lineからアップグレードを行う例を以下に示します。(私のスキルが現役ということをお伝えするために、今回のポスト中でコマンドラインを利用した例を掲載しています)

$ aws rds modify-db-instance –region us-west-2 \
–db-instance-identifier “pg95” \
–engine-version “9.5.4” \
–apply-immediately

アップグレードの進捗を確認するには

$ aws rds describe-events –region us-west-2 \
–source-type db-instance –source-identifier “pg95” \
–duration 10 –output table

以下の例はインスタンスのアップグレードが完了した場合の出力です

||+-------------------------------------------------+||
 || Events ||
 |+--------------------+------------------------------+|
 || Date | 2016-09-13T00:07:54.547Z ||
 || Message | Database instance patched ||
 || SourceIdentifier | pg95 ||
 || SourceType | db-instance ||
 |+--------------------+------------------------------+|
 ||| EventCategories |||
 ||+-------------------------------------------------+||
 ||| maintenance |||
 ||+-------------------------------------------------+||

データベースインスタンス全体のイベントを監視している場合、RDSがパッチを適用する前後でバックアップを取得している事を確認出来ます。このバックアップはコンソールやコマンドライン経由で参照可能です。

$ aws rds describe-db-snapshots –region us-west-2 \
–db-instance-identifier “pg95” \
–snapshot-type automated –output table

出力は以下のようになります。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 | DescribeDBSnapshots
 +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 || DBSnapshots
 |+------------------+-------------------+-----------------------+----------------------------+------------+-----------+----------------+---------------------------+-------+---------------------+-----------------+-----------------------+-
 || AllocatedStorage | AvailabilityZone | DBInstanceIdentifier | DBSnapshotIdentifier | Encrypted | Engine | EngineVersion | InstanceCreateTime | Iops | LicenseModel | MasterUsername | OptionGroupName |
 |+------------------+-------------------+-----------------------+----------------------------+------------+-----------+----------------+---------------------------+-------+---------------------+-----------------+-----------------------+-
 || 100 | us-west-2b | pg95 | rds:pg95-2016-09-12-23-22 | False | postgres | 9.5.2 | 2016-09-12T23:15:07.999Z | 1000 | postgresql-license | root | default:postgres-9-5 |
 || 100 | us-west-2b | pg95 | rds:pg95-2016-09-13-00-01 | False | postgres | 9.5.2 | 2016-09-12T23:15:07.999Z | 1000 | postgresql-license | root | default:postgres-9-5 |
 || 100 | us-west-2b | pg95 | rds:pg95-2016-09-13-00-07 | False | postgres | 9.5.4 | 2016-09-12T23:15:07.999Z | 1000 | postgresql-license | root | default:postgres-9-5 |
 |+------------------+-------------------+-----------------------+----------------------------+------------+-----------+----------------+---------------------------+-------+---------------------+-----------------+-----------------------+-

 

ロジカルレプリケーション

Amazon RDS for PostgreSQLがロジカルレプリケーションをサポートしました。これにより、Amazon RDS for PostgreSQLデータベースインスタンスからRDS外のcomplementary logical decoding機能をサポートしたデータベースへストリーミングレプリケーションを行うことが出来るようになります(PostgreSQLはbyte/blockベースのPhysical Streaming Replicationもサポートしています)。レプリケーションがlogical slotを経由して行われます。それぞれのslotは確実に1回だけ再実行される変更のストリームを含んでいます(詳細はPostgreSQLドキュメント中のLogical Decoding Slotsをご参照ください)。

RDS外のデータベースへロジカルレプリケーションを設定するために、PostgreSQL のユーザアカウントにrds_superuserrds_replicationロールが付与されているか確認してください。その他にも、設定するデータベースインスタンスに紐付けられているデータベースオプショングループ中のrds.logical_replicationパラメータを1に設定し再起動を行う必要があります。このパラメータが適用されると、幾つかのPostgreSQLのパラメータがレプリケーションを行うために設定が行われます。

roleとデータベースインスタンスの設定が行われると、logical slotの作成が可能になりRDS外のデータベース(もしくは他のクライアントから)からslot内のレコードを読み込んで処理出来るようになります。例えば、pg_recvlogicalコマンドでデータベースインスタンスに接続し、replication slotからストリームデータを読み込んでローカルファイルに出力出来ます。

さらに詳細は、 Amazon RDS for PostgreSQLユーザガイド内のLogical Replication for PostgreSQLを参照してください。

 

DMSサポート

AWS Database Migration ServiceはAWSへのデータベースマイグレーションをサポートするサービスです。ロジカルレプリケーションと一緒に使用する事によりPostgreSQLデータベース(RDSやご自身で管理されているデータベースなど)から他のオープンソースデータベースやコマーシャルデータベースへマイグレーションを行うことが可能になりました。マイグレーションを行うために先程説明したように事前に logical replication slotを設定する必要があります。

 

Event Triggers

新しいPostgreSQLバージョン (9.4.9+ and 9.5.4+)ではデータベースレベルでevent triggerをサポートしています。このトリガーは特定のテーブル外に存在するため、create, modify, delete tableといったDDLレベルイベントを広範囲にキャプチャー可能です(トリガーの全てのイベントのリストはこちらに掲載されています)。さらに詳細や実装のサンプルはユーザガイド内のEvent Triggers for PostgreSQLを参照してください。

 

RAM Disk Size

rds.pg_stat_ramdisk_sizeを使用してPostgreSQLのstats_temp_directoryで利用されるメモリ量をコントロール可能になりました。このディレクトリはパフォーマンス情報などの一時的な統計情報に利用されます。メモリを多く割り当てることでI/Oを軽減しパフォーマンスを向上出来ます。

 

Available Now

今までご紹介した新しいバージョンや新機能は本日からご利用頂けます。

Jeff; (翻訳は星野が担当しました。原文はこちら。)