このページでは、Cloud SQL のデータベース フラグを設定する方法について説明し、インスタンスに対して設定できるフラグの一覧も示します。データベース フラグを使用すると、MySQL パラメータやオプションの指定内容を変更できる他、インスタンスの構成や調整を行うこともできます。
場合によっては、目的の機能を完全に有効にするために、1 つのフラグの設定だけでなく、別のフラグの設定も必要になることがあります。たとえば、遅いクエリのロギングを有効にするには、slow_query_log フラグを on に設定するだけでなく、Google Cloud Platform Console のログビューアでログを利用できるように log_output フラグを FILE に設定する必要もあります。
インスタンスのフラグを設定、削除、変更すると、インスタンスが再起動される場合があります。その場合、フラグの値はフラグを削除するまでインスタンスに対して保持されます。
データベース フラグを設定する
データベース フラグの設定
Console
- Google Cloud Platform Console で、新しい GCP Console プロジェクトを作成するか、プロジェクト名を選択して既存のプロジェクトを開きます。
- インスタンスを開き、[編集] をクリックします。
- 下方向にスクロールして [フラグ] セクションを表示します。
- それまでにインスタンスで設定したことのないフラグを設定するには、[項目を追加] をクリックし、プルダウン メニューからフラグを選択して、その値を設定します。
- [保存] をクリックして、変更を保存します。
- [概要] ページの [フラグ] で、変更を確認します。
gcloud
インスタンスを編集します。
gcloud sql instances patch [INSTANCE_NAME] --database-flags [FLAG1=VALUE1,FLAG2=VALUE2]
値のないフラグについては、フラグ名の後に等号(=)を付けておきます。インスタンス上で設定するすべてのフラグの値を含めます。含まれていないフラグはデフォルト値に戻されます。
たとえば、general_log、skip_show_database、wait_timeout などのフラグを設定するには、次のコマンドを使用できます。
gcloud sql instances patch [INSTANCE_NAME] --database-flags \
general_log=on,skip_show_database=,wait_timeout=200000
cURL
既存のインスタンスのフラグを設定するには:
ACCESS_TOKEN="$(gcloud auth application-default print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{"settings" : {"databaseFlags" :
[{ "name": "<FLAG-NAME>", "value": "<FLAG-VALUE>" }]}}' \
-X PATCH \
https://www.googleapis.com/sql/v1beta4/projects/<PROJECT-ID>/instances/<INSTANCE_NAME>
以下は、具体例として既存のインスタンスの general_log フラグを設定する方法を示したものです。
ACCESS_TOKEN="$(gcloud auth application-default print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{"settings" : {"databaseFlags" : [{ "name": "general_log", "value": "on" }]}}' \
-X PATCH \
https://www.googleapis.com/sql/v1beta4/projects/<PROJECT-ID>/instances/<INSTANCE_NAME>
インスタンスにすでに設定されているフラグがある場合は、以前のコマンドを変更するときにそれらのフラグも含めるようにします。PATCH コマンドは、既存のフラグをリクエストで指定されているフラグで上書きします。
すべてのフラグをデフォルト値にクリアする
Console
- Google Cloud Platform Console で、新しい GCP Console プロジェクトを作成するか、プロジェクト名を選択して既存のプロジェクトを開きます。
- インスタンスを開き、[編集] をクリックします。
- [データベースのフラグ] セクションを開きます。
- 表示するすべてのフラグの横にある [X] をクリックします。
- [保存] をクリックして、変更を保存します。
gcloud
インスタンスのすべてのフラグをデフォルト値にクリアします。
gcloud sql instances patch [INSTANCE_NAME] --clear-database-flags
インスタンスを再起動する確認を求められます。
cURL
既存のインスタンスのフラグをすべてクリアするには:
ACCESS_TOKEN="$(gcloud auth application-default print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{"settings" : {"databaseFlags" : []}}' \
-X PATCH \
https://www.googleapis.com/sql/v1beta4/projects/<PROJECT-ID>/instances/<INSTANCE_NAME>
データベース フラグの現在の値を表示する
すべての MySQL システム変数の現在値を表示するには、mysql クライアントでインスタンスにログインし、次のステートメントを入力します。
SHOW VARIABLES;
サポートされているフラグのみ値を変更できます(下記を参照)。
インスタンスに対して設定されているデータベース フラグを確認する
Cloud SQL インスタンスに対して設定されているフラグを確認するには:
Console
- Google Cloud Platform Console で、新しい GCP Console プロジェクトを作成するか、プロジェクト名を選択して既存のプロジェクトを開きます。
- インスタンスを選択して、[インスタンスの概要] ページを開きます。
設定済みのデータベース フラグは、[データベースのフラグ] セクションに一覧表示されます。
gcloud
インスタンスの状態を取得します。
gcloud sql instances describe [INSTANCE_NAME]
出力では、データベース フラグは settings の下にコレクション databaseFlags として一覧表示されます。出力でのフラグの表示の詳細については、インスタンスのリソースの表示をご覧ください。
cURL
インスタンスに設定されているフラグを一覧表示するには:
ACCESS_TOKEN="$(gcloud auth application-default print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
-X GET \
https://www.googleapis.com/sql/v1beta4/projects/<PROJECT-ID>/instances/<INSTANCE_NAME>?fields=settings
出力で、databaseFlags フィールドを探します。
サポートされているフラグ
Cloud SQL でサポートされているフラグは、リクエストされる頻度が高い MySQL フラグです。フラグによっては、Cloud SQL でのサポート範囲が、対応する MySQL の変数やオプションのサポート範囲とは異なることがあるので注意してください。
注記されている場合を除き、いずれのフラグも Google Cloud SQL によってサポートされる MySQL のすべてのバージョンに適用されます。
| Cloud SQL フラグ | 型 | 有効な値と注意事項 | 再起動が必要 |
|---|---|---|---|
| auto_increment_increment | integer |
1~65535 |
× |
| auto_increment_offset | integer |
1~65535 |
× |
| binlog_row_image | enumeration |
full(デフォルト)、minimal、noblob |
× |
| character_set_server | string |
utf8 または utf8mb4 | ○ |
| default_time_zone | string |
-12:59~+13:00 の値を指定します。先頭のゼロは必要です。 | ○ |
| event_scheduler | boolean |
on | off
第 1 世代インスタンスの場合、インスタンス作成時には設定できません。
Event Scheduler を使用している場合、スケジュールされたイベントが実行されるように、インスタンスのアクティベーション ポリシーを |
× |
| ft_max_word_len | integer |
10~252 |
○ |
| ft_min_word_len | integer |
1~16 |
○ |
| ft_query_expansion_limit | integer |
0~1000 |
○ |
| general_log | boolean |
on | off
汎用ログの詳細については、ヒントをご覧ください。 |
× |
| group_concat_max_len | integer |
4~17179869184 |
× |
| innodb_autoinc_lock_mode | integer |
0~2 |
○ |
| innodb_file_per_table | boolean |
on | off
このフラグの詳細については、ヒントをご覧ください。 |
× |
| innodb_ft_max_token_size | integer |
10~252
MySQL 5.6 以降のバージョンでのみサポートされます。 |
○ |
| innodb_ft_min_token_size | integer |
0~16
MySQL 5.6 以降のバージョンでのみサポートされます。 |
○ |
| innodb_ft_server_stopword_table | string |
MySQL 5.6 以降のバージョンでのみサポートされます。 | × |
| innodb_large_prefix | boolean |
on | off
MySQL 5.5 と 5.6 でのみサポートされます。 |
× |
| innodb_lock_wait_timeout | integer |
1~1073741824 |
× |
| innodb_print_all_deadlocks | boolean |
on | off |
× |
| interactive_timeout | integer |
1~31536000 |
× |
| local_infile | boolean |
on | off |
× |
| lock_wait_timeout | integer |
1~31536000 |
× |
| log_bin_trust_function_creators | boolean |
on | off |
× |
| log_output | set |
FILE | TABLE | NONE |
× |
| log_queries_not_using_indexes | boolean |
on | off |
× |
| long_query_time | float |
0~30000000
Cloud SQL では、必要に応じて、このフラグを 1 未満に設定できます。 |
× |
| lower_case_table_names | integer |
0 または 1
ほとんどの場合、デフォルト値の |
○ |
| max_allowed_packet | integer |
16384~1073741824 |
× |
| max_heap_table_size | integer |
16384~67108864
このフラグについて詳しくは、ヒントをご覧ください。 |
× |
| max_prepared_stmt_count | integer |
0~1048576 |
× |
| optimizer_search_depth | integer |
0~62 |
× |
| パフォーマンス スキーマ | boolean |
on | off(デフォルト)
このフラグの値を変更するには、API を使用する必要があります。階層サイズが |
○ |
| query_cache_limit | integer |
0~223338299392 |
× |
| query_cache_size | integer |
0~223338299392
このフラグについて詳しくは、ヒントをご覧ください。 |
× |
| query_cache_type | enumeration |
0~2
このフラグについて詳しくは、ヒントをご覧ください。 |
○ |
| read_only | boolean |
on | off
レプリカには影響しません。 |
× |
| show_compatibility_56 | boolean |
on | off
MySQL 5.7 でのみサポートされます。 |
× |
| skip_show_database | flag |
on | off |
○ |
| slow_query_log | boolean |
on | off
遅いクエリのログの詳細については、ヒントをご覧ください。 |
× |
| sql_mode | string |
ANSI などの複合モードを含め、有効な値については、MySQL ドキュメントのサーバー SQL モードをご覧ください。選択できるモードは 1 つのみです。
NO_DIR_IN_CREATE と NO_ENGINE_SUBSTITUTION はサポートされていません。 |
× |
| tmp_table_size | integer |
このフラグについて詳しくは、ヒントをご覧ください。 |
× |
| wait_timeout | integer |
1~31536000 |
× |
フラグの使用に関するヒント
- general_log、slow_query_log
-
generalまたはslow queryログを使用可能にするには、対応するフラグを有効にして、log_outputフラグをFILEに設定します。こうすると、Google Cloud Platform Console のログビューアを使用してログ出力を閲覧できるようになります。Stackdriver Logging の料金が適用されることに注意してください。log_outputがNONEに設定されていると、ログにアクセスできません。log_outputをTABLEに設定すると、ログ出力はデータベースのテーブルに設定されます。このテーブルが大きくなると、インスタンスの再起動時間に影響を与えたり、インスタンスが SLA の対象外になったりする可能性があります。このため、TABLEオプションは推奨されません。必要に応じて、API を使用してログテーブルを切り捨てることができます。詳しくは、instances.truncateLog のリファレンス ページをご覧ください。第 1 世代インスタンスでは、
mysql.general_logテーブルまたはmysql.slow_logテーブルが非常に大きくなると、インスタンスの再起動後に接続が異常終了することがあります。この問題を回避するため、ログのサイズが 128 MB より大きい場合、general_logとslow_query_logの設定は起動時に無視されます。そのため、第 1 世代インスタンスでは、これらのフラグを一時的にのみ有効にするか、テーブルを定期的に切り捨てて小さいサイズに保つことをおすすめします。必要であれば、INSERT ... SELECTを使用して、mysql.general_logテーブルの内容を保存することもできます。 - innodb_file_per_table
-
このフラグは、MySQL 5.5 ではデフォルトで
OFFに設定され、それより後のすべてのバージョンではデフォルトでONに設定されます。 - max_heap_table_size、tmp_table_size
-
インスタンスが処理する同時クエリの数に対して、
tmp_table_sizeおよびmax_heap_table_sizeに設定する値が大きすぎると、インスタンスの使用可能なメモリが不足する可能性があります。メモリが不足すると、インスタンスがクラッシュして再起動します。これらのフラグの値によっては、インスタンスがその SLA 範囲外になる可能性があります。 詳細をご覧ください。これらのフラグの使用方法については、MySQL での内部一時テーブルの使用方法および MEMORY Storage Engine をご覧ください。
- query_cache_size、query_cache_type
-
これらのフラグの値によっては、インスタンスがその SLA 範囲外になる可能性があります。 詳細をご覧ください。
次のステップ
- MySQL のシステム変数の詳細。
- オペレーション ガイドラインの詳細。

