

# Aurora PostgreSQL のローカル書き込み転送の使用
<a name="aurora-postgresql-write-forwarding-understanding"></a>

以下のセクションを使用して、データベースクラスターでローカル書き込み転送が有効になっているかどうかと、互換性に関する考慮事項、設定可能なパラメータと認証設定について確認できます。この情報は、Aurora PostgreSQL でローカル書き込み転送機能を効果的に活用するための詳細を提供します。

**注記**  
ローカル書き込み転送を使用しているクラスター内のライターインスタンスが再起動されると、ローカル書き込み転送を使用しているリーダーインスタンス上のアクティブで転送されたトランザクションとクエリは自動的に閉じられます。ライターインスタンスが再び使用可能になったら、これらのトランザクションを再試行できます。

## DB クラスターでローカル書き込み転送が有効になっているかどうかの確認
<a name="aurora-postgresql-write-forwarding-describing"></a>

DB クラスターでローカル書き込み転送を使用できることを確かめるには、クラスターの属性 `LocalWriteForwardingStatus` が `enabled` に設定されていることを確認します。

AWS マネジメントコンソール のクラスターの詳細ページの **[設定]** タブで、**[ローカルリードレプリカの書き込み転送]** のステータスが **[有効]** と表示されます。

すべてのクラスターについてローカル書き込み転送設定のステータスを確認するには、次の AWS CLI コマンドを実行します。

**Example**  

```
aws rds describe-db-clusters \
--query '*[].{DBClusterIdentifier:DBClusterIdentifier,LocalWriteForwardingStatus:LocalWriteForwardingStatus}'

[
{
"LocalWriteForwardingStatus": "enabled",
"DBClusterIdentifier": "write-forwarding-test-cluster-1"
},
{
"LocalWriteForwardingStatus": "disabled",
"DBClusterIdentifier": "write-forwarding-test-cluster-2"
},
{
"LocalWriteForwardingStatus": "requested",
"DBClusterIdentifier": "test-global-cluster-2"
},
{
"LocalWriteForwardingStatus": "null",
"DBClusterIdentifier": "aurora-postgresql-v2-cluster"
}
]
```

DB クラスターは、`LocalWriteForwardingStatus` として以下の値を持ちます。
+ `disabled` — ローカル書き込み転送は無効です。
+ `disabling` — ローカル書き込み転送は無効化中です。
+ `enabled` — ローカル書き込み転送は有効です。
+ `enabling` — ローカル書き込み転送は有効化中です。
+ `null` — この DB クラスターではローカル書き込み転送を使用できません。
+ `requested` — ローカル書き込み転送がリクエストされていますが、まだアクティブではありません。

## 書き込み転送のデフォルトのパラメータ設定
<a name="aurora-postgresql-write-forwarding-params"></a>

Aurora クラスターのパラメータグループには、ローカル書き込み転送機能の設定が含まれています。これらはクラスターパラメータであるため、各クラスターのすべての DB インスタンスは、これらの可変に同じ値を持ちます。これらのパラメータの詳細を次の表にまとめ、表に続いて使用上の注意を記載してください。


| パラメータ | スコープ | タイプ | デフォルト値 | 有効値 | 
| --- | --- | --- | --- | --- | 
| apg\$1write\$1forward.connect\$1timeout | セッション | 秒 | 30 | 0-2147483647 | 
| apg\$1write\$1forward.consistency\$1mode | セッション | enum | セッション | SESSION、EVENTUAL、GLOBAL、および OFF | 
| apg\$1write\$1forward.idle\$1in\$1transaction\$1session\$1timeout | セッション | ミリ秒 | 86400000 | 0-2147483647 | 
| apg\$1write\$1forward.idle\$1session\$1timeout | セッション | ミリ秒 | 300000 | 0-2147483647 | 
| apg\$1write\$1forward.max\$1forwarding\$1connections\$1percent | グローバル | int | 25 | 1–100 | 

`apg_write_forward.max_forwarding_connections_percent` パラメータは、リーダーから転送されたクエリを処理するために使用できるデータベース接続スロットの上限です。これは、ライター DB インスタンスで `max_connections` 設定のパーセンテージで表されます。例えば、`max_connections` が `800`、`apg_write_forward.max_forwarding_connections_percent` が `10` の場合、書き込みは最大 80 の同時転送セッションを許可します。これらの接続は、`max_connections` 設定によって管理される同じ接続プールから取得されます。この設定は、クラスターでローカル書き込み転送が有効になっているライター DB インスタンスにのみ適用されます。

ローカル書き込み転送リクエストを制御するには、以下の設定を使用します。
+ `apg_write_forward.consistency_mode` — リードレプリカの読み取り整合性の度合いを制御するセッションレベルのパラメータ。有効な値は `SESSION`、`EVENTUAL`、`GLOBAL`、または `OFF` です。デフォルトでは、値は `SESSION` に設定されます。値を `OFF` に設定すると、セッションでのローカル書き込み転送が無効になります。整合性レベルの詳細については、[Aurora PostgreSQL でのローカル書き込み転送の整合性と分離](aurora-postgresql-write-forwarding-configuring.md#aurora-postgresql-write-forwarding-isolation) を参照してください。このパラメータは、ローカル書き込み転送が有効になっているリーダーインスタンスにのみ関係します。
+ `apg_write_forward.connect_timeout` – リードレプリカがライター DB インスタンスへの接続を確立するために待機を始めてから止めるまでの最大秒数。値が `0` の場合、無期限に待機することになります。
+ `apg_write_forward.idle_in_transaction_session_timeout` — リーダー DB インスタンスが、オープントランザクションを持つリードレプリカから転送されるアクティビティを接続で待機し始めてから、接続を閉じるまでのミリ秒数。トランザクションでこの期間を超えてセッションがアイドル状態のままである場合、Aurora はセッションを終了します。`0` の値は、タイムアウトを無効にします。
+ `apg_write_forward.idle_session_timeout` — ライター DB インスタンスが、リーダーインスタンスから転送されるアクティビティを接続で待機し始めてから、接続を閉じるまでのミリ秒数。この期間を超えてセッションがアイドル状態のままである場合、Aurora はセッションを終了します。`0` の値は、タイムアウトを無効にします。

## rdswriteforwarduser
<a name="aurora-postgresql-write-forwarding-rdswriteforwarduser"></a>

 `rdswriteforwarduser` は、リードレプリカとライター DB インスタンスの間の接続を確立するために使用するユーザーです。

**注記**  
`rdswriteforwarduser` は PUBLIC ロールを介して CONNECT 権限をカスタマーデータベースに継承します。PUBLIC ロールの権限が取り消された場合は、書き込みを転送する必要があるデータベースに接続権限を付与 (GRANT CONNECT) する必要があります。