DEFAULT or YES = STORAGE ENGINE IS COMPILED IN AND ENABLED
DISABLE = COMPILED IN BUT DISABLED
NO = NOT COMPILED

mysql> SHOW ENGINES;
+————+———+—————————————————————-+————–+—–+————+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+————+———+—————————————————————-+————–+—–+————+
| MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| InnoDB | YES | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
+————+———+—————————————————————-+————–+—–+————+
7 rows in set (0.05 sec)

mysql>


InnoDBコマンド オプション



*  –innodb
もしサーバが InnoDB サポートでコンパイルされると
InnoDB ストレージ エンジンが有効になります。
InnoDB を無効にするには –skip-innodb を利用。



* innodb_buffer_pool_sizeInnoDB がそのテーブルのデータ
とインデックスをキャッシュする為に利用する、メモリバッファのバイト
でのサイズです。この値を大きく設定するほど、テーブル内のデータに
アクセスするのに必要なディスク I/O は少なくなります。
専用のデータベース サーバ上で、これをマシンの物理的メモリ
サイズの最大80% に設定すると良いでしょう。しかし、物理的メモリの競合が
OS 内でページングを引き起こす可能性があるので、あまり大きく設定しない



* innodb_commit_concurrency同時にコミットする事ができるスレッドの数。
0の値は並行処理制御を無効にします。



※ –skip-myisam optionは、ありません。MYISAM Storage Engineは無効にする事が出来ません。


テーブルロックについて。
ロックはUNLOCK TABLESコマンドが、クライアントから実行された時にリリースされる。

※ クライアントが他のロックをLOCK TABLESによって取得リクエストをかけた時
※ 接続を切断した時
※ ABORTされた時(KILLコマンドなど)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
MYSQLでのロック動作確認
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
mysql> LOCK TABLES company READ; LOCK TABLES innodb_monitor write;
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

※ このクエリーだとcompanyは直ぐにリリースされて、innodb_monitorのみロックされる。

mysql>

mysql> LOCK TABLES company READ,innodb_monitor write;
Query OK, 0 rows affected (0.00 sec)

mysql>

■ mysql>SELECT * FROM innodb_monitor; 
  ここで別のクライアントからselectしたら他のプロセスのwrite lockにて待たされる。

mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

mysql>

■ mysql>SELECT * FROM innodb_monitor;
  ロックが解放されたので、select結果が表示される。


MYSQLが提供している関数

mysql> select IS_FREE_LOCK(‘app lock’);
+————————–+
| IS_FREE_LOCK(‘app lock’) |
+————————–+
| 1 |
+————————–+
1 row in set (0.00 sec)

mysql>

※ 1はロック取得可能

mysql> select GET_LOCK(‘app lock’,10);
+————————-+
| GET_LOCK(‘app lock’,10) |
+————————-+
| 1 |
+————————-+
1 row in set (0.00 sec)

mysql>

※ 1は10秒以内にLockが取得される。10はtimeoutの値

mysql> select IS_FREE_LOCK(‘app lock’);
+————————–+
| IS_FREE_LOCK(‘app lock’) |
+————————–+
| 0 |
+————————–+
1 row in set (0.00 sec)

mysql> select RELEASE_LOCK(‘app lock’);
+————————–+
| RELEASE_LOCK(‘app lock’) |
+————————–+
| 1 |
+————————–+
1 row in set (0.00 sec)

※ 1はlockリリースが問題なく実行されたという事

mysql> select IS_FREE_LOCK(‘app lock’);
+————————–+
| IS_FREE_LOCK(‘app lock’) |
+————————–+
| 1 |
+————————–+
1 row in set (0.00 sec)

mysql>

もっと他の関数は、こちらのサイトにあります。

(例)
数字のネットワーク アドレス ( 4 または 8 バイト ) を与えられ、
アドレスのドット形式のクワッド表示をストリングとして戻します。

mysql> SELECT INET_NTOA(3520061480);
+———————–+
| INET_NTOA(3520061480) |
+———————–+
| 209.207.224.40 |
+———————–+
1 row in set (0.00 sec)

