世界で最も先進的なオープンソースデータベースとしても知られるPostgreSQLには、2020年9月24日から新しいリリースバージョンがあり、成熟しているので、そこで何が新しくなったのかを確認して、移行計画。 PostgreSQL 13は、多くの新機能と拡張機能を備えて利用できます。このブログでは、これらの新機能のいくつかに言及し、現在のPostgreSQLバージョンをデプロイまたはアップグレードする方法を確認します。
PostgreSQL13の新機能と改善点
-
より多くの場合にパーティションのプルーニングとパーティションごとの結合を許可する
-
パーティション化されたテーブルでトリガーの前に行レベルをサポート
-
パーティション化されたテーブルをパブリケーションを介して論理的に複製できるようにする
-
サブスクライバーのパーティションテーブルへの論理レプリケーションを許可する
-
行全体の変数をパーティション式で使用できるようにする
-
Bツリーインデックスに重複をより効率的に保存する
-
ボックス列のGiSTおよびSP-GiSTインデックスがORDERBYボックス<->ポイントクエリをサポートできるようにする
-
GINインデックスがより効率的に処理できるようにします! (NOT)tsquery検索の句
-
インデックス演算子クラスがパラメータを取得できるようにする
-
包含/一致演算子のオプティマイザーの選択性推定を改善
-
拡張統計の統計ターゲットの設定を許可する
-
単一のクエリで複数の拡張統計オブジェクトの使用を許可する
-
OR句およびIN/ANY定数リストの拡張統計オブジェクトの使用を許可する
-
定数に評価される場合、FROM句の関数をプルアップ(インライン化)できるようにします
-
増分並べ替えを実装し、inet値の並べ替えのパフォーマンスを向上させます
-
ハッシュアグリゲーションが大規模なアグリゲーション結果セットにディスクストレージを使用できるようにする
-
更新と削除だけでなく、挿入が自動バキュームでバキュームアクティビティをトリガーできるようにします
-
maintenance_io_concurrencyパラメーターを追加して、メンテナンス操作のI/O同時実行性を制御します
-
wal_levelが最小の場合、リレーションを作成または書き換えるトランザクション中にWAL書き込みをスキップできるようにします
-
多くのテーブルスペースが使用されている場合に、DROPDATABASEコマンドを再生するときのパフォーマンスを向上させます。
-
整数からテキストへの変換を高速化
-
多くのSQLステートメントを含むクエリ文字列と拡張スクリプトのメモリ使用量を削減
-
EXPLAIN、auto_explain、autovacuum、およびpg_stat_statementsがWAL使用統計を追跡できるようにする
-
すべてのステートメントではなく、SQLステートメントのサンプルをログに記録できるようにする
-
バックエンドタイプをcsvlogに追加し、オプションでlog_line_prefixログ出力を追加します
-
プリペアドステートメントのパラメータロギングの制御を改善
-
Leader_pidをpg_stat_activityに追加して、並列ワーカーのリーダープロセスを報告します
-
システムビューpg_stat_progress_basebackupを追加して、ストリーミングベースのバックアップの進行状況を報告します
-
システムビューpg_stat_progress_analyzeを追加してANALYZEの進行状況を報告します
-
共有メモリ使用量を表示するシステムビューpg_shmem_allocationsを追加
-
リロードによってストリーミングレプリケーション構成設定を変更できるようにする
-
永続的なレプリケーションスロットが指定されていない場合に、WALレシーバーが一時的なレプリケーションスロットを使用できるようにします
-
レプリケーションスロットのWALストレージをmax_slot_wal_keep_sizeで制限できるようにする
-
スタンバイプロモーションが要求された一時停止をキャンセルできるようにする
-
リカバリが指定されたリカバリターゲットに達しない場合は、エラーを生成します
-
ディスクにスピルされる前に、論理デコードによって使用されるメモリの量を制御できるようにします
-
無効なページがWALによって参照されている場合でもリカバリを続行できるようにする
-
VACUUMがテーブルのインデックスを並行して処理できるようにする
-
EXPLAINのBUFFER出力で計画時のバッファ使用量を報告する
-
CREATETABLELIKEがCHECK制約のNOINHERITプロパティを作成されたテーブルに伝播するようにします
-
ALTER TABLE ... DROP EXPRESSIONを追加して、列からGENERATEDプロパティを削除できるようにします
-
ALTERVIEW構文を追加してビュー列の名前を変更します
-
ALTER TYPEオプションを追加して、ベースタイプのTOASTプロパティとサポート機能を変更します
-
CREATEDATABASELOCALEオプションを追加
-
DROP DATABASEがターゲットデータベースを使用してセッションを切断できるようにし、ドロップを成功させます
PostgreSQL13をデプロイする方法
このため、ClusterControlがインストールされていることを前提としています。そうでない場合は、対応するドキュメントに従ってインストールできます。
ClusterControlから展開を実行するには、[展開]オプションを選択し、表示される指示に従います。
PostgreSQLを選択するときは、ユーザー、キーまたはパスワード、およびポートを指定する必要がありますSSHでサーバーに接続します。新しいクラスターの名前を追加したり、ClusterControlに対応するソフトウェアと構成をインストールさせたい場合もあります。
SSHアクセス情報を設定した後、データベースの資格情報を定義する必要があります、version、およびdatadir(オプション)。使用するリポジトリを指定することもできます。
次のステップでは、IPアドレスまたはホスト名を使用して作成するクラスターにサーバーを追加する必要があります。
最後のステップで、レプリケーションを同期にするか、同期するかを選択できます。非同期で、[デプロイ]を押すだけです。
タスクが完了すると、新しいPostgreSQLクラスターがClusterControlのメイン画面。
これでクラスターが作成されたので、クラスターに対していくつかのタスクを実行できます。同じClusterControlUIからロードバランサー(HAProxy)、接続プーラー(PgBouncer)、または新しいレプリケーションスレーブを追加するようなものです。
PostgreSQL13へのアップグレード
現在のPostgreSQLバージョンをこの新しいバージョンにアップグレードする場合は、このタスクを実行する3つの主要なオプションがあります。
-
Pg_dump:これは、データをダンプして新しいPostgreSQLに復元できる論理バックアップツールです。バージョン。ここでは、データサイズに応じて異なるダウンタイム期間があります。システムを停止するか、プライマリノードで新しいデータを回避し、pg_dumpを実行し、生成されたダンプを新しいデータベースノードに移動して、復元する必要があります。この間、データの不整合を回避するためにプライマリPostgreSQLデータベースに書き込むことはできません。
-
Pg_upgrade:PostgreSQLのバージョンをインプレースでアップグレードするためのPostgreSQLツールです。実稼働環境では危険である可能性があるため、その場合はこの方法をお勧めしません。この方法を使用すると、ダウンタイムも発生しますが、おそらく以前のpg_dump方法を使用した場合よりも大幅に少なくなります。
-
論理レプリケーション:PostgreSQL 10以降、このレプリケーション方法を使用して、メジャーバージョンのアップグレードを実行できます。ゼロ(またはほぼゼロ)のダウンタイム。このようにして、最新のPostgreSQLバージョンでスタンバイノードを追加できます。レプリケーションが最新の場合は、フェイルオーバープロセスを実行して、新しいPostgreSQLノードを昇格させることができます。
PostgreSQL 13の新機能の詳細については、公式ドキュメントを参照してください。