私は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