2012年10月19日金曜日

MySQLのバックアップ・リストアなど



MySQLでのバックアップ、リストアの調べたのでなんとなくメモ。

(1)DBの状態を確認
 use データベース名;
 status;

(2)ファイルシステムに配置しているのSQLファイルをを実行
mysqlプロンプト上で、sourceコマンドを利用

mysql > source ファイル名;

ファイル名は絶対パス指定、相対パス指定が使える

(3)バックアップ
mysqldumpコマンドを利用する
a)全バックアップ
$ mysqldump -A -u root -p パスワード --opt > ダンプファイル名

b)特定データベース名を指定してバックアップ
$ mysqldump データベース名 -u root -p パスワード --opt > ダンプファイル名

--optは全部入り
個別に指定することもできる
--add-drop-table    dropテーブルを追加

ダンプ時の文字コードを指定する場合は
--default-character-set=文字コード

c)データのみをダンプ

mysqldump -u ユーザ名 -e -c -t -p foo_db > dump.sql

d)指定条件(WHERE句の形式で指定)のデータたけをダンプ

mysqldump -u ユーザ名 --where="条件" -p データベース名 テーブル名 > ファイル名


(4)リストア
バックアップしたファイル名を標準入力から入れる

a)全データリストア
$mysql -u root -p パスワード < ダンプファイル名

b)特定データベースに設定
$mysql -u root -p パスワード データベース名 < ダンプファイル名


(5)select結果をファイルに出力
a) mysql上で
select * into outfile 'ファイル名' from テーブル名;

CSVで出力する場合は fields terminatedでセパレータに,を指定
select * into outfile 'ファイル名' from テーブル名 fields terminated by ',';

b) コマンドライン上で
$ mysql -e "select * from テーブル名" -u ユーザ名 -p データベース名 > ファイル名

(6)ファイルを取り込み
load data infile 'ファイル名' into table テーブル名;
CSVを取り込む場合は fields terminatedでセパレータに,を指定
load data infile 'ファイル名' into table テーブル名 fields terminated by ',';

0 件のコメント: