Babelfish クラスターを新しいメジャーバージョンにアップグレードする - Amazon Aurora

Babelfish クラスターを新しいメジャーバージョンにアップグレードする

Babelfish の新しいバージョンは、バージョン 13.4 以降の Aurora PostgreSQL データベースエンジンのいくつかの新しいリリースで使用可能になります。Babelfish の新しいリリースごとに、独自のバージョン番号があります。Aurora の PostgreSQL と同様に、Babelfish は、バージョンについて major.minor.patch という命名方式を使用します。例えば、Babelfish の最初のリリースである Babelfish バージョン 1.0.0 は、Aurora PostgreSQL 13.4.0 の一部として使用可能になりました。

Babelfish は個別のインストールプロセスを必要としません。Babelfish for Aurora PostgreSQL DB クラスターの作成 で説明されているように、[Turn on Babelfish] (Babelfish を有効にする) は、Aurora PostgreSQL DB クラスターを作成するときに選択するオプションです。

同様に、サポートしている Aurora DB クラスターとは独立して Babelfish をアップグレードすることはできません。既存の Babelfish for Aurora PostgreSQL DB クラスターを新しいバージョンの Babelfish にアップグレードするには、Aurora PostgreSQL DB クラスターを、使用したい Babelfish のバージョンをサポートする新しいバージョンにアップグレードします。アップグレードの手順は、Babelfish デプロイをサポートしている Aurora PostgreSQL のバージョンによって次のように異なります。

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

Aurora PostgreSQL 15.2 バージョンにアップグレードする前に、以下の Aurora PostgreSQL バージョンを、Aurora PostgreSQL 14.6 以降のバージョンにアップグレードする必要があります。

  • Aurora PostgreSQL 13.8 以上のすべてのバージョン

  • Aurora PostgreSQL 13.7.1 以上のすべてのマイナーバージョン

  • Aurora PostgreSQL 13.6.4 以上のすべてのマイナーバージョン

Aurora PostgreSQL 14.6 以降のバージョンを、Aurora PostgreSQL 15.2 以降にアップグレードできます。

Aurora PostgreSQL DB クラスターを新しいメジャーバージョンにアップグレードするには、いくつかの準備作業が必要です。詳細については、「メジャーバージョンのアップグレードを実施する方法」を参照してください。Babelfish for Aurora PostgreSQL DB クラスターを正常にアップグレードするには、新しい Aurora PostgreSQL バージョン用のカスタム DB クラスターパラメータグループを作成する必要があります。この新しいパラメータグループには、アップグレードするクラスターと同じ Babelfish パラメータ設定が含まれている必要があります。詳細およびメジャーバージョンアップグレードのソースとターゲットの表については、「Babelfish を新しいメジャーバージョンにアップグレードする」を参照してください。

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

マイナーバージョンとパッチでは、アップグレード用に新しい DB クラスターパラメータグループを作成する必要はありません。マイナーバージョンとパッチは、自動適用か手動適用かにかかわらず、マイナーバージョンアップグレードプロセスを使用できます。詳細およびバージョンのソースとターゲットの表については、「Babelfish を新しいマイナーバージョンにアップグレードする」を参照してください。

注記

メジャーアップグレードまたはマイナーアップグレードを実行する前に、保留中のすべてのメンテナンスタスクを Babelfish for Aurora PostgreSQL クラスターに適用してください。

Babelfish を新しいマイナーバージョンにアップグレードする

新しいマイナーバージョンには、下位互換性のある変更のみが含まれます。パッチバージョンには、リリース後にマイナーバージョンに追加された重要な修正が含まれています。例えば、Aurora PostgreSQL 13.4 の最初のリリースのバージョンラベルは Aurora PostgreSQL 13.4.0 でした。Aurora PostgreSQL 13.4.1、13.4.2、13.4.4 など、そのマイナーバージョン用のいくつかのパッチがこれまでにリリースされています。Aurora PostgreSQL の各バージョンで利用できるパッチは、そのバージョンの Aurora PostgreSQL リリースノートの上部にある [Patch releases] (パッチリリース) リストで確認できます。詳細については、「Aurora PostgreSQL リリースノート」の「PostgreSQL 14.3」を参照してください。

