全データベースのバックアップ/リストア(復元)†MySQLのデータをバックアップするには下記コマンドを入力します。 # mysqldump -u root -p -x --all-databases > dump.sql これで全部のデータベースがバックアップ可能です。 -xで全テーブルをロックします。 テーブルをロックしない場合は--single-transactionをオプションで指定します。 --all-databases でも-Aでも同じ意味です。 データベースのバックアップをリストア(復元)する†# mysql -u root -p < dump.sql 特定のデータベースのみのバックアップ†# mysqldump -u root データベース名 > dump.sql 特定データベースのみのリストア(復元)†# mysql -u root データベース名 < dump.sql 特定のデータベースのみのバックアップをリストア(復元)する†# mysql -u root -p リストア先のDB名 < バックアップしたSQLデータ dump時に-BつけるとCREATE DB文が発行されるので付けないほうが良い。 別名ではall-databasesで取得したdumpファイルからはリストアできないので注意。 allで取得したファイルからリストアさせたい場合は、dumpファイルのCREATEを書き換える必要があります。 mysqldump --all-databasesで全データベースを取得している場合†# mysql -u root -p --one-database DB名 < バックアップしたSQLデータ http://nippondanji.blogspot.jp/2009/12/mysqldumpawk.html 特定のテーブルのみのバックアップ/リストア(復元)†バックアップ # mysqldump -u root -p データベース名 --tables テーブル名 > dump_testtbl.sql
# mysql -u root -p データベース名 < dump_testtbl.sql 特定のテーブルのみ除外してバックアップ†--ignore-table=db_name.table_name 上記オプションを使用する。 例: mysqldump -u root -p -A --ignore-table=myql.user > mysqldump.sql 複数のデータベースをバックアップする†# mysqldump -u root -p -v -B testdb1 testdb2 > testdb1_2.sql -B をつけると複数データベースを取得可能 -B をつけないと最初のデータベース名の後はテーブルとして解釈されるので注意 -B をつけるとCREATE DB文が発行されるのでリストアする際に注意。別名でリストアする場合はsql文のUSEや IF NOT EXSISTSの部分を--でコメントアウトする 文字コード指定してバックアップ/リストア(復元)†# mysqldump -u root -p -x --all-databases --default-character-set=utf8 > /root/mysqldump20120829.sql # mysql -u root -p --default-character-set=utf8 < mysqldump20120829.sql
whereで条件を追加してdump(バックアップ)する(--where,-w)†mysqldump -u root -p DB名 テーブル名 --where "post_type != 'revision'" > mysqldump.sql gzファイルを解凍しながらリストアする†zcat mysqldump.gz | mysql -u root -p バックアップコマンド一覧†mysqldumpの結果をそのままtarで固める†mysqldump -uDBユーザー DB名 -pDBパスワード | gzip > DB名.dump.sql.gz tarで固めながらsshで大量にファイルを送る†/bin/tar cfvz - /backup/mysqldump_master_Tue.sql |/usr/bin/ssh ユーザー名@IPアドレス "/bin/cat '-' > ディレクトリ/mysqldump_master_Tue.sql.gz" DBをdump取りながらgzipしてリモートサーバーへ送る†/usr/bin/mysqldump -uユーザー名 -pパスワード -x --all-databases | /bin/gzip | /usr/bin/ssh ユーザー名@IPアドレス '/bin/cat > ディレクトリ/mysqldump_Wed.sql.gz' DBをdump取りながらgzipしてリモートサーバーへ送る Part2†DATE01=`date +\+w` mysqldump -u ユーザー名 -pパスワード -x --all-databases | /bin/gzip | ssh ユーザー名@リモートホスト "/bin/cat > /リモートディレクトリ/リモートホスト/${DATE01}/mysqldump_${DATE01}.gz" |