DrupalユーザのためのMySQLメモ

pericles
Ubuntu等のLinux OSや、windows上のcygwinからssh経由でMySQLにコマンドライン接続する際の、SQLコマンド等のメモです。

* 稼働状況確認
mysql> SHOW STATUS
$ mytop –prompt
$ sudo iotop -oPa

* ステータス/起動/停止/再起動
$ sudo service mysql status
$ sudo service mysql start
$ sudo service mysql stop
$ sudo service mysql restart

* 全テーブルのレコード数を確認
mysql> select table_name, table_rows from information_schema.TABLES;

* ログファイル等の場所
$ sudo lsof -nc mysqld | grep -vE ‘(\.so(\..*)?$|\.frm|\.MY?|\.ibd|ib_logfile|ibdata|TCP)’

* enable slow query log
mysql> SET GLOBAL slow_query_log = ‘ON’;
mysql> FLUSH LOGS;

* MySQLをViモードで操作。
~/.inputrcに以下を追加
$if mysql
set editing-mode vi
$endif

~/.editrcに以下を追加
bind -v

* DB接続
$ mysql -u root -p
$ mysql -uユーザ名 -p データベース名
mysql> use データベース名

データベース一覧表示
mysql> SHOW DATABASES;

テーブル一覧表示
mysql> SHOW TABLES;

カラム情報表示
mysql> DESCRIBE テーブル名;
mysql> DESC テーブル名;

行数を取得
mysql> select searchengine, count(searchengine) from accesslog;

* 全てのデータベースのサイズを確認する
mysql> select table_schema, sum(data_length+index_length) /1024 /1024/1024 as GB from information_schema.tables group by table_schema order by sum(data_length+index_length) desc;

* 特定のデータベースの、テーブル毎のサイズを取得
select
table_name,
table_comment,
table_rows,
avg_row_length,
round((data_length + index_length)/1024/1024) as total_size_MB, — 合計サイズ
round(data_length/1024/1024) as data_size_MB, — データサイズ
round(index_length/1024/1024) as index_size_MB — インデックスサイズ
from INFORMATION_SCHEMA.TABLES
where table_schema = ‘データベース名’
order by total_size_MB desc, data_size_MB desc, index_size_MB desc, table_name

* mysqlによるDrupalフィールド型の確認方法
$ mysql -u dp_db_admin -D db_yourdatabase -p
mysql> select id,field_name,type from field_config;

* export and import
$ mysqldump -u [username] -p [database_name] > [dumpfilename.sql] $ mysql -u [username] -p [database_name] < [dumpfilename.sql]

* MySQL root パスワードを変更
$ mysqladmin -u root -p’oldpassword’ password newpassword

* MySQL rootパスワードリセット
$ sudo service mysql stop
$ mysqld_safe –skip-grant-tables &
$ mysql -u root
mysql> use mysql;
mysql> update user set password=PASSWORD(“newrootpassword”) where User=’root’;
mysql> flush privileges;
mysql> quit
$ sudo killall mysqld
$ sudo service mysql restart
$ mysql -u root -p

* DrupalノードIDとタイトルをCSVで取得
SELECT nid,title FROM node INTO OUTFILE “data.csv” FIELDS TERMINATED BY ‘,’
OPTIONALLY ENCLOSED BY ‘”‘;
ノードIDをURLに変換(行頭にURL文字列追加)
$ sed -e ‘s/^/http:\/\/example.com\/node\//’ data.csv

* バックアップとリストア
$ mysqldump -u root -p -x –all-databases > dump.sql
$ mysql -u root -p < dump.sql $ mysqldump -u user -p db_name > dumpfile.sql
$ mysql -u root -p
mysql> CREATE DATABASE `db_name`;
mysql> exit
$ mysql -u user -p db_name < dumpfile.sql

* 最適化
$ mysqlcheck -u root -p –auto-repair –optimize –all-databases

mytop

* インストール
$ sudo apt-get install mytop

* DBのモニタ
$ mytop –prompt
$ mytop –prompt -d gallery # DB名指定する場合

https://matome.naver.jp/odai/2139912913705934201
2016年03月29日