Aurora PostgreSQL DB クラスターに [Auto minor version upgrade] (自動マイナーバージョンアップグレード) オプションが設定されている場合、Babelfish for Aurora PostgreSQL DB クラスターは、クラスターのメンテナンスウィンドウ中に自動的にアップグレードされます。自動マイナーバージョンアップグレード (AMVU) とその使用方法については、「 Aurora DB クラスターのマイナーバージョン自動アップグレード」を参照してください。クラスターが AMVU を使用していない場合、メンテナンスタスクに応答するか、新しいバージョンを使用するようにクラスターを変更することによって、Babelfish for Aurora PostgreSQL DB クラスターを新しいマイナーバージョンに手動でアップグレードできます。

インストールする Aurora PostgreSQL バージョンを選択し、AWS Management Console で既存の Aurora PostgreSQL DB クラスターを表示すると、バージョンには major.minor の桁のみが表示されます。例えば、Aurora PostgreSQL 13.4 を搭載した既存の Babelfish for Aurora PostgreSQL DB クラスターのコンソールにある次の画像では、クラスターを Aurora PostgreSQL の新しいマイナーリリースであるバージョン 13.7 にアップグレードすることを推奨しています。

Babelfish と共に Aurora PostgreSQL DB クラスターのマイナーバージョンアップグレードが可能です。

パッチレベルを含む完全なバージョンの詳細を取得するには、aurora_version Aurora PostgreSQL 関数を使用して、Aurora PostgreSQL DB クラスターにクエリできます。詳細については、「Aurora PostgreSQL 関数のリファレンス」の「aurora_version」を参照してください。To use the PostgreSQL port to query for version information プロシージャでの関数の使用例については、「Babelfish のバージョンの確認」を参照してください。

次の表は、Aurora PostgreSQL と Babelfish のバージョン、およびマイナーバージョンアップグレードプロセスをサポートできる利用可能なターゲットバージョンを示しています。

現在のソースバージョン

最新のアップグレードターゲット

その他の利用可能なアップグレードバージョン

Aurora PostgreSQL Babelfish Aurora PostgreSQLBabelfish Babelfish オプションを伴う Aurora PostgreSQL バージョン

15.4

3.3.0

15.5

3.4.0

15.3.2

3.2.1

15.5

3.4.0

15.4

15.2.4

3.1.3

15.5

3.4.0

15.4

15.3

14.9.1

2.6.0

14.10

2.7.0

14.8.2

2.5.1

14.10

2.7.0

14.9.1

14.7.4

2.4.3

14.10

2.7.0

14.9.1

14.8.2

14.6.4

2.3.3

14.10

2.7.0

14.9.1

14.8.2

14.7.4

14.5.3

2.2.3

14.10

2.7.0

14.9.1

14.8.2

14.7.4

14.6.4

14.3.1

2.1.1

14.6

2.3.0

14.3.0

2.1.0

14.6

2.3.0

14.3.1

13.8

1.4.0

13.9

1.5

13.7.1

1.3.1

13.9

1.5

13.8

13.7.0

1.3.0

13.9

1.5

13.7.1

13.6.4

1.2.4

13.9

1.5

13.7

13.6.3

1.2.1

13.9

1.5

13.7

13.6.4

13.6.2

1.2.1

13.9

1.5

13.7

13.6.4

13.6.1

1.2.0

13.9

1.5

13.7

13.6.4

13.6.0

1.2.0

13.9

1.5

13.7

13.6.4

13.5

1.1.0

13.9

1.5

13.7

13.6

13.4

1.0.0

13.9

1.5

13.7

13.6

13.5

Babelfish を新しいメジャーバージョンにアップグレードする

メジャーバージョンアップグレードの場合、まず、Babelfish for Aurora PostgreSQL DB クラスターをメジャーバージョンアップグレードをサポートするバージョンにアップグレードする必要があります。これを実現するには、DB クラスターにパッチアップデートまたはマイナーバージョンアップグレードを適用します。詳細については、「Babelfish を新しいマイナーバージョンにアップグレードする」を参照してください。

次の表は、メジャーバージョンアップグレードをサポートできる Aurora PostgreSQL のバージョンと Babelfish のバージョンを示しています。

