2012-04-22 4 views
0

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

今、database1database2にクローンしたいと思います。

mysqldumpを試しましたが、access deniedと表示されています。

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

答えて

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 
関連する問題