チュートリアル:Azure CLI を使用して Azure Database for PostgreSQL - 単一サーバーを設計する

適用対象: Azure Database for PostgreSQL - 単一サーバー

重要

Azure Database for PostgreSQL - シングル サーバーは廃止パスにあります。 Azure Database for PostgreSQL - フレキシブル サーバーにアップグレードすることを強くお勧めします。 Azure Database for PostgreSQL - フレキシブル サーバーへの移行の詳細については、Azure Database for PostgreSQL 単一サーバーの現状に関するページを参照してください。

このチュートリアルでは、Azure CLI (コマンド ライン インターフェイス) とその他のユーティリティを使用して、次のことを行う方法を説明します。

  • Azure Database for PostgreSQL サーバーの作成
  • サーバーのファイアウォールの構成
  • psql ユーティリティを使用したデータベースの作成
  • サンプル データを読み込む
  • クエリ データ
  • データの更新
  • データの復元

Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。

前提条件

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。

  • CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。

    • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。

    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。

Azure Cloud Shell を起動する

Azure Cloud Shell は無料のインタラクティブ シェルです。この記事の手順は、Azure Cloud Shell を使って実行することができます。 一般的な Azure ツールが事前にインストールされており、アカウントで使用できるように構成されています。

Cloud Shell を開くには、コード ブロックの右上隅にある [使ってみる] を選択します。 https://shell.azure.com に移動して、別のブラウザー タブで Cloud Shell を起動することもできます。

Cloud Shell が開いたら、お使いの環境に対して Bash が選択されていることを確認します。 後続のセッションでは、Bash 環境で Azure CLI を使用します。[コピー] を選択してコードのブロックをコピーし、Cloud Shell に貼り付けます。その後、Enter キーを押してそれを実行します。

Azure へのサインイン

Cloud Shell は、サインインした最初のアカウントで自動的に認証されます。 別のサブスクリプションを使用してサインインするには、次のスクリプトを使用し、<Subscription ID> をご使用の Azure サブスクリプション ID に置き換えます。 Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。

subscription="<subscriptionId>" # add subscription here

az account set -s $subscription # ...or use 'az login'

詳細については、アクティブなサブスクリプションの設定または対話形式のログインに関する記事を参照してください

パラメーターの値を設定する

次の値は、データベースと必要なリソースを作成するために、後続のコマンドで使用されます。 サーバー名は、すべての Azure でグローバルに一意である必要があるため、サーバー名の作成に $RANDOM 関数が使用されます。

場所は、ご使用の環境に合わせて変更してください。 0.0.0.0 を、ご使用の特定の環境に合った IP アドレスの範囲に置き換えます。 ご使用のコンピューターのパブリック IP アドレスを使用して、サーバーへのアクセスをその IP アドレスのみに制限します。

# Variable block
let "randomIdentifier=$RANDOM*$RANDOM"
location="East US"
resourceGroup="msdocs-postgresql-rg-$randomIdentifier"
tag="create-postgresql-server-and-firewall-rule"
server="msdocs-postgresql-server-$randomIdentifier"
sku="GP_Gen5_2"
login="azureuser"
password="Pa$$w0rD-$randomIdentifier"
# Specify appropriate IP address values for your environment
# to limit / allow access to the PostgreSQL server
startIp=0.0.0.0
endIp=0.0.0.0
echo "Using resource group $resourceGroup with login: $login, password: $password..."

リソース グループを作成する

az group create コマンドを使用して、リソース グループを作成します。 Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。 次の例では、myResourceGroup という名前のリソース グループを eastus に作成します。

# Create a resource group
echo "Creating $resourceGroup in $location..."
az group create --name $resourceGroup --location "$location" --tags $tag

サーバーの作成

az postgres server create コマンドを使用して、サーバーを作成します。

# Create a PostgreSQL server in the resource group
# Name of a server maps to DNS name and is thus required to be globally unique in Azure.
echo "Creating $server in $location..."
az postgres server create --name $server --resource-group $resourceGroup --location "$location" --admin-user $login --admin-password $password --sku-name $sku

注意

  • サーバー名に含めることができるのは、英小文字、数字、およびハイフン (-) のみであり、 3 から 63 文字にする必要があります。 詳細については、Azure Database for PostgreSQL の名前付け規則に関するページを参照してください。
  • 管理ユーザーのユーザー名を azure_superuseradminadministratorrootguest、または public にすることはできません。
  • パスワードには、英大文字、英小文字、数字、英数字以外の文字のうち、3 つのカテゴリの 8 ~ 128 の文字が含まれている必要があります。
  • SKU について詳しくは、「Azure Database for PostgreSQL の価格」をご覧ください。

重要

サーバーベースのファイアウォール規則を構成する

サーバーに接続するためのアクセス権をローカル環境に付与するには、az postgres server firewall-rule create コマンドを使用して、ファイアウォール規則を作成します。

# Configure a firewall rule for the server 
echo "Configuring a firewall rule for $server for the IP address range of $startIp to $endIp"
az postgres server firewall-rule create --resource-group $resourceGroup --server $server --name AllowIps --start-ip-address $startIp --end-ip-address $endIp

ヒント

対象の IP アドレスがわからない場合は、WhatIsMyIPAddress.com にアクセスして取得します。

注意

接続の問題を回避するには、ネットワークのファイアウォールでポート 5432 が許可されていることを確認します。 Azure Database for PostgreSQL サーバーでは、このポートを使用します。

サーバーベースのファイアウォール規則を一覧表示する

既存のサーバー ファイアウォール規則の一覧を表示するには、az postgres server firewall-rule list コマンドを実行します。

