facebook twitter hatena line email

「Mysql/ダンプ・リストア」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(外部キー制約を解除してまとめてリストア)
 
(同じ利用者による、間の27版が非表示)
行2: 行2:
  
 
==バックアップ(db全体)==
 
==バックアップ(db全体)==
  mysqldump -uroot -p --database project1 --default-character-set=utf8 > project1.sql
+
  mysqldump -uroot -p project1 --default-character-set=utf8 > project1.sql
  
 
==バックアップ(table指定)==
 
==バックアップ(table指定)==
 
  mysqldump -uroot -p project1 table1 table2 --default-character-set=utf8 > project1_table1_2.sql
 
  mysqldump -uroot -p project1 table1 table2 --default-character-set=utf8 > project1_table1_2.sql
 +
 +
==バックアップ(table指定&データのみ)==
 +
mysqldump -uroot -p -t project1 table1 > project1_table1.sql
 +
 +
==バックアップ(table指定&データのみ条件付)==
 +
mysqldump -uroot -p -t database1 table1 --where 'id=1 ORDER BY id DESC LIMIT 1' > project1_table1_id1.sql
  
 
==オンラインバックアップ==
 
==オンラインバックアップ==
 
書き込みロックがかからなくなる
 
書き込みロックがかからなくなる
 
  mysqldump -uroot -p --database project1 --default-character-set=utf8 --single-transaction > project1.sql
 
  mysqldump -uroot -p --database project1 --default-character-set=utf8 --single-transaction > project1.sql
 +
 +
==テーブル定義のみバックアップ==
 +
mysqldump -d -uroot -p database1 table1
 +
 +
==バックアップgzip圧縮==
 +
mysqldump -uroot -p --database project1 --default-character-set=utf8 | gzip > project1.sql.gz
  
 
==復元==
 
==復元==
  mysql -uroot -p  < project.sql
+
  mysql -uroot -p  < project1.sql
 +
 
 +
==復元(db指定)==
 +
mysql -uroot -p database1 < project1.sql
 +
 
 +
==強制的に復元==
 +
mysql -uroot -p  -f < project1.sql
 +
 
 +
==復元(gzipから)==
 +
zcat project1.sql.gz | mysql -uroot -p project1
 +
 
 +
==復元パス付(非推奨)==
 +
mysql -uroot -ppass1  < project1.sql
 +
 
 +
==復元パス付(非推奨)パスにカッコなどがある場合==
 +
mysql -uroot -p'pass1('  < project1.sql
 +
 
 +
==一時的な外部キーの有効無効==
 +
SET FOREIGN_KEY_CHECKS=0; // 外部キーの無効
 +
SET FOREIGN_KEY_CHECKS=1; //外部キーの有効
 +
 
 +
==まとめてリストアバッチ==
 +
for file in `\find ./schema1 -maxdepth 1 -type f`; do
 +
    mysql -uroot -ppass1 blog < ${file:2}
 +
done
 +
===外部キー制約を解除してまとめてリストア===
 +
find ./schema1 -type f | xargs cat > schema1.sql #ファイル結合
 +
sed -i '1iSET FOREIGN_KEY_CHECKS=0;' schema1.sql #外部キーの制約offを、ファイルの先頭に追加(時間がかかるようなvimで、先頭に入れてもよい)
 +
echo 'SET FOREIGN_KEY_CHECKS=1;' >> schema1.sql #外部キーの制約onを、ファイルの最後尾に追加
 +
mysql -uroot -ppass1 blog < schema1.sql
 +
 
 +
==schemaもまとめてリストアバッチ==
 +
declare -a schemas=()
 +
declare -a schemas=(
 +
"schema1"
 +
"schema2"
 +
)
 +
for e in ${schemas[@]}; do
 +
  for file in `\find ./${e} -maxdepth 1 -type f`; do
 +
      mysql -uroot -ppass1 blog < ${file:2}
 +
    echo ${file:2};
 +
  done
 +
done
 +
 
 +
==復元中の処理を見る==
 +
show processlist;
 +
+----+------+-----------+----------------------+---------+------+-----------+------------------------------------------------------------------------------------------------------+
 +
| Id | User | Host      | db                  | Command | Time | State    | Info                                                                                                |
 +
+----+------+-----------+----------------------+---------+------+-----------+------------------------------------------------------------------------------------------------------+
 +
