MySQLの運用
プロンプトの変更
MySQLのプロンプトにユーザ名,ホスト名やデータベース名を表示する
mysql> prompt (\u@\h)[\d]\_>
実行例
mysql> prompt (\u@\h)[\d]\_> PROMPT set to '(\u@\h)[\d]\_>' (root@localhost)[(none)] > (root@localhost)[(none)] >use mysql; Database changed (root@localhost)[mysql] >
ずっと変更する場合は、my.cnfに設定
# vi /etc/my.cnf [mysql] prompt=(\\u@\\h)[\\d]\\_>
パスワードの変更
mysql> SET PASSWORD FOR root@localhost = PASSWORD('root1234'); Query OK, 0 rows affected (0.00 sec) mysql>
ファイルへの出力
mysql> tee ファイル名
ファイルへの出力をやめるには
mysql> notee
innnodbのデータファイルの分割
その1 [mysqld] innodb_data_home_dir = innodb_data_file_path = /ibdata/ibdata1:100M:autoextend:max:2000M その2 [mysqld] innodb_data_home_dir = /ibdata innodb_data_file_path=ibdata1:50M;ibdata2:100M:autoextend その3 [mysqld] innodb_data_home_dir = innodb_data_file_path=/ibdata/ibdata1:50M;/ibdata/ibdata2:50M:autoextend
スロークエリーログの出力
3秒以上かかるクエリーを/var/log/slow.logに出力(デフォルトは10秒)
# vi /etc/my.cnf log-slow-queries = /var/log/slow.log long-query-time = 3
設定変更後にMySQLの再起動が必要
MySQLのエラー調査方法
MySQLは、内部エラーメッセージ(errno:**)やシステムエラーコード(Errcode:**)を
出力するので、perrorコマンドで意味の調査が可能
# perror 1 100 OS error code 1: Operation not permitted OS error code 100: Network is down #
レプリケーション異常時にクエリーを1行スキップしたい場合
mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTRER=1</i> mysql> START SLAVE;
断片化の対処
データファイルの断片化を解消するにはOPTIMIZE TABLEを実行する
mysql> OPTIMIZE TABLE テーブル名;
myisam-recoverオプション
myisam-recover=BACKUP,FORCEオプションを設定しmysqlを起動すると
アクセスしたテーブルに異常があった場合、テーブルを自動的に修復する
[Error] mysqld: Table 'テーブル名' is marked as crashed and should be repaired [Warning] Checking table: 'テーブル名'
自動修復で回復されないテーブルがあった場合、以下のエラーメッセージが出力される
Error: Couldn't repair table: テーブル名
または
Retrying repair of : テーブル名 failed. Please try REPAIRE EXTENDED or myisamchk
BACKUPを指定している場合、修復の際にデータファイル(MYD)のバックアップ(BAK)が取られる
強制修復の結果、少ない行しか救えなかった場合は、以下のようなメッセージが出力される
Warning: Found 222 of 233 rows when repairing テーブル名
自動修復で回復されないテーブルがあった場合、REPAIRテーブルを実行する
mysql> REPAIR [LOCAL] TABLE テーブル名 オプション