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