mysql>


MY ADMINを利用してMYSQLのFULL BACKUPから、
特定テーブルのリストアを行う方法。
普段は、mysqldumpでバックアップして、mysqlコマンドでリストア
しているので良い勉強になりました。

① まずはテストの為にBACKUPを作成してみます。
BACKUPプロジェクトを作成して「EXECUTE BACKUP NOW」で
バックアップを取得してみます。


BACKUP


② テストの為にBACKUPを取得した、DBにあるテーブルから
データを削除してみます。


DELETE


③ MYSQL AdministratorにてRESTOREを選択して、
①にて作成したBACKUPファイルを開き、「Analyze Backup File」を選択
しリストアしたいテーブルのみをチェックします。
※ FULLでリストアしたいときは、特に特定のテーブルのみ選択しないで
全てリストアしてください。


RESTORE


④ リストアがきちんと行われたかテーブルをselectして確認してみて下さい。
データが戻っていれば成功です。


CONFIRMATION


⑤ データが戻っているので成功ですね。


MYSQLが稼動中に作成したtemporary tableの推移をグラフにして

モニタリングする方法。

① MYSQL ADMINISTRATORを開いてグラフエリアで「ADD A GROUP」として名前を付ける。

② 新しいグラフグループにて、「ADD A GRAPH」を選択。

③ lineグラフを選択して  ^[created_tmp_tables] をformulaに追加する。

以下の図のようにtemp tableが作成された様子がグラフになってモニタリング

出来るので、パフォーマンスの調整に利用出来ます。

tmp_tables_graph


存在しているユーザーの確認

[root@colinux tmp]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 26
Server version: 5.1.30 MySQL Community Server (GPL)

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql> use mysql
Database changed
mysql> select user,host,password from mysql.user;
+———-+———–+——————————————-+
| user     | host      | password                                  |
+———-+———–+——————————————-+
| root     | localhost | *N41EFFFE1191DDDD7D3F2B6F5A9CDDD0DDDDDC3D |
| root     | colinux   | *N41EFFFE1191DDDD7D3F2B6F5A9CDDD0DDDDDC3D |
| root     | 127.0.0.1 | *N41EFFFE1191DDDD7D3F2B6F5A9CDDD0DDDDDC3D |
| variable | %         | *N41EFFFE1191DDDD7D3F2B6F5A9CDDD0DDDDDC3D |
+———-+———–+——————————————-+
4 rows in set (0.00 sec)

mysql>

ユーザー権限の確認

mysql> SELECT Host, User, Select_priv, Insert_priv,Update_priv, Delete_priv FROM user;
+———–+———-+————-+————-+————-+————-+
| Host      | User     | Select_priv | Insert_priv | Update_priv | Delete_priv |
+———–+———-+————-+————-+————-+————-+
| localhost | root     | Y           | Y           | Y           | Y           |
| colinux   | root     | Y           | Y           | Y           | Y           |
| 127.0.0.1 | root     | Y           | Y           | Y           | Y           |
| %         | variable | Y           | Y           | Y           | Y           |
+———–+———-+————-+————-+————-+————-+
4 rows in set (0.01 sec)

mysql>

ユーザーとDB毎の権限確認

mysql> select Db,User,Host,Select_priv from db;
+———+——-+———–+————-+
| Db      | User  | Host      | Select_priv |
+———+——-+———–+————-+
| test    |       | %         | Y           |
| test\_% |       | %         | Y           |
| DB02    | admin | localhost | Y           |
+———+——-+———–+————-+
3 rows in set (0.00 sec)

mysql> select Db,User,Host,Select_priv,Insert_priv,Update_priv from db;
+———+——-+———–+————-+————-+————-+
| Db      | User  | Host      | Select_priv | Insert_priv | Update_priv |
+———+——-+———–+————-+————-+————-+
| test    |       | %         | Y           | Y           | Y           |
| test\_% |       | %         | Y           | Y           | Y           |
| DB02    | admin | localhost | Y           | Y           | Y           |
+———+——-+———–+————-+————-+————-+

