1

mysql データベースをローカル コンピューターからリモート サーバーにコピーしたいと考えています。

mysql dump コマンドを使用しようとしています。インターネット上のすべての例は、次のようなことを提案しています

イニシャルmysql>は、ログイン後に表示されるプロンプトです。

mysql> mysqldump -u user -p pass myDBName | NewDBName.out;

しかし、私がこれを行うと、You have an error in your SQL syntax; check the manual that corresponds ... to use near 'mysqldump -u user -p pass myDBName | NewDBName.out'

すでにログインしているため、-u と -p を使用する必要がありますか? そうしないと、同じエラーが発生します。何が悪いのか分かりますか?

4

3 に答える 3

2

Alexandre が言ったことに加えて、おそらく出力を NewDBName.out にパイプ (|) するのではなく、そこにリダイレクト (>) したくないでしょう。

したがって、Windows/Unix コマンドラインから:

mysqldump -u user -p pass myDBName > NewDBName.out

一部の列に大きなバイナリ フィールド (BLOBS など) がある場合は、追加のオプションを設定する必要がある場合があることに注意してください (--hex-blob だったと思いますが、別のオプションもあった可能性があります)。該当する場合は、コメントを追加してください。設定を調査します。

于 2010-05-11T02:22:06.053 に答える
2

最近、大量のデータをダンプする必要がありました。多くのテーブルに 10,000 件以上のレコードがある 200Mb データベースで私が見つけたものは次のとおりです。Linux の「time」コマンドを使用して、実際の時間を取得しました。

以下を使用して 12 分: mysqldump -u user -p pass myDBName > db-backups.sql

データベースのクローンを作成するのに 7 分: mysqldump -u user -p pass myDBName | mysql -u ユーザー -p pass cloneDBName

1 秒もかからずに: mysqlhotcopy -u user -p pass myDBName cloneDBName

最後の 1 つは私の心を吹き飛ばしましたが、データベース サーバーが存在するローカルでログインする必要があります。個人的には、.sql ファイルを圧縮して手動で転送できるため、これはリモートでダンプを行うよりもはるかに高速だと思います。

于 2010-11-19T15:16:35.250 に答える
2

mysqldumpセッション内で実行する SQL ステートメントではなく、mysqlOS シェルから開始する必要がある別個のバイナリです。

これを使用する方法はいくつかあります。mysqldumpそれらの 1 つは、出力を別の MySQL インスタンスにパイプすることです。

echo CREATE DATABASE remote_db | mysql -h remote_host -u remote_user -premote_password
mysqldump -h source_host -u root -ppassword source_db | mysql -h remote_host -u remote_user -premote_password -D remote_db
于 2010-05-11T02:16:34.577 に答える