1

私はdatabase1(〜500MB)を持っています。これは、によって読み取り専用モードでアクセスできますuser1
私は空のデータベースを持っておりdatabase2、による完全な特権を持っていますuser2

ここで、にクローンを作成database1database2ます。

試しmysqldumpましたが、と書いてありaccess deniedます。

より良い方法はありますか?ありがとう。

4

1 に答える 1

1

デフォルトでは、mysqldumpは、一貫性のあるスナップショットを作成するために、すべてのテーブルをダンプする前にロックしようとします。私はそれuser1をする特権を持っていないと思います。

--single-transactionまたは--skip-lock-tablesコマンドラインで使用できます。最初のオプションは、操作全体に対して単一のトランザクションを使用します。これは、すべてのテーブルがトランザクションであり、データベースが小さい場合に完全に機能します。データベースが巨大な場合、これは他のアプリケーションに深刻な影響を与える可能性があります。

疑わしい場合は、--skip-lock-tables最初に試してください。ただし、ダンプ中に他のアプリケーションが変更を加えた場合、ダンプに一貫性がなくなる可能性があります。

データベースのクローンを作成する完全な例:

mysqldump -h host1 -u user1 -ppass1 --single-transaction database1 |
mysql -h host2 -u user2 -ppass2 database2
于 2012-04-22T10:08:31.033 に答える