[[MySQL]]

~
*全データベースのバックアップ/リストア(復元) [#k3db8da0]
MySQLのデータをバックアップするには下記コマンドを入力します。~
 # mysqldump -u root -p -x --all-databases > dump.sql
 これで全部のデータベースがバックアップ可能です。
 -xで全テーブルをロックします。
 テーブルをロックしない場合は--single-transactionをオプションで指定します。
 --all-databases でも-Aでも同じ意味です。
~
*データベースのバックアップをリストア(復元)する [#ueb4e0eb]
 # mysql -u root -p < dump.sql 

*特定のデータベースのみのバックアップ [#xb78595b]
 # mysqldump -u root データベース名 > dump.sql

*特定データベースのみのリストア(復元) [#d65a961f]
 # mysql -u root データベース名 < dump.sql


*特定のデータベースのみのバックアップをリストア(復元)する [#nb985511]
 # mysql -u root -p リストア先のDB名 < バックアップしたSQLデータ
 dump時に-BつけるとCREATE DB文が発行されるので付けないほうが良い。
 別名ではall-databasesで取得したdumpファイルからはリストアできないので注意。
 allで取得したファイルからリストアさせたい場合は、dumpファイルのCREATEを書き換える必要があります。

***mysqldump --all-databasesで全データベースを取得している場合 [#vb30a5d1]
 # mysql -u root -p --one-database DB名 < バックアップしたSQLデータ
 http://nippondanji.blogspot.jp/2009/12/mysqldumpawk.html

*特定のテーブルのみのバックアップ/リストア(復元) [#r9215cbc]
バックアップ
 # mysqldump -u root -p データベース名 --tables テーブル名 > dump_testtbl.sql
~
リストア(復元)
 # mysql -u root -p データベース名 < dump_testtbl.sql

*特定のテーブルのみ除外してバックアップ [#j1d60be0]
 --ignore-table=db_name.table_name
 上記オプションを使用する。
 
 例: mysqldump -u root -p -A --ignore-table=myql.user > mysqldump.sql

*複数のデータベースをバックアップする [#f72599d2]
 # mysqldump -u root -p -v -B testdb1 testdb2 > testdb1_2.sql
 
 -B をつけると複数データベースを取得可能
 -B をつけないと最初のデータベース名の後はテーブルとして解釈されるので注意
 -B をつけるとCREATE DB文が発行されるのでリストアする際に注意。別名でリストアする場合はsql文のUSEや IF NOT EXSISTSの部分を--でコメントアウトする

*文字コード指定してバックアップ/リストア(復元) [#nd969410]
 # mysqldump -u root -p -x --all-databases --default-character-set=utf8 > /root/mysqldump20120829.sql
~
 # mysql -u root -p --default-character-set=utf8 < mysqldump20120829.sql
~
rootでパスワードを設定している場合は、各コマンドでrootの後に「-p」を入力します。~
そうするとパスワードの入力が求められますので、パスワードを入力するとコマンドが実行されます。

*whereで条件を追加してdump(バックアップ)する(--where,-w) [#b5ff0d0a]
 mysqldump -u root -p DB名 テーブル名 --where "post_type != 'revision'" > mysqldump.sql

*gzファイルを解凍しながらリストアする [#a0879f88]
 zcat mysqldump.gz | mysql -u root -p

*バックアップコマンド一覧 [#q5757e33]
***mysqldumpの結果をそのままtarで固める [#ycb47efc]
  mysqldump -uDBユーザー DB名 -pDBパスワード | gzip > DB名.dump.sql.gz

***tarで固めながらsshで大量にファイルを送る [#df29febb]
 /bin/tar cfvz - /backup/mysqldump_master_Tue.sql |/usr/bin/ssh ユーザー名@IPアドレス "/bin/cat '-' > ディレクトリ/mysqldump_master_Tue.sql.gz"

***DBをdump取りながらgzipしてリモートサーバーへ送る [#t74cdf71]
 /usr/bin/mysqldump -uユーザー名 -pパスワード -x --all-databases | /bin/gzip | /usr/bin/ssh ユーザー名@IPアドレス '/bin/cat > ディレクトリ/mysqldump_Wed.sql.gz'

***DBをdump取りながらgzipしてリモートサーバーへ送る Part2 [#sfad9c2b]
 DATE01=`date +\+w`
 mysqldump -u ユーザー名 -pパスワード -x --all-databases | /bin/gzip | ssh ユーザー名@リモートホスト "/bin/cat > /リモートディレクトリ/リモートホスト/${DATE01}/mysqldump_${DATE01}.gz"

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS