11

既存のMySQLデータベースをAmazonRDSにインポートするにはどうすればよいですか?

4

9 に答える 9

12

このページは、 mysqldumpを使用してRDSインスタンスにパイプする方法を説明しているAWSドキュメントで見つけました。

サンプルコードは次のとおりです(コマンドライン/シェル/ sshで使用): mysqldump acme | mysql --host=hostname --user=username --password acme

acme移行するデータベースはどこにあり、 hostname/usernameはRDSインスタンスからのデータベースです。

通常のmysqlサーバーであるかのようにRDSに接続できます。このフォーラムの投稿に従って、EC2IPをセキュリティグループに追加してください。

ローカルのmysqldumpのパスワードを含める必要があったため、コマンドは次のようになりました。 mysqldump --password=local_mysql_pass acme | mysql --host=hostname --user=username --password acme

FWIW、データベースの移動が完了しました。このリファレンスは、ユーザーの作成や権限の付与などのmysqlコマンドに使用しました。

お役に立てれば!

于 2012-01-12T23:17:42.503 に答える
5

データをインポートするには、次の 2 つの方法があります。

  1. mysqldump: データ サイズが 1GB 未満の場合は、mysqldump コマンドを直接使用してデータを RDS にインポートできます。
  2. mysqlimport: データ サイズが 1GB を超える場合、またはその他の形式の場合は、データをフラット ファイルに圧縮し、sqlimport コマンドを使用してデータをアップロードできます。
于 2011-04-06T07:12:30.840 に答える
3

私はSqlYogツールの大ファンです。ソース データベースとターゲット データベースに接続し、スキーマやデータを同期できます。SQLWaveも使用しましたが、 SqlYogに切り替えました。切り替えてからかなり時間が経ちましたが、なぜ切り替えたのか正確には思い出せません。とにかく、それは私の 2 セントです。MySQL 用の Windows GUI ツールに関する私の提案に反対する人もいるでしょう。私は実際に SqlYog 製品がとても気に入っているので、Wine から実行しています (Ubuntu の Wine から問題なく動作します)。このブログが参考になるかもしれません。

ここに画像の説明を入力

于 2011-02-03T02:30:24.687 に答える
3

GoSquared Engineering の投稿の簡単な要約:

構成 + 起動

  • インスタンスの負荷が最も低くなるメンテナンス ウィンドウとバックアップ ウィンドウを選択します
  • マルチ AZ を選択するかどうか (自動フェイルオーバーとメンテナンスに強くお勧めします)
  • RDS インスタンスを起動します
  • アプリなどが新しいインスタンスにアクセスできるように、セキュリティ グループを構成します。

データ移行+準備

  1. まだバイナリログを有効にしていない場合は有効にします
  2. 古いインスタンスで実行mysqldump --single-transaction --master-data=2 -C -q dbname -u username -p > backup.sqlして、現在のデータのダンプを取得します
  3. 実行mysql -u username -p -h RDS_endpoint DB_name < backup.sqlしてデータを RDS インスタンスにインポートします (DB のサイズによっては時間がかかる場合があります)。
  4. それまでの間、現在の実稼働インスタンスは引き続きクエリを処理しています - ここでmaster-data=2バイナリログの出番です。
  5. backup.sql ファイルの先頭に、次のような行があります。CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.000003′, MASTER_LOG_POS=350789121;
  6. backup.sqlSQL ファイルとして差分を取得するmysqlbinlog /var/log/mysql/mysql-bin.000003 --start-position=350789121 --base64-output=NEVER > output.sql
  7. RDS インスタンスでこれらのクエリを実行して更新しますcat output.sql | mysql -h RDS_endpoint -u username -p DB_name
  8. end_log_pos最新のファイルの末尾を検索して、新しいログの位置を取得しoutput.sqlます。
  9. 最後からの差分を取得しoutput.sql(手順 6 と同様)、手順 7 + 8 を繰り返します。

実際の移住

  1. 新しい RDS インスタンスを使用してすべてのアプリを迅速にデプロイする準備を整える
  2. end_log_posから最新のものを入手するoutput.sql
  3. 古いインスタンスで実行FLUSH TABLES WITH READ LOCK;して、すべての書き込みを停止します
  4. 新しい RDS インスタンスでアプリのデプロイを開始する
  5. 上記の手順 6 ~ 8 を実行して、古いサーバーへの最後のクエリで RDS インスタンスを更新します。

結論

この方法を使用すると、わずかな時間 (アプリのデプロイにかかる時間 + MySQL インスタンスが処理する書き込みの数に応じて、おそらく 1 ~ 2 分) で古いサーバーからの書き込みが拒否されますが、読み取りのダウンタイムなしで、一貫した移行が行われます。

私たち (GoSquared) が最小限のダウンタイム (エラーのデバッグを含む) で RDS に移行した方法を説明する完全かつ詳細な投稿は、https://engineering.gosquared.com/migrating-mysql-to-amazon-rds で入手できます

于 2013-06-13T13:28:24.943 に答える
0

ターミナルを使用している場合、これは私にとってはうまくいきました:

mysqldump -u local_username -plocal_password local_db_name | mysql -h myRDS-at-amazon.rds.amazonaws.com -u rds-username -prds_password_xxxxx remote_db_name

次に、MYSQL WorkBench (無料ダウンロード) を使用して動作していることを確認しました。これは、送信を押した後にコマンド ラインが静的だったためです。出力を確認するために最後に -v を付けた可能性があります。

注: -p の後にスペースはありません

于 2014-03-04T11:18:56.720 に答える
0

Mysql の AWS RDS 顧客データ インポート ガイドは、http://aws.amazon.com/articles/2933 から入手できます

  • ロードするデータを含むフラット ファイルを作成する
  • ターゲット DB インスタンスにアクセスしているすべてのアプリケーションを停止します
  • DB スナップショットを作成する
  • Amazon RDS 自動バックアップを無効にする
  • mysqlimport を使用してデータをロードする
  • 自動バックアップを再度有効にする
于 2013-12-04T10:01:16.353 に答える