サーバ運用でよく使うMySQLコマンド集
ログイン
shell
$ mysql -u${USER} -p ${DATABASE} -h${HOST}
テーブルのテキストデータダンプ
mysql-command-line
mysql > SELECT * INTO OUTFILE '/tmp/${TABLE_NAME}.txt' FROM ${TABLE_NAME};
テーブルのテキストデータ取り込み
mysql-command-line
mysql > LOAD DATA LOCAL INFILE '/tmp/${TABLE_NAME}' REPLACE INTO TABLE ${TABLE_NAME};
データベースバックアップ
shell
$ mysqldump -uroot -p ${DATABASE} --skip-lock-tables > /tmp/${DATABASE}.sql
データベースリストア
shell
$ mysql -uroot -p ${DATABASE} < /tmp/${DATABASE}.sql
テーブルカラム追加
mysql-command-line
mysql > ALTER TABLE ${TABLE_NAME} ADD ${COLUMN} column_definition AFTER ${COLUMN_NAME};
column_definition: varchar(32)とか
テーブルにINDEX追加
mysql-command-line
mysql > ALTER TABLE ${TABLE_NAME} ADD INDEX ${INDEX_NAME}(${COLUMN_NAME});
テーブルのリネーム
mysql-command-line
mysql > RENAME TABLE ${TABLE_NAME} TO ${TABLE_NAME}_tmp, ${TABLE_NAME}_shadow TO ${TABLE_NAME}, ${TABLE_NAME}_tmp TO ${TABLE_NAME}_shadow;
プロセスリスト
mysql-command-line
mysql > SHOW PROCESSLIST;
プロセスkill
mysql-command-line
mysql > KILL ${PROCESS_ID};
レプリケーション設定
mysql-command-line
mysql > CHANGE MASTER TO
MASTER_HOST='${HOST}',
MASTER_PORT=${PORT},
MASTER_USER='${USER}',
MASTER_PASSWORD='${PASSWORD}',
MASTER_LOG_FILE='${BINLOG}',
MASTER_LOG_POS=${BINLOG_POSITION};
レプリケーションのステータス確認
mysql-command-line
mysql > SHOW SLAVE STATUS\G
レプリケーションの停止
mysql-command-line
mysql > STOP SLAVE;
レプリケーションの開始
mysql-command-line
mysql > START SLAVE;
レプリケーションのポジションスキップ
mysql-command-line
mysql > SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
データベースロック
mysql-command-line
mysql > FLUSH TABLES WITH READ LOCK;
※quitするとロックが外れます
ロック解除
mysql-command-line
mysql > UNLOCK TABLES;
以下は稀に使う(できれば使いたくないw)コマンド
binlog展開
shell
$ mysqlbinlog --no-defaults ${BINLOG_FILE} > /tmp/${BINLOG_FILE}.sql
binlog削除
mysql-command-line
mysql > SHOW MASTER LOGS;
mysql > PURGE MASTER LOGS TO '${BINLOG}';