3 rows in set (0.49 sec)

mysql>

mysql_priv

mysql_priv


MYSQL 稼動状態確認 (ローカル、リモート)

[root@colinux ~]# mysqladmin ping -h localhost -u root -p
Enter password:
mysqld is alive
[root@colinux ~]#

MYSQLサービス状態の確認

[root@colinux ~]# mysqladmin status -u root -ppassword
Uptime: 12793  Threads: 1  Questions: 77  Slow queries: 0  Opens: 18  Flush tabl
es: 1  Open tables: 4  Queries per second avg: 0.6
[root@colinux ~]#

MYSQLバージョン確認

[root@colinux bin]# mysqladmin version -u root -ppassword
mysqladmin  Ver 8.42 Distrib 5.1.30, for pc-linux-gnu on i686
Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license

Server version          5.1.30
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /tmp/mysql.sock
Uptime:                 14 min 12 sec

Threads: 1  Questions: 12406  Slow queries: 0  Opens: 472  Flush tables: 2  Open
tables: 3  Queries per second avg: 14.561
[root@colinux bin]#

GRANTテーブルをリロード

[root@colinux bin]# mysqladmin flush-privileges -u root -ppassword
[root@colinux bin]#

————————————————————————————————–

————————————————————————————————–

create databasename   Create a new database
debug                 Instruct server to write debug information to log
drop databasename     Delete a database and all its tables
extended-status       Gives an extended status message from the server
flush-hosts           Flush all cached hosts
flush-logs            Flush all logs
flush-status          Clear status variables
flush-tables          Flush all tables
flush-threads         Flush the thread cache
flush-privileges      Reload grant tables (same as reload)
kill id,id,…        Kill mysql threads

ping                  Check if mysqld is alive
processlist           Show list of active threads in server
reload                Reload grant tables
refresh               Flush all tables and close and open logfiles
shutdown              Take server down
status                Gives a short status message from the server
start-slave           Start slave
stop-slave            Stop slave
variables             Prints variables available
version               Get version info from server

※ [root@colinux ~]# mysqladmin shutdown -u root -ppassword

mysqladminでローカルリモートサーバーのshutdownが可能。startオプション無し。
mysqlコマンドでは出来ません。

■ping Check if mysqld is alive
[root@localhost ~]$ mysqladmin ping -h localhost -u root -p
Enter password:
mysqld is alive
[root@localhost ~]$

■processlist Show list of active threads in server
[root@localhost ~]$ mysqladmin processlist -h localhost -u root -p
Enter password:
+——+——+—————–+—-+———+——+——-+——————+
| Id | User | Host | db | Command | Time | State | Info |
+——+——+—————–+—-+———+——+——-+——————+
| 3638 | root | localhost:37293 | | Query | 0 | | show processlist |
+——+——+—————–+—-+———+——+——-+——————+
[root@localhost ~]$

■reload Reload grant tables
[root@localhost ~]$ mysqladmin reload -h localhost -u root -p
Enter password:
[root@localhost ~]$

■refresh Flush all tables and close and open logfiles
[root@localhost ~]$ mysqladmin refresh -h localhost -u root -p
Enter password:
[root@localhost ~]$

■shutdown Take server down
[root@localhost ~]$ mysqladmin shutdown -h localhost -u root -p
Enter password:
[root@localhost ~]$

※注意 Startは出来ません。

■status Gives a short status message from the server
[root@localhost ~]$ mysqladmin status -h localhost -u root -p
Enter password:
Uptime: 90 Threads: 1 Questions: 1 Slow queries: 0 Opens: 15 Flush tables: 1 Open tables: 8 Queries per second avg: 0.11
[root@localhost ~]$

