質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
バックアップ

バックアップとは、保存データやプログラムの複製を異なる記録装置などへ保存することを言います。バックアップを取っておくことで、機器のトラブルでデータが損傷するなどの不測の事態にもデータを複製することが可能です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

Q&A

0回答

969閲覧

gzipでバックアップすると復元方法が変わる

dev3310

総合スコア24

バックアップ

バックアップとは、保存データやプログラムの複製を異なる記録装置などへ保存することを言います。バックアップを取っておくことで、機器のトラブルでデータが損傷するなどの不測の事態にもデータを複製することが可能です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

0グッド

0クリップ

投稿2020/02/03 02:03

ローカルPCに置いているDBのバックアップ内容がコマンドによって違います。

使っているのはMysqlの5.6.32です。
下記の1、2のコマンドで取得したバックアップの内容が違ってしまいます。

  1. mysqldump -u USER_NAME -p -h HOST_NAME DB_NAME > dump.sql
  2. mysqldump -u USER_NAME -p -h HOST_NAME DB_NAME | gzip > dump.sql.gz

具体的には
1の方法でとったバックアップは、復元時に
テーブル作成→トリガー作成→データインサート
の順序になっている為、トリガーが設定されているテーブルへのデータインサートでキー重複のエラー等が出ます。

2の方法でとったバックアップは、復元時に
テーブル作成→データインサート→トリガー作成
の順序になっているため、復元時にエラーが起きません。

ローカルのDBを仮想環境上へ移行する手順が確立したかったので、dump.sqlの中身を、インサート後にトリガー作成するよう直接書き換えることはしたくありませんでした。

そこで他の人に相談したところ、その人がgzipでバックアップして復元したら復元に成功したのです。

中身を見てみたらどうやら復元の順番が違うようだったので、もしgzipで圧縮すれば必ずこのようになるのであれば、手順として確立してしまいたいのですが、そういった文献を見つけることができませんでした。

そのままsqldumpでバックアップするのと、gzip圧縮でバックアップするのとで、このような違いが出る理由をご存じの方、もしくはそういった仕様であることが明記されている場所をご存じの方、
いらっしゃいましたらよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shiketa

2020/02/03 12:35

mysqlは詳しくありません。mysqldumpコマンドが出力先を判断して出力する内容を変えているのかもしれませんね。たとえばlsコマンドを例に挙げているページがあります。http://linuxc.info/stdinout/pipe/ 曰く > ...ここで注目すべきは、lsの出力結果をパイプに渡すと出力結果が変わっている事です
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問