ホーム > MySQL
MySQL アーカイブ
MySQLをコマンドで管理するメモ
- 2010年9月8日 10:30 AM
- MySQL

お知らせメールをアップグレードするシェルを組んでいて、MySQLをコマンドベースで管理する方法をあまりにも知らなかったのでまとめます。
phpMyAdminを使っても良いのですが、色々と作業効率が落ちることが多いのと、作業が自動化出来ないので、きっちりコマンドを使って管理していきたいところです。
また、mysqlのコンソールに入ってから作業するのもちょっと効率が悪いです。
そのため、ここではLinuxのシェルから一発でMySQLの持っている情報を引き出せるコマンドをまとめることにします。
他に良いコマンドがあれば教えてください。
ここに掲載します!
基本編

データベース/テーブル情報参照
- データベース一覧を表示する
mysql -u[username] -p[password] -e "show databases;" | grep "[^+|-]" | sed "1d"
mysql -u[username] -p[password] [database] -e "show tables;" | grep "[^+|-]" | sed "1d"
データベース間のテーブルコピー
- database1からdatabase2へtableをコピーする(database2にテーブルが存在する場合は自動的にドロップする)
mysqldump -u[username] -p[password] [database1] [table] | mysql -u[username] -p[password] [database2]
バックアップ
- gzip形式でバックアップする
mysqldump -u[username] -p[password] [database] | gzip > [filename].sql.gz
mysqldump -u[username] -p[password] [database] [table1] [table2] | gzip > [filename].sql.gz
gzip -dc [filename].sql.gz | mysql -u[username] -p[password] [database]
設定確認
- コメントを除いて、MySQLの設定ファイルを確認する
egrep -v '^$|^#' /path/to/my.cnf
テーブルデータの全削除
- 特定テーブルのデータを全て削除する
mysql -u[username] -p[password] [database] -e 'truncate table [table name]';
応用編

レプリケーションの確認
- スレーブステータスを確認する
mysql -uroot -p armidale -e "show slave status;" | grep "[^-+]" | sed "1d;3d" | awk -F'\t' '{print $1}'
mysql -u[username] -p[password] [database] -e “show slave status;” | grep “[^-+]” | sed “1d;3d” | awk -F”|” ‘{print $2}’
[2010/09/14 追記]
うまく動かなかったので修正しました。
まだ、コマンドの組み合わせをうまく扱えませんね…。
キャッシュヒット率計算
- キーキャッシュヒット率を表示する
mysqladmin -u[username] -p[password] extended-status | grep -e Key_read_requests -e Key_reads | sort -f | paste -s | awk '{print 100-100*$4/$9}'
mysqladmin -u[username] -p[password] extended-status | grep -e Key_read_requests -e Key_reads | sort -f | paste -s | awk '{print 100*$4/$9}'
小野マトペの業務日誌さんで紹介されていたコマンドです。
現在の接続数確認
- 現在の接続数のみを表示する
mysqladmin -u[username] -p[password] extended-status | grep 'Threads_connected' | awk -F"|" '{print $3}'
Chiseiさんの記事を参考にさせて頂きました。
テーブルの全削除
- データベースを削除せずに、中にあるテーブルを全て削除する
mysql -u[username] -p[password] [database] -e "show tables" | grep -v "Tables_in" | grep -v "+" | awk '{print "drop table " $1 ";"}' | mysql -u[username] -p[password] [database]
かなり部分的にですが、個人的に良く使いそうなコマンドをまとめてみました。
皆さんはどんなコマンドを活用して、MySQLを管理していますか?
ホーム > MySQL
- エキスパートPythonプログラミング読書会 第二期 07の募集を開始しました! http://t.co/DuVQ32jM #expertpython 2 days ago
- 受付を撤収したので、遅れてくる方は @sanojimaru か、 @tfmagician まで声をかけてください。 #expertpython 3 days ago
- http://t.co/e4N59JH3 4章ですね、募集ページを修正しました。 #expertpython 3 days ago
- More updates...
- 無印良品の高度なFacebook連携がさすがだと思った件 « Looops 直人の備忘録
- Node.jsがどうして注目されているのか、もしくはどうして他のサーバサイドJavaScriptはスルーされているのか - id:anatooのブログ
- 0から始めるiPhoneからのWordPress更新術。第9回 終わりに。一連の流れ ...
- shell.vim 0.9.6 -- Improved integration between Vim and its environment (fullscreen, open URL, etc)
- Cakephp auth refresh websites and posts on cakephp auth refresh
- さよなら、iPhone。 日本でも訴訟されて発売されるGalaxyS2の凄さがわかる動画 alpha device
- フィードからの情報をデスクトップ通知してくれるChrome拡張機能「RSS Alert」
- PHPとアジャイル開発の勉強会を開催しました | 48JIGEN
- レノボ、Android 採用の ThinkPad タブレットを今夏発売へ。Windowsタブレットは年内
- 致命的すぎるバグがgithubで話題 « A-Listers
