sql >> データベース >  >> RDS >> PostgreSQL

自動化を使用してPostgreSQLのリリーステストを高速化

    すべての企業でテスト環境を用意することは必須です。アプリケーションの変更や新しいリリースをテストしたり、既存のアプリケーションを新しいPostgreSQLバージョンでテストしたりする場合にも必要になる可能性があります。これの難しい部分は、まず、本番環境と可能な限り類似したテスト環境を展開する方法と、すべてを最初から再作成せずにその環境を維持する方法です。

    このブログでは、ClusterControlを使用してさまざまな方法でテスト環境を展開する方法を説明します。これにより、プロセスを自動化し、手作業で時間のかかるタスクを回避できます。

    クラスター間レプリケーション

    ClusterControl 1.7.4以降、クラスター間レプリケーションと呼ばれる機能があります。これにより、2つの自律クラスター間でレプリケーションを実行できます。

    既存のPostgreSQLクラスターでこの機能を使用する方法を見ていきます。このタスクでは、ClusterControlがインストールされており、それを使用してプライマリクラスターがデプロイされていることを前提としています。

    クラスター間レプリケーションの作成

    ClusterControl UIから新しいクラスター間レプリケーションを作成するには、ClusterControl-> PostgreSQL Cluster-> Cluster Actions-> CreateSlaveClusterを選択します。

    スレーブクラスターは、現在のプライマリクラスターからデータをストリーミングすることによって作成されます。

    SSHクレデンシャルとポート、スレーブクラスターの名前、およびClusterControlに対応するソフトウェアと構成をインストールさせる場合は指定する必要があります。

    SSHアクセス情報を設定した後、データベースバージョン、datadir、ポート、および管理者の資格情報を定義する必要があります。ストリーミングレプリケーションを使用するため、同じデータベースバージョンを使用していることを確認してください。また、資格情報はプライマリクラスターで使用されているものと同じである必要があります。

    このステップでは、サーバーを新しいスレーブクラスターに追加する必要があります。このタスクでは、データベースノードのIPアドレスまたはホスト名の両方を入力できます。

    ClusterControlアクティビティモニターでジョブのステータスを監視できます。タスクが完了すると、ClusterControlのメイン画面にクラスターが表示されます。

    ClusterControl CLI

    ClusterControl CLIは、s9sとも呼ばれ、ClusterControlバージョン1.4.1で導入されたコマンドラインツールであり、ClusterControlシステムを使用してデータベースクラスターを操作、制御、および管理します。 ClusterControl CLIは、クラスター自動化の新しい扉を開き、Ansible、Puppet、Chefなどの既存のデプロイメント自動化ツールと簡単に統合できます。このClusterControlツールを使用して、スレーブクラスターを作成することもできます。例を見てみましょう:

    $ s9s cluster --create --cluster-name=PostgreSQL1rep --cluster-type=postgresql --provider-version=13 --nodes="192.168.100.133"  --os-user=root --os-key-file=/root/.ssh/id_rsa --db-admin=admin --db-admin-passwd=********* --vendor=postgres --remote-cluster-id=14 --log

    では、使用されているパラメータについて詳しく見ていきましょう。

    • クラスター:クラスターを一覧表示して操作します。

    • 作成:新しいクラスターを作成してインストールします。

    • クラスター名:新しいスレーブクラスターの名前。

    • クラスタータイプ:インストールするクラスターのタイプ。

    • プロバイダーバージョン:ソフトウェアバージョン。

    • ノード:スレーブクラスター内の新しいノードのリスト。

    • Os-user:SSHコマンドのユーザー名。

    • Os-key-file:SSH接続に使用するキーファイル。

    • Db-admin:データベース管理者のユーザー名。

    • Db-admin-passwd:データベース管理者のパスワード。

    • Remote-cluster-id:クラスター間レプリケーションのマスタークラスターID。

    • ログ:ジョブメッセージを待って監視します。

    クラスター間レプリケーションの管理

    これで、クラスター間レプリケーションが稼働しました。UIとCLIの両方からClusterControlを使用して、このトポロジで実行するさまざまなアクションがあります。

    スレーブクラスターの再構築

    スレーブクラスターを再構築するには、ClusterControl->[スレーブクラスター]->[ノード]->[ノード]->[ノードアクション]->[レプリケーションスレーブの再構築]に移動します。

    ClusterControlは次の手順を実行します。

    • PostgreSQLサーバーを停止

    • データディレクトリからコンテンツを削除

    • pg_basebackupを使用してマスターからスレーブにバックアップをストリーミング

    • スレーブを開始

    ClusterControlサーバーから次のコマンドを使用して、スレーブクラスターを再構築することもできます。

    $ s9s replication --stage --master="192.168.100.125" --slave="192.168.100.133" --cluster-id=15 --remote-cluster-id=14 --log
    パラメータは次のとおりです。

    • レプリケーション:データレプリケーションを監視および制御します。

    • ステージ:レプリケーションスレーブのステージング/再構築。

    • マスター:マスタークラスター内のレプリケーションマスター。

    • スレーブ:スレーブクラスター内のレプリケーションスレーブ。

    • Cluster-id:スレーブクラスターID。

    • Remote-cluster-id:マスタークラスターID。

    • ログ:ジョブメッセージを待って監視します。

    バックアップからクラスターを作成

    テスト環境を作成する別の方法は、プライマリクラスターのバックアップから新しいクラスターを作成することです。これを行うには、ClusterControl->PostgreSQLクラスターの選択->バックアップに移動します。そこで、リストから復元するバックアップを選択します。

    これで、このバックアップを現在のデータベースまたは別のノードに復元したり、このバックアップから新しいクラスターを作成したりできます。

    「バックアップからクラスターを作成」オプションは、選択したバックアップから新しいPostgreSQLクラスターを作成します。

    新しいクラスターをデプロイするには、OSとデータベースのクレデンシャルと情報を追加する必要があります。このジョブが終了すると、ClusterControlUIに新しいクラスターが表示されます。

    スタンドアロンホストでバックアップを復元する

    同じ[バックアップ]セクションで、[スタンドアロンホストで復元して確認する]オプションを選択して、別のノードにバックアップを復元できます。

    ここで、ClusterControlでソフトウェアを新しいノードにインストールし、ファイアウォールまたはAppArmor / SELinux(OSによって異なります)を無効にするかどうかを指定できます。ノードを稼働状態に保つことも、ClusterControlが次の復元ジョブまでデータベースサービスをシャットダウンすることもできます。完了すると、バックアップリストに復元/検証済みのバックアップがチェックマークで示されます。

    このタスクを手動で実行したくない場合は、バックアップの確認機能を使用してこのプロセスをスケジュールし、バックアップジョブでこのジョブを定期的に繰り返すことができます。

    自動ClusterControlバックアップ検証

    ClusterControl->PostgreSQLクラスターを選択->バックアップ->バックアップの作成

    自動検証バックアップ機能は、スケジュールされたバックアップで使用できます。バックアップをスケジュールするときは、方法やストレージなどの一般的なオプションを選択するだけでなく、スケジュール/頻度も指定する必要があります。

    ClusterControlを使用すると、データベーステクノロジーに応じてさまざまなバックアップ方法を選択できます。また、同じセクションで、バックアップを保存するサーバーを選択できます。 、およびバックアップをクラウド(AWS、Azure、またはGoogle Cloud)にアップロードする場合。バックアップを圧縮および暗号化し、保存期間を指定することもできます。

    バックアップの検証機能を使用するには、クラスターの一部ではない専用のホスト(またはVM)が必要です。 ClusterControlはソフトウェアをインストールし、ジョブが実行されるたびにこのホストのバックアップを復元します。

    復元後、ClusterControlバックアップセクションに確認アイコンが表示されます。これは、手動のClusterControl方法で確認を行う場合と同じですが、心配する必要はありません。復元タスクについて。 ClusterControlは、毎回自動的にバックアップを復元します。

    結論

    必要なたびにテスト環境を導入することは、時間のかかる作業になる可能性があり、これを最新の状態に維持することは困難です。この結果、企業が新しいリリースをテストしない場合や、テストが正しくない場合があります。たとえば、本番環境とは異なる環境を使用します。

    ご覧のとおり、ClusterControlを使用すると、数回クリックするだけで本番環境で使用しているのと同じ環境をデプロイできます。また、プロセスを自動化して手動タスクを回避することもできます。


    1. PythonでMySQLにCSVデータをロードする

    2. EF6-並列クエリを正しく実行する方法

    3. PostgreSQLログを最大限に活用する方法

    4. Oracleで時間のない日付のみを取得する