# List firewall rules for the server
echo "List of server-based firewall rules for $server"
az postgres server firewall-rule list --resource-group $resourceGroup --server-name $server
# You may use the switch `--output table` for a more readable table format as the output.

既定では、JSON 形式でファイアウォール規則の一覧が出力されます (規則が存在する場合)。 出力をもっとわかりやすい表形式にする場合は、--output table スイッチを使用することもできます。

接続情報の取得

対象のサーバーに接続するには、ホスト情報とアクセス資格情報を入力します。

az postgres server show --resource-group $resourceGroup --name $server

administratorLoginfullyQualifiedDomainName の値を書き留めておきます。

psql を使用して Azure Database for PostgreSQL サーバーに接続する

psql クライアントは、PostgreSQL サーバーに接続するための一般的な選択肢です。 Azure Cloud Shellpsql を使用して、対象のサーバーに接続できます。 また、可能な場合は、ローカル環境で psql を使用することもできます。 空のデータベース postgres は、新しい PostgreSQL サーバーで自動的に作成されます。 次のコードに示すように、そのデータベースを使用して psql に接続できます。

psql --host=<server_name>.postgres.database.azure.com --port=5432 --username=<admin_user>@<server_name> --dbname=postgres

ヒント

Postgres への接続に URL パスを使用する場合は、%40 を使用してユーザー名の @ 記号を URL エンコードします。 たとえば、psql の接続文字列は次のようになります。

psql postgresql://<admin_user>%40<server_name>@<server_name>.postgres.database.azure.com:5432/postgres

空のデータベースの作成

  1. サーバーに接続したら、プロンプトで空のデータベースを作成します。

    CREATE DATABASE mypgsqldb;
    
  2. プロンプトで次のコマンドを実行し、新しく作成したデータベース mypgsqldb に接続を切り替えます。

    \c mypgsqldb
    

データベースのテーブルを作成する

Azure Database for PostgreSQL に接続する方法を説明したので、次はいくつかの基本的なタスクを実行します。

最初に、テーブルを作成してデータを読み込みます。 たとえば、インベントリ情報を追跡するテーブルを作成します。

CREATE TABLE inventory (
  id serial PRIMARY KEY, 
  name VARCHAR(50), 
  quantity INTEGER
);

次のように入力すると、新しく作成されたテーブルが一覧に表示されます。

\dt

テーブルにデータを読み込む

テーブルを作成したので、次はデータを挿入します。 開いているコマンド プロンプト ウィンドウで、次のクエリを実行してデータ行を挿入します。

INSERT INTO inventory (id, name, quantity) VALUES (1, 'banana', 150); 
INSERT INTO inventory (id, name, quantity) VALUES (2, 'orange', 154);

これで、先ほど作成したテーブルにサンプル データが 2 行挿入されました。

クエリを実行し、テーブル内のデータを更新する

次のクエリを実行して、インベントリ テーブルから情報を取得します。

SELECT * FROM inventory;

さらに、インベントリ テーブル内のデータを更新することもできます。

UPDATE inventory SET quantity = 200 WHERE name = 'banana';

データを取得すると、更新された値を見ることができます。

SELECT * FROM inventory;

データベースを以前の状態に復元する

テーブルを誤って削除した場合を想定してください。 データの復元は容易なことではありません。 Azure Database for PostgreSQL では、サーバーのバックアップがある任意の時点 (設定したバックアップ リテンション期間によって決まります) に遡って、新しいデータベースに過去のデータを復元できます。 この新しいサーバーを使用して、削除されたデータを復元することができます。

次のコマンドを実行して、テーブルを追加する前の状態にサンプル サーバーを復元します。

az postgres server restore --resource-group myresourcegroup --name mydemoserver-restored --restore-point-in-time 2017-04-13T13:59:00Z --source-server mydemoserver

az postgres server restore コマンドには、次のパラメーターが必要です。

設定 提案された値 説明
resource-group  myresourcegroup  ソース サーバーが存在するリソース グループ。 
name mydemoserver-restored 復元コマンドで作成される新しいサーバーの名前。
restore-point-in-time 2017-04-13T13:59:00Z 復元する特定の時点を選びます。 この日付と時刻は、ソース サーバーのバックアップ保有期間内でなければなりません。 ISO8601 の日時形式を使います。 たとえば、ローカルなタイムゾーン (例: 2017-04-13T05:59:00-08:00) または UTC Zulu 形式 (例: 2017-04-13T13:59:00Z) を使うことができます。
source-server mydemoserver 復元元のソース サーバーの名前または ID。

特定の時点にサーバーを復元すると、新しいサーバーが作成され、指定した時点の元のサーバーとしてコピーされます。 復元されたサーバーの場所と価格レベルの値は、元のサーバーと同じです。

コマンドは同期的であり、サーバーが復元された後に戻ります。 復元が終了した後、作成された新しいサーバーを調べます。 データが期待どおりに復元されたことを確認します。

リソースをクリーンアップする

次のように az group delete コマンドを使用して、リソース グループと、それに関連付けられているすべてのリソースを削除します。ただし、これらのリソースが継続的に必要でない場合に限ります。 これらのリソースの一部は、削除や作成に時間がかかる場合があります。

az group delete --name $resourceGroup

次のステップ

このチュートリアルでは、Azure CLI (コマンド ライン インターフェイス) とその他のユーティリティを使用して、次のことを行う方法を説明しました。

  • Azure Database for PostgreSQL サーバーの作成
  • サーバーのファイアウォールの構成
  • psql ユーティリティを使用したデータベースの作成
  • サンプル データを読み込む
  • クエリ データ
  • データの更新
  • データの復元

Azure portal を使用して最初の Azure Database for PostgreSQL を設計する方法に関するチュートリアルを参照してください。