■start-slave Start slave
■stop-slave Stop slave
■variables Prints variables available
[root@localhost ~]$ mysqladmin variables -h localhost -u root -p
Enter password:
+———————————+———————————————————————–+
| Variable_name | Value |
+———————————+———————————————————————–+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
| autocommit | ON |
| automatic_sp_privileges | ON |
| back_log | 50 |
| basedir | /usr/local/src/mysql-5.1.25-rc-linux-i686-icc-glibc23/ |
| big_tables | OFF |
| binlog_cache_size | 32768 |
| binlog_format | MIXED |
| bulk_insert_buffer_size | 8388608 |
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |

■version Get version info from server
[root@localhost ~]$ mysqladmin version -h localhost -u root -p
Enter password:
mysqladmin Ver 8.42 Distrib 5.1.25-rc, for redhat-linux-gnu on i686
Copyright (C) 2000-2006 MySQL AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license

Server version 5.1.25-rc-log
Protocol version 10
Connection localhost via TCP/IP
TCP port 3306
Uptime: 3 min 19 sec

Threads: 1 Questions: 4 Slow queries: 0 Opens: 15 Flush tables: 1 Open tables: 8 Queries per second avg: 0.20
[root@localhost ~]$


■ mysqlクライアントを利用してのDB作成

mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| test |
+——————–+
3 rows in set (0.00 sec)

mysql> CREATE DATABASE DB01 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.04 sec)

mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| DB01 |
| mysql |
| test |
+——————–+
4 rows in set (0.00 sec)

mysql>

■ mysqladminコマンドを利用してのDB作成

[root@colinux ~]# mysqladmin -u root -ppassword CREATE DB02;

[root@colinux ~]# mysqlshow -u root -ppassword
+——————–+
|     Databases      |
+——————–+
| information_schema |
| DATABASE           |
| DB01               |
| DB02               |
| mysql              |
| test               |
+——————–+
[root@colinux ~]#

DBは作成されているが、文字コードや照合順序は?

mysql> show create database DB02;
+———-+—————————————————————+
| Database | Create Database                                               |
+———-+—————————————————————+
| DB02     | CREATE DATABASE `DB02` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+———-+—————————————————————+
1 row in set (0.00 sec)

※ 文字コードを設定し忘れた場合、ALTER DATABASE DB02 default character set=utf8; で変更可能。

mysql> SHOW COLLATION LIKE ‘utf8_%_ci’;

collation


【MY.CNFでのログの値】

#接続ログ、コマンドなども見ることが出来る。(重くなるので、普段はコメント)
log=/usr/local/mysql/data/servername_com.log
#処理の遅いクエリーを見つける。(ここでは、3秒以上)
long_query_time=3
log_slow_queries=/usr/local/mysql/data/slow_query.log
# indexを利用していないクエリーをslog logの中に記録する。
log_queries_not_using_indexes
# バイナリーコマンドログ。(Replicationには必須: mysqlbinlogコマンドで読める)
log-bin=mysql-bin

※log_queries_not_using_indexes に関しては、Slow_Queriesログの中にログを書き込みます。

【DB側で設定確認】
mysql> show variables like ‘log%’;
+———————————+———————————————-+
| Variable_name | Value |
+———————————+———————————————-+
| log | OFF |
| log_bin | ON |
| log_bin_trust_function_creators | OFF |
| log_bin_trust_routine_creators | OFF |
| log_error | /usr/local/mysql/data/servername_com.com.err |
| log_output | FILE |
| log_queries_not_using_indexes | ON |
| log_slave_updates | OFF |
| log_slow_queries | ON |
| log_warnings | 1 |
+———————————+———————————————-+
10 rows in set (0.00 sec)

mysql>

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
※ こんなGLOBALコマンドでも設定可能
set global log_queries_not_using_indexes = ON;
set global log_queries_not_using_indexes = OFF;

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
その他のオプション
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■log_bin_trust_function_creators
http://dev.mysql.com/doc/refman/5.1/ja/stored-procedure-logging.html
■log_bin_trust_routine_creators
http://dev.mysql.com/doc/refman/5.1/ja/news-5-1-8.html
■log_slave_updates
http://dev.mysql.com/doc/refman/5.1/ja/server-system-variables.html
■log_warnings
http://dev.mysql.com/doc/refman/5.1/ja/error-log.html