現在のソースバージョン

使用可能な最新のアップグレードターゲット

その他の使用可能なバージョン (マイナーバージョンアップグレード)

Aurora PostgreSQL Babelfish Aurora PostgreSQLBabelfish Aurora PostgreSQL のバージョン (Babelfish のバージョン)

15.5

3.4.0

16.1

4.0.0

15.4

3.3.0

16.1

4.0.0

15.3

3.2.0

16.1

4.0.0

15.2

3.1.0

16.1

4.0.0

14.10

2.7.0

15.5

3.4.0

14.9

2.6.0

15.5

3.4.0

15.4 (3.3.0)

14.8

2.5.0

15.5

3.4.0

15.4 (3.3.0)

15.3 (3.2.0)

14.7

2.4.0

15.5

3.4.0

15.4 (3.3.0)

15.3 (3.2.0)

15.2 (3.1.0)

14.6

2.3.0

15.5

3.4.0

15.4 (3.3.0)

15.3 (3.2.0)

15.2 (3.1.0)

13.9

1.5.0

14.6

2.3.0

13.8

1.4.0

14.6

2.3.0

13.7.1

1.3.1

14.6

2.3.0

13.8 (1.4)

13.6.4

1.2.2

14.6

2.3.0

13.8 (1.4)

13.7 (1.3)

Babelfish を新しいメジャーバージョンにアップグレードする前に

アップグレードには短時間の停止が必要な場合があります。そのため、メンテナンス期間中、または使用率の低い時間帯にアップグレードを実行またはスケジュールすることをお勧めします。

メジャーバージョンアップグレードを実行する前に

  1. Babelfish のバージョンの確認」で概説されているコマンドを使用して、既存の Aurora PostgreSQL DB クラスターの Babelfish のバージョンを識別します。Aurora PostgreSQL のバージョンと Babelfish のバージョンの情報は PostgreSQL によって処理されるため、「To use the PostgreSQL port to query for version information」プロシージャに詳述されているステップに従って詳細を確認してください。

  2. お使いのバージョンがメジャーバージョンアップグレードをサポートしているかどうかを確認してください。メジャーバージョンアップグレード機能をサポートするバージョンのリストについては、「Babelfish を新しいマイナーバージョンにアップグレードする」を参照して、アップグレード前の必要なタスクを実行してください。

    例えば、Babelfish バージョンが Aurora PostgreSQL 13.5 DB クラスターで実行されていて、Aurora PostgreSQL 15.2 にアップグレードする場合は、まず、すべてのマイナーリリースとパッチを適用して、クラスターを Aurora PostgreSQL 14.6 以降にアップグレードします。クラスターのバージョンが 14.6 以降になったら、メジャーバージョンアップグレードプロセスを続行します。

  3. バックアップとして、現在の Babelfish DB クラスターの手動スナップショットを作成します。バックアップにより、クラスターを Aurora PostgreSQL バージョン、Babelfish バージョンに復元し、すべてのデータをアップグレード前の状態に復元できます。詳細については、「DB クラスタースナップショットの作成」を参照してください。このクラスターをアップグレード前の状態に復元する場合は、既存のカスタム DB クラスターパラメータグループを再び使用できるように残しておいてください。詳細については、「DB クラスターのスナップショットからの復元」および「パラメータグループに関する考慮事項」を参照してください。

  4. ターゲット Aurora PostgreSQL DB バージョン用にカスタム DB クラスターのパラメータグループを準備します。現在の Babelfish for Aurora PostgreSQL DB クラスターから Babelfish のパラメータの設定を複製します。Babelfish のすべてのパラメータのリストについては、「Babelfish の DB クラスターパラメータグループ設定」を参照してください。メジャーバージョンアップグレードの場合、次のパラメータにはソース DB クラスターと同じ設定が必要です。アップグレードを成功させるには、すべての設定が同じである必要があります。

    • rds.babelfish_status

    • babelfishpg_tds.tds_default_numeric_precision

    • babelfishpg_tds.tds_default_numeric_scale

    • babelfishpg_tsql.database_name

    • babelfishpg_tsql. default_locale

    • babelfishpg_tsql.migration_mode

    • babelfishpg_tsql.server_collation_name

    警告

    新しい Aurora PostgreSQL バージョンのカスタム DB クラスターパラメータグループの Babelfish パラメータの設定が、アップグレードするクラスターのパラメータ値と一致しない場合、ModifyDBCluster 操作は失敗します。InvalidParameterCombination エラーメッセージが AWS Management Console に、または modify-db-cluster AWS CLI コマンドの出力に表示されます。

  5. AWS Management Console または AWS CLI コマンドを使用して、カスタム DB クラスターパラメータグループを作成します。アップグレードする Aurora PostgreSQL のバージョンに対応する Aurora PostgreSQL ファミリーを選択します。

    ヒント

    パラメータグループは AWS リージョン レベルで管理されます。AWS CLI で作業する場合、コマンドで --region を指定する代わりに、デフォルトのリージョンで設定できます。AWS CLI の使用の詳細については、AWS Command Line Interface ユーザーガイドの「クイックセットアップ」を参照してください。

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

  1. Aurora PostgreSQL DB クラスターを新しいメジャーバージョンにアップグレードします。詳細については、「Aurora PostgreSQL エンジンを新しいメジャーバージョンにアップグレードする」を参照してください。

  2. クラスターのライターインスタンスを再起動して、パラメータ設定を有効にします。

