このページでは、ソース データベース サーバーから MySQL レプリカにデータを複製する構成の作成方法について説明します。
すべてのサーバー要件を満たす任意の MySQL サーバーをソース データベース サーバーにすることが可能です。これには Cloud SQL インスタンスも含まれます。他のクラウド プロバイダによってホストされているインスタンスも、GTID をサポートするなど、要件を満たしていればデータソースとして機能します。
この構成について詳しくは、外部サーバーからのレプリケーションについてをご覧ください。
始める前に
外部サーバーからのレプリケーションを設定する前に、次の手順を完了する必要があります。
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud SQL Admin API.
- gcloud CLI をインストールして認証します。
- サーバーがソース データベース サーバーの要件を満たしていることを確認します。
- プライマリ インスタンスとレプリカの間の接続に必要なセキュリティ レベルを判断し、必要な証明書ファイルを取得します。
- Cloud SQL レプリカを格納する Google Cloud リージョンを決めます。
-
ソース データベース サーバーに関して必要な次の情報を集めます。
外部 IPv4 アドレスとポート番号
デフォルトでは、MySQL はポート 3306 を使用します。
- MySQL レプリケーションのユーザー アカウントとパスワード
- MySQL のバージョン番号
- 選択したセキュリティ レベルに応じて必要となるすべての SSL/TLS 証明書および鍵の場所
ソース データベース サーバーが Cloud SQL レプリカからの接続を受け入れるようにネットワーク ファイアウォールを更新する準備をします。
この手順は、レプリカを作成してから 30 分以内に完了する必要があります。
-
プロジェクト オーナーでない場合は、
Storage Admin
のロールが必要です。
ソース データベース サーバーの要件
外部サーバーから Cloud SQL レプリカに複製する前に、ソース データベース サーバーが次の構成要件を満たしていることを確認します。
MySQL Community Edition バージョン 5.6 または 5.7 を実行していること。
バイナリログが有効になっていること。詳細
レプリカがインポートを完了するのに十分な時間、バイナリログが保持されること。
通常は 1 週間で十分です。バイナリログ保持ポリシーの設定については、こちらをご覧ください。
行ベースのバイナリ ロギングを使用していること。詳細
GTID が有効にされていて、GTID 整合性が強制されること。
GTID の詳細については、こちらをご覧ください。GTID 整合性を強制する際のオプションをご確認ください。
(システム データベース内のテーブルを除く)すべてのテーブルで InnoDB ストレージ エンジンを使用していること。
MySQL ユーザー アカウントに
REPLICATION_SLAVE
権限が割り当てられていること。このアカウントを、どこからの接続でも受け入れるように構成します(ホスト =
%
)。後述の手順で、このユーザーに対してアクセスを制限できます。このユーザー アカウントはレプリケーション以外の目的で使用しないでください。IPv4 アドレスと TCP ポートに外部からアクセスできること。
構成プロセス
外部データベース サーバーからのレプリケーションを設定するには、次の手順を行います。
- データ用の Cloud Storage バケットを作成します。
- Cloud Storage にデータをエクスポートします。
- レプリケーション構成を設定します。
レプリカ構成を完了します。
ストレージをクリーンアップします。
1. データ用の Cloud Storage バケットを作成する
エクスポート プロセス中にデータを一時的に格納するバケットを作成するか、または既存のバケットを使用します。
バケットの作成方法について詳しくは、ストレージ バケットの作成をご覧ください。ストレージ管理者のロールの詳細については、Cloud Storage の IAM ロールをご覧ください。
2. Cloud Storage にデータをエクスポートする
レプリカは自身のデータを Cloud Storage 内で探すため、サーバーのデータのコピーを Cloud Storage に入れます。エクスポート後も、引き続きサーバーに対する書き込みオペレーションを実行できます。レプリカはダンプファイルのインポートを完了すると、エクスポートの実行後に行われたすべての変更を処理し、最終的にプライマリの状態に追いつきます。
gcloud CLI がインストールされていて、MySQL サーバーにネットワーク接続できるマシンから、次のコマンドを実行します。
mysqldump \
-h [PRIMARY_INSTANCE_IP] -P [PRIMARY_INSTANCE_PORT] -u [USERNAME] -p \
--databases [DBS] \
--hex-blob --skip-triggers --master-data=1 \
--order-by-primary --no-autocommit \
--default-character-set=utf8mb4 \
--single-transaction --set-gtid-purged=on | gzip | \
gsutil cp - gs://[BUCKET]/[PATH_TO_DUMP]
If the source of the migration is a Relational Database Service (RDS) for MySQL,
the master-data flag is not supported and should not be specified.
This command might look like the following example:
mysqldump \
-h [PRIMARY_INSTANCE_IP] -P [PRIMARY_INSTANCE_PORT] -u [USERNAME] -p \
--databases [DBS] \
--hex-blob --skip-triggers \
--order-by-primary --no-autocommit \
--default-character-set=utf8mb4 \
--single-transaction --set-gtid-purged=on | gzip | \
gsutil cp - gs://[BUCKET]/[PATH_TO_DUMP]
Additionally, you should configure RDS instances to retain binlogs for a
a longer period of time.
This command might look like the following example:
// Sets the retention period to one day.
call mysql.rds_set_configuration('binlog retention hours', 24);
[PROPERTIES_IN_BRACKETS]
は、次の値で置き換えます。
特性 | 値 |
---|---|
[PRIMARY_INSTANCE_IP] |
ソース データベース サーバーの IPv4 アドレス。 |
[PRIMARY_INSTANCE_PORT] |
ソース データベース サーバーのポート。 |
[USERNAME] |
MySQL レプリケーション ユーザー アカウント。 |
[PASSWORD] |
MySQL レプリケーション ユーザー アカウントのパスワード。 |
[DBS] |
ソース データベース サーバー上の、システム データベース(sys 、mysql 、performance_schema 、information_schema )を除くすべてのデータベースのスペースで区切られたリスト。データベースを一覧表示するには、SHOW DATABASES MySQL コマンドを使用します。 |
[BUCKET] |
エクスポート ファイルを格納するために作成したバケットの名前。 |
[PATH_TO_DUMP] |
エクスポート ファイルへのパス。 |
部分ダンプと GTID に関する警告が表示された場合、これは想定されていることで、問題はありません。
このコマンドは、次の例のようになります。
mysqldump \
-h 192.0.2.1 -P 3306 -u replicationUser \
--databases guestbook \
--hex-blob --skip-triggers --master-data=1 \
--order-by-primary --no-autocommit \
--default-character-set=utf8mb4 \
--single-transaction --set-gtid-purged=on | gzip | \
gsutil cp - gs://export-bucket/hq-primary1.sql.gz
3. レプリケーション構成を作成する
レプリカでプライベート IP が使用されている場合、レプリカの VPC からアクセスできるようにソース データベース サーバーを構成する必要があります。プライベート VPC でレプリカを作成する操作は、gcloud CLI と Cloud SQL Admin API でのみサポートされています。
コンソール
この手順では、Cloud SQL レプリカとソース表現インスタンスを作成します。
Google Cloud Console で Cloud SQL インスタンスの一覧を開きます。
ボタンバーの [データを移行] をクリックして、Cloud SQL 移行アシスタントを開きます。
[移行を開始] をクリックします。
[ソース データベースの名前] フィールドに、Cloud SQL 内のレプリケーション構成の名前を入力します。
この名前は構成の参照です。有効な任意の Cloud SQL インスタンス名を使用してください。
ソース データベース サーバーの IP アドレスとポート番号を入力します。
レプリケーション接続に使用する MySQL ユーザーのユーザー名とパスワードを指定します。
ソース データベース サーバーの MySQL のバージョンを選択します。
レプリカとソース データベース サーバー間の接続に SSL/TLS を使用する場合(推奨)、[SSL/TLS セキュリティを有効にする] を選択して、ソースサーバーの SSL/TLS 証明書情報を指定します。
SSL/TLS のオプションについて詳しくは、SSL/TLS オプションをご覧ください。
[次へ] をクリックし、レプリカの詳細を入力します。
インポートが可能な限り効率化されるよう、データベースを格納するのにほぼ十分なストレージを使用してレプリカを構成します。コアとメモリのサイズを、ソースサーバーと同様のサイズに変更します。
前の手順で Cloud Storage にアップロードしたダンプファイルへのパスを指定します。
[作成] をクリックしてレプリカを作成します。
[次へ] をクリックします。
gcloud
ソース表現インスタンスを作成します。
gcloud beta sql instances create [REPLICA_NAME] \ --region=[REGION] --database-version=[MYSQL_VERSION] \ --source-ip-address=[SOURCE_IP] --source-port=[SOURCE_PORT]
レプリカでプライベート IP アドレスが使用されている場合、--network=[VPC_NETWORK_NAME] も追加します。
[PROPERTIES_IN_BRACKETS]
は、次の値で置き換えます。特性 値 [SOURCE_REPRESENTATION_NAME]
ソース表現インスタンスの名前。有効な任意の Cloud SQL インスタンス名を使用します。 [REGION]
Cloud SQL レプリカを配置するリージョン。 [MYSQL_VERSION]
ソース データベース サーバーで実行されている MySQL のバージョン( MYSQL_5_6
またはMYSQL_5_7
)。[SOURCE_IP]
外部からアクセス可能なソース データベース サーバーの IPv4 アドレス。 [SOURCE_PORT]
外部からアクセス可能なソース データベース サーバーのポート。 Cloud SQL レプリカを作成します。
gcloud beta sql instances create [REPLICA_NAME] \ --master-instance-name=[SOURCE_REPRESENTATION_NAME] \ --master-username=[USERNAME] --prompt-for-master-password \ --master-dump-file-path=gs://[BUCKET]/[PATH_TO_DUMP] \ --master-ca-certificate-path=[SOURCE_SERVER_CA_PATH] \ --client-certificate-path=[CLIENT_CERT_PATH] \ --client-key-path=[PRIVATE_KEY_PATH] \ --tier=[MACHINE_TYPE] --storage-size=[DISK_SIZE]
レプリカでプライベート IP アドレスが使用されている場合、--network=[VPC_NETWORK_NAME] も追加します。
[PROPERTIES_IN_BRACKETS]
は、次の値で置き換えます。特性 値 [REPLICA_NAME]
Cloud SQL リードレプリカの名前。有効な任意の Cloud SQL インスタンス名を使用します。 [SOURCE_REPRESENTATION_NAME]
前のステップで作成したソース表現インスタンスの名前。 [USERNAME]
ソース データベース サーバー上の MySQL レプリケーション ユーザー アカウント。 [BUCKET]
エクスポート ファイルを格納するために作成したバケットの名前。 [PATH_TO_DUMP]
エクスポート ファイルへのパス。 [SOURCE_SERVER_CA_PATH]
ソース データベース サーバーの CA 証明書が保管されている場所へのローカルパス。SSL/TLS を使用する場合にのみ必要です。 [CLIENT_CERT_PATH]
クライアント証明書が保管されている場所へのローカルパス。サーバー クライアント認証を使用する場合にのみ必要です。 [PRIVATE_KEY_PATH]
クライアント証明書の秘密鍵ファイルが保管されている場所へのローカルパス。サーバー クライアント認証を使用する場合にのみ必要です。 [MACHINE_TYPE]
レプリカのサイズ。通常、レプリカはソース データベース サーバーとほぼ同じサイズになります。どのマシンタイプを使用するかわからない場合は、 db-custom-2-7680
から始めます。後で必要に応じてサイズを変更できます。[DISK_SIZE]
レプリカのストレージ サイズ(GB 単位)。パフォーマンスを最大限に高めるためには、インポート ファイル全体を格納するのにほぼ十分なストレージを使用してレプリカを作成してください。 [VPC_NETWORK_NAME]
次の形式の VPC: projects/[PROJECT_ID]/global/networks/[NETWORK_NAME]
cURL
1. Cloud SQL ソース表現インスタンスを作成する
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{
"name": "[SOURCE_REPRESENTATION_NAME]",
"region": "[REGION]",
"databaseVersion": "[MYSQL_VERSION]",
"onPremisesConfiguration": {
"hostPort": "[SOURCE_SERVER_IP]:[SOURCE_SERVER_PORT]"
}
}' \
-X POST \
https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances
[PROPERTIES_IN_BRACKETS]
は、次の値で置き換えます。
特性 | 値 |
---|---|
[SOURCE_REPRESENTATION_NAME] |
ソース表現インスタンスの名前。有効な任意の Cloud SQL インスタンス名を使用します。 |
[REGION] |
Cloud SQL レプリカを配置するリージョン。 |
[MYSQL_VERSION] |
ソース データベース サーバーで実行されている MySQL のバージョン(MYSQL_5_6 または MYSQL_5_7 )。 |
[SOURCE_SERVER_IP] |
外部からアクセス可能なソース データベース サーバーの IPv4 アドレス。 |
[SOURCE_SERVER_PORT] |
外部からアクセス可能なソース データベース サーバーのポート。 |
[PROJECT_ID] |
Google Cloud プロジェクトのプロジェクト ID。 |
たとえば、hq-primary1
というソース表現インスタンスを作成するには、IP アドレス 192.0.2.0
のソース データベース サーバーがポート 3306
で開き、MySQL 5.7 を実行しており、Cloud SQL レプリカが MyProject
プロジェクトと us-central1
リージョンにある場合、次のコマンドを使用します。
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{
"name": "hq-primary1",
"region": "us-central1",
"databaseVersion": "MYSQL_5_7",
"onPremisesConfiguration": {
"hostPort": "192.0.2.0:3306"
}
}' \
-X POST \
https://www.googleapis.com/sql/v1beta4/projects/MyProject/instances
2. Cloud SQL レプリカを作成する
この手順では、ソース データベース サーバーを表すソース表現インスタンスを使用して Cloud SQL リードレプリカを作成し、作成したレプリカに、前の手順で Cloud Storage に読み込んだデータを取り込みます。
この API 呼び出しでは機密情報を使用する必要があるため、データをコマンドラインに入力するのではなく、JSON ファイルを使用してデータを cURL に渡します。
次のデータファイルを作成します。
{
"replicaConfiguration": {
"mysqlReplicaConfiguration": {
"username": "[USERNAME]",
"password": "[PASSWORD]",
"dumpFilePath": "gs://[BUCKET]/[PATH_TO_DUMP]",
"caCertificate": "[SOURCE_SERVER_CA]",
"clientCertificate": "[CLIENT_CERT]",
"clientKey": "[PRIVATE_KEY]"
}
},
"settings": {
"tier": "[MACHINE_TYPE]",
"dataDiskSizeGb": "[DISK_SIZE]"
},
"masterInstanceName": "[SOURCE_REPRESENTATION_NAME]",
"region": "[REGION]",
"databaseVersion": "[MYSQL_VERSION]",
"name": "[REPLICA_NAME]"
}
レプリカでプライベート IP アドレスが使用されている場合、"projects/[PROJECT_ID]/global/networks/[NETWORK_NAME]"の形式の値で設定に "ipConfiguration.privateNetwork" も追加します。
[PROPERTIES_IN_BRACKETS]
は、次の値で置き換えます。
特性 | 値 |
---|---|
[USERNAME] |
ソース データベース サーバー上の MySQL レプリケーション ユーザー アカウント。 |
[PASSWORD] |
MySQL レプリケーション ユーザー アカウントのパスワード。 |
[BUCKET] |
エクスポート ファイルを格納するために作成したバケットの名前。 |
[PATH_TO_DUMP] |
エクスポート ファイルへのパス。 |
[SOURCE_SERVER_CA] |
ソース データベース サーバーの CA 証明書。SSL/TLS を使用する場合にのみ必要です。証明書をリクエスト本文に貼り付けてください。 |
[CLIENT_CERT] |
クライアント証明書。サーバー クライアント認証を使用する場合にのみ必要です。証明書をリクエスト本文に貼り付けてください。 |
[PRIVATE_KEY] |
クライアント証明書の秘密鍵ファイル。サーバー クライアント認証を使用する場合にのみ必要です。鍵をリクエスト本体に貼り付けてください。 |
[MACHINE_TYPE] |
レプリカのサイズ。通常、レプリカはソース データベース サーバーとほぼ同じサイズになります。どのマシンタイプを使用するかわからない場合は、db-custom-2-7680 から始めます。後で必要に応じてサイズを変更できます。 |
[DISK_SIZE] |
レプリカのストレージ サイズ(GB 単位)。パフォーマンスを最大限に高めるためには、インポート ファイル全体を格納するのに十分なストレージを使用してレプリカを作成してください。 |
[SOURCE_REPRESENTATION_NAME] |
前の手順で作成したソース表現インスタンスの名前。 |
[REGION] |
ソース表現インスタンスを作成したリージョン。リードレプリカは、ソース表現インスタンスと同じリージョンに配置する必要があります。 |
[MYSQL_VERSION] |
ソース データベース サーバーで実行されている MySQL のバージョン(MYSQL_5_6 または MYSQL_5_7 )。 |
[REPLICA_NAME] |
Cloud SQL リードレプリカの名前。有効な任意の Cloud SQL インスタンス名を使用します。 |
コマンドラインで API を呼び出します。
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data @[PATH_TO_DATA_FILE] \
-X POST \
https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances
前に作成したソース表現インスタンスとバケットのデータファイル data.json
は次のようになります。
{
"replicaConfiguration": {
"mysqlReplicaConfiguration": {
"username": "replicationUser",
"password": "486#@%*@",
"dumpFilePath": "gs://export-bucket/hq-primary1.sql.gz",
"caCertificate": "[SOURCE_SERVER_CA]",
"clientCertificate": "[CLIENT_CERT]",
"clientKey": "[PRIVATE_KEY]"
}
},
"settings": {
"tier": "db-custom-4-15360",
"dataDiskSizeGb": "100"
},
"masterInstanceName": "hq-primary1",
"region": "us-central1",
"databaseVersion": "MYSQL_5_7",
"name": "hq-primary1-replica1"
}
cURL コマンドは次のようになります。
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data @./data.json
-X POST \
https://www.googleapis.com/sql/v1beta4/projects/MyProject/instances
リードレプリカがダンプファイルにアクセスできるようになると、インポート プロセスを開始します。インポート プロセスの期間は、ダンプファイルのサイズ、レプリカのマシンタイプ、データベース スキーマに依存します。見積もりの一般的な目安として、レプリカは 1 時間あたり約 25~50 GB をインポートすると想定してください。
インポート プロセスが完了するまで、レプリカは PENDING_CREATE
状態です。完了すると、レプリカの状態は RUNNABLE
に変わります。
4.レプリカからの接続を受け入れるようにソース データベース サーバーを構成する
レプリケーションを成功させるには、レプリカがソース データベース サーバーに接続しなければなりません。ソース データベース サーバーがファイアウォールの背後にある場合やその他のネットワーク制限で守られている場合、レプリカの OUTGOING
IP アドレスを使用してネットワーク アクセスを有効にする必要があります。これは、Google Cloud コンソールのレプリカのメインのリスティングに表示される IP アドレスではありません。OUTGOING
IP アドレスを取得するには、IP アドレスの [詳細] にカーソルを合わせてツールチップを表示するか、以下の gcloud
コマンドを使用します。
リードレプリカの IP アドレスを取得します。
gcloud sql instances describe [REPLICA_NAME] --format="default(ipAddresses)"
- 必要に応じて、ソース データベース サーバーが
OUTGOING
IP アドレスからの接続を受け入れるようにネットワーク ファイアウォールを構成します。 レプリカがソース データベース サーバーに正常に接続したことを確認します。
- インスタンスの一覧ページに表示されているレプリカのアイコンが回転しなくなり、緑色になります。
Google Cloud コンソールでログビューアに移動します。
- [インスタンス] プルダウンからレプリカを選択します。
-
replication-setup.log
ログファイルを選択します。レプリカがソース データベース サーバーに接続できない場合は、次の点を確認してください。
-
ソース データベース サーバー上のすべてのファイアウォールが、レプリカの
OUTGOING
IP アドレスからの接続を受け入れるように構成されている。 - SSL/TLS 構成が正しく行われている。
- 正しいレプリケーション ユーザー、ホスト、およびパスワードを使用している。
-
ソース データベース サーバー上のすべてのファイアウォールが、レプリカの
5. MySQL レプリケーション ユーザーに対してアクセスを制限する
この手順はオプションですが、セキュリティの観点から、行うことをおすすめします。
ソース データベース サーバー上の MySQL レプリケーション ユーザーは、任意のホスト(%
)からの接続を受け入れるように構成されています。そのユーザー アカウントを、レプリカの OUTGOING
IP アドレスからの接続のみを受け入れるように更新します。
UPDATE mysql.user SET Host='[OUTGOING_IP]' WHERE Host='%' AND User='[USERNAME]';
FLUSH PRIVILEGES;
6. レプリカ構成を完了する
レプリカ上でユーザー アカウントを構成します。
この操作は、Google Cloud Console、gcloud CLI、Cloud SQL API を使用して行うことができます。ただし、
mysql
クライアントを使用することはできません。MySQL ユーザーについて詳しくは、MySQL ユーザーをご覧ください。Google Cloud コンソールを使用してユーザーを作成するには:
- Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
[Cloud SQL インスタンス] ページに移動 - インスタンス名をクリックして [インスタンスの詳細] ページを開きます。
- [ユーザー] タブを選択します。
- [ユーザー アカウントを作成] をクリックします。
- [ユーザー アカウントの作成] ダイアログで、作成するユーザーの詳細を指定します。
- [作成] をクリックします。
- Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
パブリック IP アドレスを使用してレプリカに接続するために、使用する予定のクライアントからレプリカへのアクセスを承認します。
手順については、承認済みアドレスまたはアドレス範囲を追加するをご覧ください。レプリカに接続するには、レプリカの
PRIMARY
IP アドレスを使用します。この IP アドレスは、Google Cloud コンソールに表示されます。他の接続方法を使用してレプリカに接続することもできます。
7. レプリケーションのステータスを確認する
レプリカはダンプファイルのインポートを完了すると、オンプレミス サーバーに接続し、エクスポートの実施後に行われたすべての更新を適用します。
スタンドアロン インスタンスにレプリカをプロモートする前に、レプリケーションのステータスを確認することが重要です。レプリケーション プロセスが正しく完了しなかった場合、プロモートされたレプリカには、外部インスタンスからの変更がすべて含まれるわけではありません。
8. (省略可)レプリカをスタンドアロン インスタンスにプロモートする
レプリケーションのステータスを確認した後に、ソース データベース サーバーを完全に Cloud SQL に置き換える(移行する)場合は、レプリカをプロモートすると、スタンドアロンのプライマリ インスタンスになります。レプリカがプライマリ インスタンスになると、レプリカは元のソース データベース サーバーに接続しなくなります。
新しいプライマリ インスタンス用に新しいレプリカを作成して、接続しているアプリケーションを再起動し、新しいプライマリ インスタンス(書き込みオペレーションの場合)または新しいレプリカ(読み取りオペレーションの場合)を指すようにします。
9. ストレージをクリーンアップする
エクスポート ファイルを削除します。
gsutil rm gs://[BUCKET]/[PATH_TO_DUMP]
バケットが不要になった場合は、バケットを削除します。
gsutil rm -r gs://[BUCKET]
詳細については、オブジェクトの削除とバケットの削除に関する Cloud Storage ドキュメントをご覧ください。
構成を更新する
後で構成の設定を更新するには、ソース表現インスタンスを編集します。オンプレミスの構成設定を更新する必要がある場合、hostPort
と type
は更新できないことに注意してください。