GoogleCloudSQLでのクエリログ取得と確認の方法を自分用にメモ
経緯
GoogleCloudにあるMySQLのクエリログの取得が必要になったので・・
前提知識として
MySQLでクエリログを取得したいときには
general_log設定をONにする必要があります。(デフォルトではOFF)
通常のMySQLでは下記のようなコマンドでgeneral_log設定の確認ができます。
show variable like 'general_log%';
Variable_name | Value |
---|---|
general_log | OFF |
general_log_file | /mysql/logs/general.log |
set global general_log = on;
上記のようなSQLで設定をONにできます。
でもGoogleCloudでは、権限が足りず上記のやり方では変更ができません。
SQL query:
set global general_log = on
MySQL のメッセージ: ドキュメント
#1227 - アクセスは拒否されました。この操作には SUPER 権限が(複数の場合はどれか1つ)必要です。
GoogleCloudのMySQLの場合は管理画面から設定を変更する必要があります。
GoogleCloudSQLの管理画面へ
https://console.cloud.google.com
↑
Googleアカウントにログインした状態で訪れれば、よしなにプロジェクト画面にリダイレクトされると思います(そうじゃなかったらすいません)
私の場合の画面こんな感じ。(なにをどこまで伏せればいいのか迷ったのですが若干のモザイク付与)
デフォルト画面ではGoogleCloudSQLの表示がないので「すべてのプロダクトを表示」をクリックしる。
左側メニューの「データベース」をクリック、あるいは画面を下にスクロールすると「SQL」があります。それをクリック。
そしたらSQLインスタンス一覧を見られるので、設定したいインスタンスIDをクリック
そしたらようやくこの画面(AWSもそうだけど、こういう管理画面って初見だと迷いませんか。私はよく迷います。だからメモ)
下にスクロールして
「構成」項目から[構成を編集]をクリック
「フラグ」項目を開いたら「データベースフラグを追加」が表示されるので
データベースフラグを追加 を押します
(画像は「フラグ」項目を開いた時の状態)
「新しいデータベースフラグ」という項目で好きな設定をします。
今回はlog_outputの設定を「FILE」に設定しています。
(この画面では、既に存在するフラグの編集をしてる画面になっておりますが・・)
「TABLE」も選択可能ですが、TABLEよりもFILEの方が推奨のようです。
※公式の情報として
log_output を TABLE に設定しないでください。このように設定すると、フラグの使用に関するヒントで説明するような接続の問題が発生する場合があります。
とのこと。なのでFILEがよいかとおもいます。
これでとりあえずクエリログの設定ができました。
クエリログを確認する
ログの設定を変更した後の画面の、真ん中くらいまで下にスクロールしたら「オペレーションとログ」という項目があるので、そこで「MySQLのエラーログを表示」をクリックします。
そうしたら下記のような画面になります。
mysql.errタブをクリックすると、確認ログを選べるので、今回の場合general_logを選択します。
ログの種類を選んで、「適用」ボタンを押します。
ちなみに右上の方で日時指定もできます。
これでログ確認ができるようになりますた。