shioharu_
@shioharu_

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【MySQL】リモートサーバに保存してあるdumpファイルをローカルマシンのDBへimportすることは可能でしょうか?

Q&A

Closed

解決したいこと

初めて質問を使ってみようと思います。

DBはMySQLです。
リモートサーバに保存してあるdumpファイルをローカルマシンのDBへ直接importすることは可能でしょうか?

例)
イメージですが

mysql -uuser -ppassword -hlocal_db_host local_schema_name < remote_dump_file.sql

こんな感じで、remote_dump_file.sqlのところをSSHするなりしてリモートにあるファイルを指定したいと考えてます。
やはりscpコマンドなどで一度ローカルに保存する必要がありますでしょうか?

(追記1)
ちなみに用途としては検証環境→ローカル環境にデータを使用したいと考えてます。
容量が膨大かつ社内ネットワークが弱いためdumpファイルをダウンロードするとしたら時間がかかるため、質問のような手段が取れないか考えた次第です。

(追記2)
リモートサーバーはAWSのEC2、ローカルサーバーはvagrantのCentOSになります。

0

1Answer

ファイルの内容が問題なので,転送しつつリストアするのは可能だと思いますが,
安全にやるなら,一度ローカルにファイルを保存したりした方が,
途中で問題があった場合などに対処しやすいように思います.

0Like

Comments

  1. @shioharu_

    Questioner

    回答ありがとうございます。

    >ファイルの内容が問題なので,転送しつつリストアするのは可能だと思いますが,

    すみません、ここがよくわかりませんでした。
    ファイルの内容がどのようにimportに影響するのでしょうか?

    ちなみに用途としては検証環境→ローカル環境にデータを使用したいと考えてます。
    容量が膨大かつ社内ネットワークが弱いためdumpファイルをダウンロードするとしたら時間がかかるため、質問のような手段が取れないか考えた次第です。
  2. そうですね.ネットワークが弱いということですと,一旦転送が完了した方が安全に感じました.
    一度転送する場合ならファイルを検証することが可能です.

    時間がかかる.というのが例えば転送に時間がかかるんだったら,
    一度送ってしまうのと,restore するときに送るのは同じように思えました.

    > ファイルの内容が問題
    問題というのは良くない表現でした.ファイルの内容がポイントなので,
    転送するしないというのは論点と関係ないように思う.ということが表現したかったです.
  3. @shioharu_

    Questioner

    返信ありがとうございます。

    返信頂いている身で申し訳ありませんが、質問内容と返信内容が少々噛み合っていないように思われます。
    もちろん、@atm-snagさんの気になさっている通りダウンロードした方が安全ですからダウンロードした方が良いこと、dumpファイルの内容が大切なのはわかります。
    ファイルをリモートからローカルへダウンロードすることなく、直接リモートのパスを指定できるのか否かがわかれば良かったです。
  4. リモートサーバーと,ローカルサーバーの関係がわかってないですが.

    リモートサーバーにログインして,ローカルサーバーに

    ```
    $ mysql -h ローカルサーバー < リモートダンプファイル
    ```

    することは可能だと思います.
  5. @shioharu_

    Questioner

    度々返信ありがとうございます。

    >リモートサーバーと,ローカルサーバーの関係がわかってないですが.

    確かに記載していませんでしたね。失礼致しました。
    リモートサーバーはAWSのEC2、ローカルサーバーはvagrantのCentOSになります。

    $ mysql -h ローカルサーバー < リモートダンプファイル
    の方法は有益だと思いましたが
    ローカルマシンがネットワーク上にパブリックでないvagrant環境のため今回はできませんでした。
  6. ローカルホストに居る状態で,リモートファイルを使ってリストアするなら,

    ```shell
    $ ssh リモートホスト cat リモートファイル | mysql -h ローカルホスト
    ```

    とかですかね.とはいえこれ転送するのと同じような気はしています.
  7. @shioharu_

    Questioner

    返信ありがとうございます。

    ```shell
    $ ssh リモートホスト cat リモートファイル | mysql -h ローカルホスト
    ```

    こちらですが、おっしゃる通りscpとあまり変わりませんでした。
    おとなしく回線が空く時間帯を見計らってダウンロードしてから実施する方針を取ろうと思います。
  8. 解決したなら良かったです

Your answer might help someone💌