新しいメジャーバージョンにアップグレードした後

新しい Aurora PostgreSQL バージョンへのメジャーバージョンアップグレードの後、IDENTITY 列のあるテーブルの IDENTITY 値がアップグレード前の値よりも大きくなる (+32) 場合があります。その結果、このようなテーブルに次の行が挿入されると、生成された ID 列の値が +32 の数値にジャンプし、そこからシーケンスを開始します。この条件が Babelfish DB クラスターの機能に悪影響を及ぼすことはありません。ただし、必要に応じて、列の最大値に基づいてシーケンスオブジェクトをリセットできます。そのためには、sqlcmd または別の SQL Server クライアントを使用して、Babelfish ライターインスタンスの T-SQL ポートに接続します。詳細については、「SQL Server クライアントを使用した DB クラスターへの接続」を参照してください。

sqlcmd -S bfish-db.cluster-123456789012.aws-region.rds.amazonaws.com,1433 -U sa -P ******** -d dbname

接続したら、次の SQL コマンドを使用して、関連するシーケンスオブジェクトのシードに使用できるステートメントを生成します。この SQL コマンドは、単一データベースと複数データベースの両方の Babelfish 構成で機能します。これら 2 つのデプロイモデルの詳細については、「1 つのデータベースまたは複数のデータベースでの babelfish の使用」を参照してください。

