2009-03-29 14 views

答えて

12

単に/ dataフォルダ全体をコピーすることができます。

は、私はMySQLでこれをやって経験がないが、私にはボトルネックが実際のデータを転送しているようだHigh Performance MySQL - transferring large files

+0

乾杯、それははるかに良いです。 –

+0

そのリンクは死んでいるようです。しかし、ここで私がしたことがあります。ソース上の端末に移動し、「locate my.cnf」と入力します。お気に入りのテキストエディタ(vi /etc/mysql/my.cnf)でファイルを開き、 "datadir ="という行を細かくしてください。それから、ターゲットサーバーでこれを繰り返すだけです。これで、ソース上のそのフォルダの内容を圧縮し、それをターゲットにftpする必要があります。次に、データディレクトリで単に解凍します。 – Jason

0

を見たことがありますか?

4ooは、であり、それはです。しかし、dump - > SCPが遅い場合、削除ボックスからdbサーバーに接続するのが速くなるとは思わないでしょうか?

ダンプ、圧縮、ネットワーク経由のコピー、ディスクへの書き込み、データの手動転送をお勧めします。 このようなダンプを圧縮すると、圧縮率がかなり高くなる可能性があります。なぜなら、ほとんどの場合、リピートデータが多いからです。

4

セットアップMySQLのスレーブレプリケーションを可能性があり、MySQLのデータをコピーさせ、その後、スレーブ新しいマスター

1

がAUXILIARソフトウェア、mysqlのコンソールを使用して新しいサーバー上のダンプをインポート

0

しないようにしよう作りますサーバーのすべてのデータベースのみをコピーする場合は、/dataディレクトリ全体をコピーします。

あなただけの1つ以上のデータベースをコピーし、既存のMySQLサーバにそれらを追加する場合:

  1. ユーザーのアクセス権を設定し、新しいサーバーに空のデータベースを作成するには、など
  2. コピー新しいサーバへの/data/databasenameのデータベースのフォルダ/data/databasename
2

400Mは実際には大きなデータベースではありません。それを別のマシンに転送するには、100Mビットのネットワークで数分かかります。マシン間に100Mのネットワークがない場合、大きな問題になります!

同じバージョンのMySQLを実行していて、同じ(または類似のENOUGH)my.cnfを持っていて、データ全体のコピーが必要な場合は、サーバーのデータディレクトリ全体をコピーするのは安全ですインスタンスは、明らかに停止されます)。もちろん、ターゲットマシンのデータディレクトリを削除する必要がありますが、おそらくそれは気にしません。

バックアップ/リストアは通常、ファイルコピーではなくテーブル構造を再構築する必要があります。データファイルを直接コピーすることで、これを避けることができます(上記の制限に従う)。

+0

彼らは悲しいことに、同じcoloではありません。 –

+0

400MBは大きくなく、SCPは圧縮を提供します。実際には約2倍高速です。 –

6

sshを使用してインターネット経由でデータを直接パイプすることができます。まず、パスワードなしのログイン用にSSHキーを設定します。

$ mysqldump -u db_user -p some_database | gzip | ssh [email protected] 'gzip -d | mysql -u db_user --password=db_pass some_database' 

注:次に、このような何かしようと

  • を基本的な考え方は、あなただけのストレートSSHが最適です反対側、上のコマンドに標準出力をダンプしていることです。
  • 暗号化が必要ない場合は、netcatを使用できますが、おそらくそれは価値がありません。
  • SQLテキストデータが圧縮されてワイヤーに送られます!
  • 明らかに、db_userをユーザーユーザーに、some_databaseをデータベースに変更してください。 someuserは(Linux)システムユーザであり、MySQLユーザではありません。
  • また、--passwordを使用する必要があります。これは、mysqlのプロンプトを表示すると頭痛になるためです。
+2

sshを使う必要はありません。単に次のようにすることができます: mysqldump -u db_user -p some_database | mysql -u db_user -p -h newserver some_database –

+0

良い点、ありがとう! – JasonSmith

+1

しかし、少なくとも私がどこから来たのかは、mysqlでリモートアクセスを無効にするのが一般的です。 SSHはすぐに利用できますが。理論的には適切な権限が与えられている可能性がありますが、sshの答えは私にとって最も現実的なユースケースです。 –

2

サーバーを移行する場合:送信する前にそれを圧縮またはSCPの-Cフラグを使用することをお勧めしますので

ダンプファイルは非常に大きくなる可能性があります。私たちのファイル転送方法は、フル・ダンプを作成し、増分ログをフラッシュします(--master-data = 2 - フラッシュ・ログを使用してください。次に、ダンプをコピーして再生します。その後、ログを再度フラッシュし(mysqladmin flush-logs)、最新のインクリメンタルログ(それほど大きくすべきではない)を取り出し、それだけを再生します。最後のインクリメンタルログが非常に小さくなるまで、元のマシンでデータベースを停止し、最後の増分ログをコピーしてから再生できるようにしてください。数分かかるでしょう。

あなただけの別のサーバーからデータをコピーする場合:

mysqldump -C --host=oldhost --user=xxx --database=yyy -p | mysql -C --host=newhost --user=aaa -p 

あなたは正しくデシベルのユーザーを設定し、外部ホストへのアクセスを提供する必要があります。

0

古いサーバーからデータベースをエクスポートした後、BigDump:Staggered Mysql Dump Importerを使用するのが好きです。

http://www.ozerov.de/bigdump/

しかしもう一つ注意すべき、あなたの新しいサーバーが処理できる負荷にそれぞれのエクスポートオプション(作成したクエリの、すなわち最大長さ)を設定しない場合、それだけで失敗します別のパラメータで再試行する必要があります。個人的には、私は約25,000に私を設定しますが、それは私だけです。少し試してみてください。

関連する問題