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 を新しいメジャーバージョンにアップグレードする前に
アップグレードには短時間の停止が必要な場合があります。そのため、メンテナンス期間中、または使用率の低い時間帯にアップグレードを実行またはスケジュールすることをお勧めします。
メジャーバージョンアップグレードを実行する前に
「Babelfish のバージョンの確認」で概説されているコマンドを使用して、既存の Aurora PostgreSQL DB クラスターの Babelfish のバージョンを識別します。Aurora PostgreSQL のバージョンと Babelfish のバージョンの情報は PostgreSQL によって処理されるため、「To use the PostgreSQL port to query for version information」プロシージャに詳述されているステップに従って詳細を確認してください。
-
お使いのバージョンがメジャーバージョンアップグレードをサポートしているかどうかを確認してください。メジャーバージョンアップグレード機能をサポートするバージョンのリストについては、「Babelfish を新しいマイナーバージョンにアップグレードする」を参照して、アップグレード前の必要なタスクを実行してください。
例えば、Babelfish バージョンが Aurora PostgreSQL 13.5 DB クラスターで実行されていて、Aurora PostgreSQL 15.2 にアップグレードする場合は、まず、すべてのマイナーリリースとパッチを適用して、クラスターを Aurora PostgreSQL 14.6 以降にアップグレードします。クラスターのバージョンが 14.6 以降になったら、メジャーバージョンアップグレードプロセスを続行します。
-
バックアップとして、現在の Babelfish DB クラスターの手動スナップショットを作成します。バックアップにより、クラスターを Aurora PostgreSQL バージョン、Babelfish バージョンに復元し、すべてのデータをアップグレード前の状態に復元できます。詳細については、「DB クラスタースナップショットの作成」を参照してください。このクラスターをアップグレード前の状態に復元する場合は、既存のカスタム DB クラスターパラメータグループを再び使用できるように残しておいてください。詳細については、DB クラスターのスナップショットからの復元およびパラメータグループに関する考慮事項を参照してください。
ターゲット 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 コマンドの出力に表示されます。AWS Management Console または AWS CLI コマンドを使用して、カスタム DB クラスターパラメータグループを作成します。アップグレードする Aurora PostgreSQL のバージョンに対応する Aurora PostgreSQL ファミリーを選択します。
ヒント
パラメータグループは AWS リージョン レベルで管理されます。AWS CLI で作業する場合、コマンドで
--region
を指定する代わりに、デフォルトのリージョンで設定できます。AWS CLI の使用の詳細については、AWS Command Line Interface ユーザーガイドの「クイックセットアップ」を参照してください。
メジャーバージョンアップグレードの実行
-
Aurora PostgreSQL DB クラスターを新しいメジャーバージョンにアップグレードします。詳細については、「Aurora PostgreSQL エンジンを新しいメジャーバージョンにアップグレードする」を参照してください。
-
クラスターのライターインスタンスを再起動して、パラメータ設定を有効にします。
新しいメジャーバージョンにアップグレードした後
新しい 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 -Usa
-P********
-ddbname
接続したら、次の 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
' \ --regionus-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