はじめに

テスト目的で単一サーバーの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

さいごに

誰かのお役に立てれば幸いです。