はじめに
テスト目的で単一サーバーのAzure Database for MySQLのログの量を増やす必要があり、
いろいろ試した結果やり方がわかったので備忘録として残します。
Azure Database for PostgreSQLでログの出力量を増やしたい場合は下記の記事をご参照ください。
https://iret.media/80065
方法
スロークエリのログ出力を有効化する。
以下の3つのサーバーパラメーターを有効化します。
- slow_query_log
スロークエリのログ出力を有効化します。 - long_query_time
スローログクエリの基準値, ここで設定した秒数より長い場合スロークエリとしてログ出力されます。 - log_queries_not_using_indexes
インデックスを使用しないクエリがログ出力されます。
これらの設定を有効化することでログの出力量が増えます。
また、Azure Database for MySQLでは設定できないですが、Virtual Machine上のMySQLなどであれば
以下のパラメーターを設定することでもログの出力量を増やすことが可能です。
- general_log
一般クエリのログ出力を有効化する。
ログの出力量を増やす方法については以上になります。
以降はAzure CLIやTerraformで設定する方法について記載していきます。
パラメーターの詳細については下記のドキュメントをご参照ください。
MySQL 5.1.8 サーバーシステム変数
Azure CLI
Azure CLIで既存のMySQLの設定を変更する場合は以下のようにコマンドを実行します。
# スロークエリのログ出力を有効化。 az mysql server configuration set --name slow_query_log --resource-group myresourcegroup --server mydemoserver --value ON # スロークエリの基準値を0秒に設定。 az mysql server configuration set --name long_query_time --resource-group myresourcegroup --server mydemoserver --value 0 # インデックスを使用しないスロークエリのログ出力を有効化。 az mysql server configuration set --name log_queries_not_using_indexes --resource-group myresourcegroup --server mydemoserver --value ON
Terraform
Terraformで環境を構築する場合は、以下のように記述します。
resource "azurerm_mysql_configuration" "slow_query_log" { name = "slow_query_log" resource_group_name = azurerm_mysql_server.master.resource_group_name server_name = azurerm_mysql_server.master.name value = "ON" } resource "azurerm_mysql_configuration" "long_query_time" { name = "long_query_time" resource_group_name = azurerm_mysql_server.master.resource_group_name server_name = azurerm_mysql_server.master.name value = "0" } resource "azurerm_mysql_configuration" "log_queries_not_using_indexes" { name = "log_queries_not_using_indexes" resource_group_name = azurerm_mysql_server.master.resource_group_name server_name = azurerm_mysql_server.master.name value = "ON" }
github上に全体のソースコードを載せているのでぜひ参考にしてください。
https://github.com/tkhs1121/terraform-azure-sample/tree/master/mysql-log
さいごに
誰かのお役に立てれば幸いです。