MySQLのコネクション数を取得

表題の通り。接続コネクション数がMaxConnectionsに達してエラーが出てしまった。その後、コネクション数を監視していて何が多く接続しているのかを確認したかった。

■ 環境

  • AWS RDS
  • MySQL 5.6.23

■ show processlist

下記で取得することができる。

mysql> show processlist;
+--------+----------+--------------------+--------------------+---------+-------+-------+------------------+
| Id     | User     | Host               | db                 | Command | Time  | State | Info             |
+--------+----------+--------------------+--------------------+---------+-------+-------+------------------+
|  31660 | rdsadmin | localhost:40321    | mysql              | Sleep   |     3 |       | NULL             |
  :
+--------+----------+--------------------+--------------------+---------+-------+-------+------------------+
18 rows in set (0.00 sec)

mysql>

rdsadmin“はRDSで起動しているからであろう。これは問題ない。それ以外のプロセスで”State“が”Sleep“で”Time“が異様に長いものは下記でプロセスを落としてしまう。

mysql> kill 137798;
Query OK, 0 rows affected (0.01 sec)

mysql>

以上。

■ 関連

select version();

MySQLにおいて表題の通り。稼働しているMySQLのversionが知りたかったのでメモ。

■ 環境

  • AWS RDS
  • MySQL 5.6.23

■ RDS

AWS RDSで稼働しているMySQLに接続して下記コマンドを実行する。

mysql> select version();
+------------+
| version()  |
+------------+
| 5.6.23-log |
+------------+
1 row in set (0.00 sec)

mysql>

これでversionが取得できる。

ちなみにヘルプを見てみると下記のようであった。

mysql> help version;
Name: 'VERSION'
Description:
Syntax:
VERSION()

Returns a string that indicates the MySQL server version. The string
uses the utf8 character set.

URL: http://dev.mysql.com/doc/refman/5.5/en/information-functions.html

Examples:
mysql> SELECT VERSION();
        -> '5.5.9-standard'

mysql>

以上。

■ 関連

MySQLでCSVを出力

表題の通り。ネットワーク越しにデータをCSV形式で出力したい時用のメモ。

■ 環境

  • MySQL

■ CSV

データの中に、”,“とかを含まない場合にのみ使える。AWSのRDSであったり、”INTO OUTFILE“が使えない環境で簡易にCSVにしたい場合に使ってる。

$ mysql -uroot -p --database=db --host=mysqlserver --batch -e "select * from test"
  | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > output.csv

普通にdumpした方が良いかもしれない…。が、まぁ時と場合によって使えるだろう。

以上。