DECLARE @schema_prefix NVARCHAR(200) = '' IF current_setting('babelfishpg_tsql.migration_mode') = 'multi-db' SET @schema_prefix = db_name() + '_' SELECT 'SELECT setval(pg_get_serial_sequence(''' + @schema_prefix + schema_name(tables.schema_id) + '.' + tables.name + ''', ''' + columns.name + '''),(select max(' + columns.name + ') FROM ' + schema_name(tables.schema_id) + '.' + tables.name + ')); 'FROM sys.tables tables JOIN sys.columns columns ON tables.object_id = columns.object_id WHERE columns.is_identity = 1 GO

クエリによって一連の SELECT ステートメントが生成されます。これらを実行して、IDENTITY の最大値をリセットし、ギャップを埋めることができます。以下は、Babelfish クラスターで実行されているサンプルの SQL Server データベース Northwind を使用した場合の出力を示しています。

-------------------------------------------------------- SELECT setval(pg_get_serial_sequence('northwind_dbo.categories', 'categoryid'),(select max(categoryid) FROM dbo.categories)); SELECT setval(pg_get_serial_sequence('northwind_dbo.orders', 'orderid'),(select max(orderid) FROM dbo.orders)); SELECT setval(pg_get_serial_sequence('northwind_dbo.products', 'productid'),(select max(productid) FROM dbo.products)); SELECT setval(pg_get_serial_sequence('northwind_dbo.shippers', 'shipperid'),(select max(shipperid) FROM dbo.shippers)); SELECT setval(pg_get_serial_sequence('northwind_dbo.suppliers', 'supplierid'),(select max(supplierid) FROM dbo.suppliers)); (5 rows affected)

ステートメントを 1 つずつ実行して、シーケンス値をリセットします。

例: Babelfish DB クラスターをメジャーリリースにアップグレードする

この例では、Babelfish バージョン 1.2.2 を実行している Aurora PostgreSQL 13.6.4 DB クラスターを Aurora PostgreSQL 14.6 にアップグレードする方法を説明する一連の AWS CLI コマンドを見つけることができます。まず、Aurora PostgreSQL 14 用のカスタム DB クラスターパラメータグループを作成します。次に、Aurora PostgreSQL バージョン 13 のソースの値と一致するようにパラメータ値を変更します。最後に、ソースクラスターを変更して、アップグレードを実行します。詳細については、「Babelfish の DB クラスターパラメータグループ設定」を参照してください。このトピックでは、AWS Management Console を使用してアップグレードを実行する方法についても説明しています。

create-db-cluster-cluster-parameter-group CLI コマンドを使用して、新しいバージョン用の DB クラスターパラメータグループを作成します。

Linux、macOS、Unix の場合:

aws rds create-db-cluster-parameter-group \ --db-cluster-parameter-group-name docs-lab-babelfish-apg-14 \ --db-parameter-group-family aurora-postgresql14 \ --description 'New custom parameter group for upgrade to new major version' \ --region us-west-1

このコマンドを発行すると、カスタム DB クラスターパラメータグループが AWS リージョン に作成されます。以下のような出力が表示されます。

{ "DBClusterParameterGroup": { "DBClusterParameterGroupName": "docs-lab-babelfish-apg-14", "DBParameterGroupFamily": "aurora-postgresql14", "Description": "New custom parameter group for upgrade to new major version", "DBClusterParameterGroupArn": "arn:aws:rds:us-west-1:111122223333:cluster-pg:docs-lab-babelfish-apg-14" } }

詳細については、「DB クラスターのパラメータグループの作成」を参照してください。

modify-db-cluster-parameter-group CLI コマンドを使用して、ソースクラスターと一致するように設定を変更します。

Windows の場合:

aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name docs-lab-babelfish-apg-14 ^ --parameters "ParameterName=rds.babelfish_status,ParameterValue=on,ApplyMethod=pending-reboot" ^ "ParameterName=babelfishpg_tds.tds_default_numeric_precision,ParameterValue=38,ApplyMethod=pending-reboot" ^ "ParameterName=babelfishpg_tds.tds_default_numeric_scale,ParameterValue=8,ApplyMethod=pending-reboot" ^ "ParameterName=babelfishpg_tsql.database_name,ParameterValue=babelfish_db,ApplyMethod=pending-reboot" ^ "ParameterName=babelfishpg_tsql.default_locale,ParameterValue=en-US,ApplyMethod=pending-reboot" ^ "ParameterName=babelfishpg_tsql.migration_mode,ParameterValue=single-db,ApplyMethod=pending-reboot" ^ "ParameterName=babelfishpg_tsql.server_collation_name,ParameterValue=sql_latin1_general_cp1_ci_as,ApplyMethod=pending-reboot"

レスポンスは次の例のようになります。

{ "DBClusterParameterGroupName": "docs-lab-babelfish-apg-14" }

modify-db-cluster CLI コマンドを使用して、新しいバージョンと新しいカスタム DB クラスターパラメータグループを使用するようにクラスターを変更します。また、次のサンプルに示されているように、--allow-major-version-upgrade 引数を指定します。

aws rds modify-db-cluster \ --db-cluster-identifier docs-lab-bfish-apg-14 \ --engine-version 14.6 \ --db-cluster-parameter-group-name docs-lab-babelfish-apg-14 \ --allow-major-version-upgrade \ --region us-west-1 \ --apply-immediately

reboot-db-instance CLI コマンドを使用して、クラスターのライターインスタンスを再起動し、パラメータ設定を有効にします。

aws rds reboot-db-instance \ --db-instance-identifier docs-lab-bfish-apg-14-instance-1\ --region us-west-1