ホーム > MySQL

MySQL アーカイブ

MySQLをコマンドで管理するメモ

mysql_commands.png

お知らせメールをアップグレードするシェルを組んでいて、MySQLをコマンドベースで管理する方法をあまりにも知らなかったのでまとめます。
phpMyAdminを使っても良いのですが、色々と作業効率が落ちることが多いのと、作業が自動化出来ないので、きっちりコマンドを使って管理していきたいところです。

また、mysqlのコンソールに入ってから作業するのもちょっと効率が悪いです。
そのため、ここではLinuxのシェルから一発でMySQLの持っている情報を引き出せるコマンドをまとめることにします。

他に良いコマンドがあれば教えてください。
ここに掲載します!

基本編

beginner_mysql.jpg

データベース/テーブル情報参照

  • データベース一覧を表示する
  • 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
    
  • gzip形式でtable1とtable2のみをバックアップする
  • mysqldump -u[username] -p[password] [database] [table1] [table2] | gzip > [filename].sql.gz
    
  • gzip形式のバックアップをリストアする
  • 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]';
    

応用編

advanced_mysql.jpg

レプリケーションの確認

  • スレーブステータスを確認する
  • 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

スポンサードリンク
書いている人
つぶやき
RSS 気になるニュース
過去の記事

ページの上部に戻る