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

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

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

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

現在のソースバージョン

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

Aurora PostgreSQL (Babelfish) Aurora PostgreSQL (Babelfish)

15.8 (3.7.0)

16.4 (4.3.0)

15.7 (3.6.0)

16.4 (4.3.0)、16.3 (4.2.0)

15.6 (3.5.0)

16.4 (4.3.0)、16.3 (4.2.0)、16.2 (4.1.0)

15.5 (3.4.0)

16.4 (4.3.0)、16.3 (4.2.0)、16.2 (4.1.0)、16.1 (4.0.0)

15.4 (3.3.0)

16.4 (4.3.0)、16.3 (4.2.0)、16.2 (4.1.0)、16.1 (4.0.0)

15.3 (3.2.0)

16.4 (4.3.0)、16.3 (4.2.0)、16.2 (4.1.0)、16.1 (4.0.0)

15.2 (3.1.0)

16.4 (4.3.0)、16.3 (4.2.0)、16.2 (4.1.0)、16.1 (4.0.0)

14.13 (2.10.0)

16.4 (4.3.0)

15.8 (3.7.0)

14.12 (2.9.0)

16.4 (4.3.0)、16.3 (4.2.0)

15.8 (3.7.0)、15.7 (3.6.0)

14.11 (2.8.0)

16.4 (4.3.0)、16.3 (4.2.0)、16.2 (4.1.0)

15.8 (3.7.0)、15.7 (3.6.0)、15.6 (3.5.0)

14.10 (2.7.0)

16.4 (4.3.0)、16.3 (4.2.0)、16.2 (4.1.0)、16.1 (4.0.0)

15.8 (3.7.0)、15.7 (3.6.0)、15.6 (3.5.0)、15.5 (3.4.0)

14.9 (2.6.0)

16.4 (4.3.0)、16.3 (4.2.0)、16.2 (4.1.0)、16.1 (4.0.0)

15.8 (3.7.0)、15.7 (3.6.0)、15.6 (3.5.0)、15.5 (3.4.0)、15.4 (3.3.0)

14.8 (2.5.0)

16.4 (4.3.0)、16.3 (4.2.0)、16.2 (4.1.0)、16.1 (4.0.0)

15.8 (3.7.0)、15.7 (3.6.0)、15.6 (3.5.0)、15.5 (3.4.0)、15.4 (3.3.0)、15.3 (3.2.0)

14.7 (2.4.0)

16.4 (4.3.0)、16.3 (4.2.0)、16.2 (4.1.0)、16.1 (4.0.0)

15.8 (3.7.0)、15.7 (3.6.0)、15.6 (3.5.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)

16.4 (4.3.0)、16.3 (4.2.0)、16.2 (4.1.0)、16.1 (4.0.0)

15.8 (3.7.0)、15.7 (3.6.0)、15.6 (3.5.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.3.0)

14.6 (2.3.0)

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" } }

詳細については、「Amazon Aurora での 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