私はdatabase1
(〜500MB)を持っています。これは、によって読み取り専用モードでアクセスできますuser1
。
私は空のデータベースを持っておりdatabase2
、による完全な特権を持っていますuser2
。
ここで、にクローンを作成database1
しdatabase2
ます。
試しmysqldump
ましたが、と書いてありaccess denied
ます。
より良い方法はありますか?ありがとう。
デフォルトでは、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