|  7 | root | localhost | test1                | Query  |    0 | query end | INSERT INTO `test` VALUES (1557549,1056447,NULL,NULL,NULL,                                          |
 +
|  9 | root | localhost | NULL                | Query  |    0 | starting  | show processlist                                                                                    |
 +
 
 +
 
 +
==windowsのmysqlからの読み込み==
 +
mysql -uroot -p < C:\documents\test.sql
 +
 
 +
==mysql5.7からのdumpコマンド==
 +
*コマンド内の"--database"は不要
 +
*削除すれば、そのまま実行できる
 +
 
 +
==クレジットカード番号検索==
 +
grep -E ",'[0-9]{16}'," ./ -r
 +
grep -E ",'[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{4}'," ./ -r
 +
grep -E ",[0-9]{16}," ./ -r
 +
 
 +
==定義書作成==
 +
mysqldump --no-data --xml -uuser1 -p schema1  > schema1.xml
 +
 
 +
できたxmlをここに入れる http://mysql-doc.mariyudu.net/
 +
 
 +
参考:https://qiita.com/mamy1326/items/c0aa9252d61ffed31a6e

2023年10月24日 (火) 22:59時点における最新版

バックアップと復元です。

バックアップ(db全体)

mysqldump -uroot -p  project1 --default-character-set=utf8 > project1.sql

バックアップ(table指定)

mysqldump -uroot -p project1 table1 table2 --default-character-set=utf8 > project1_table1_2.sql

バックアップ(table指定&データのみ)

mysqldump -uroot -p -t project1 table1 > project1_table1.sql

バックアップ(table指定&データのみ条件付)

mysqldump -uroot -p -t database1 table1 --where 'id=1 ORDER BY id DESC LIMIT 1' > project1_table1_id1.sql

オンラインバックアップ

書き込みロックがかからなくなる

mysqldump -uroot -p --database project1 --default-character-set=utf8 --single-transaction > project1.sql

テーブル定義のみバックアップ

mysqldump -d -uroot -p database1 table1

バックアップgzip圧縮

mysqldump -uroot -p --database project1 --default-character-set=utf8 | gzip > project1.sql.gz

復元

mysql -uroot -p  < project1.sql

復元(db指定)

mysql -uroot -p database1 < project1.sql

強制的に復元

mysql -uroot -p  -f < project1.sql

復元(gzipから)

zcat project1.sql.gz | mysql -uroot -p project1

復元パス付(非推奨)

mysql -uroot -ppass1  < project1.sql

復元パス付(非推奨)パスにカッコなどがある場合

mysql -uroot -p'pass1('  < project1.sql

一時的な外部キーの有効無効

SET FOREIGN_KEY_CHECKS=0; // 外部キーの無効
SET FOREIGN_KEY_CHECKS=1; //外部キーの有効

まとめてリストアバッチ

for file in `\find ./schema1 -maxdepth 1 -type f`; do
    mysql -uroot -ppass1 blog < ${file:2}
done

外部キー制約を解除してまとめてリストア

find ./schema1 -type f | xargs cat > schema1.sql #ファイル結合
sed -i '1iSET FOREIGN_KEY_CHECKS=0;' schema1.sql #外部キーの制約offを、ファイルの先頭に追加(時間がかかるようなvimで、先頭に入れてもよい)
echo 'SET FOREIGN_KEY_CHECKS=1;' >> schema1.sql #外部キーの制約onを、ファイルの最後尾に追加
mysql -uroot -ppass1 blog < schema1.sql

schemaもまとめてリストアバッチ

declare -a schemas=()
declare -a schemas=(
"schema1"
"schema2"
)
for e in ${schemas[@]}; do
  for file in `\find ./${e} -maxdepth 1 -type f`; do
     mysql -uroot -ppass1 blog < ${file:2}
    echo ${file:2};
  done
done

復元中の処理を見る

show processlist;
+----+------+-----------+----------------------+---------+------+-----------+------------------------------------------------------------------------------------------------------+
| Id | User | Host      | db                   | Command | Time | State     | Info                                                                                                 |
+----+------+-----------+----------------------+---------+------+-----------+------------------------------------------------------------------------------------------------------+
|  7 | root | localhost | test1                | Query   |    0 | query end | INSERT INTO `test` VALUES (1557549,1056447,NULL,NULL,NULL,                                           |
|  9 | root | localhost | NULL                 | Query   |    0 | starting  | show processlist                                                                                     |


windowsのmysqlからの読み込み

mysql -uroot -p < C:\documents\test.sql

mysql5.7からのdumpコマンド

  • コマンド内の"--database"は不要
  • 削除すれば、そのまま実行できる

クレジットカード番号検索

grep -E ",'[0-9]{16}'," ./ -r
grep -E ",'[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{4}'," ./ -r
grep -E ",[0-9]{16}," ./ -r

定義書作成

mysqldump --no-data --xml -uuser1 -p schema1  > schema1.xml

できたxmlをここに入れる http://mysql-doc.mariyudu.net/

参考:https://qiita.com/mamy1326/items/c0aa9252d61ffed31a6e