web-dev-qa-db-ja.com

Amazon RDS:スナップショットを既存のインスタンスに復元する

インスタンスのスナップショットを作成し、DBに不要な変更を加えました。

次に、このスナップショットからインスタンスを復元します。

私がそれをしようとすると-それは私が持っているものに加えて私にもう一つのインスタンスを作成します。

「DB Instance Identifier」を指定すると、同じIDを持つ2つのインスタンスが取得されます。

私の質問:スナップショットを既存のインスタンスに復元する方法はありますか?

他の場合-新しいインスタンスが異なるエンドポイント(ホスト名)で作成され、データベースにアクセスするために設定を変更する必要があるためです。または、そのような場合を管理するより良い方法がありますか?

52
SmxCde

いいえ、手動バックアップまたは特定の時点のスナップショットのいずれかに既存のDBインスタンスを復元することはできません。

手動バックアップまたは自動スナップショットを使用できる唯一の方法は、それを使用して新しいRDS DBインスタンスを作成することです。新しいDBインスタンスが作成されたら、アプリ/コードでDBのエンドポイントを変更し、古いDBインスタンスを削除できます。

結論:アプリの設定を変更する必要があります。他のオプションはありません。

48
Naveen Vijay

構成を変更せずにデータを復元するために(私のように)誰かがここに来た場合。

手順は次のとおりです。

  • 自動スナップショットまたは手動で作成したスナップショットから新しいインスタンス(temp)を作成します。
  • Sequel proまたはMysqlワークベンチからこのインスタンスに接続します。
  • この一時インスタンスから必要なデータのSQLダンプを取得します。
  • 実稼働インスタンスを接続して復元します。
  • ここで、作成した一時インスタンスを削除します。
47
Katti

元のインスタンスの名前を変更し、新しいインスタンスに元の名前を付けます

https://aws.Amazon.com/blogs/aws/endpoint-renaming-for-Amazon-rds/

17
MaXimus

今日も同じ問題がありました。アプリケーションの構成設定を変更せずに2つのオプションがあると思います。

  1. マイクの提案に従って古いインスタンスを削除してから、復元します。

  2. 最初に古いインスタンスの名前を変更します(名前を変更するときは、「すぐに適用」オプションをチェックする必要があります)。

7
jack.chen.job

@MaXimusが言ったように(まだコメントを追加できません)、次のことができます。

  1. 最初に元のインスタンスの名前を変更します
  2. スナップショットから復元し、元のインスタンス名を割り当てます

Renaming to Replace an Existing DB Instanceで指定されているとおり: https://docs.aws.Amazon.com/AmazonRDS/latest/UserGuide/USER_RenameInstance.html

0
cjuroz