ローカルの MySQL データベースを AWS RDS に移行する

DDD
リリース: 2024-09-12 20:16:59
オリジナル
1008 人が閲覧しました

この投稿では、ローカル MySQL データベースのデータを、MySQL を使用して AWS RDS で新しく作成したインスタンスに移行する詳細な手順を共有します。

背景

私は 2023 年にフルスタック プロジェクトに取り組み、データベースと AWS へのバックエンドの実稼働デプロイメントを手動で処理しました。今年の初めに、データベースにかかる毎月のコストが膨大になりすぎたため、すべてのインフラストラクチャをシャットダウンしました (オーバープロビジョニングのおかげではありません)。

さて、今月に早送りすると、年末までに期限切れになる AWS クレジット (コミュニティビルダーの特典) がまだたくさんありました。プロジェクトを元に戻そうとしましたが、思ったほど簡単ではないことがわかりました。

まず、実稼働データの復元に使用できるスナップショットを適切に作成していなかったため、アクセス エラーが発生し続けました。また、展開全体がどれほど耐え難いほど手作業であったか、また、自分が実行した手順をどれも文書化していなかったこと (私も手順を覚えていませんでした) を思い出しました。

それは教訓だったので、今回はプロセス全体を文書化します。私が最後まで修了できなかった Udemy コースの格言の 1 つに沿って:

「自動化に進む前に、タスクを手動で実行する必要があることを知っておく必要があります。」

そこで、最初に移行を手動で実行するために行った手順を共有し、次の投稿では、Terraform でインフラストラクチャをプロビジョニングし、成功後にローカル データをリモート データベースにダンプするためのスクリプトを作成します。起動します。

これは、プロジェクトのデプロイメント全体を自動化するパイプラインを構築することで、CI/CD についてさらに学ぶという、私が自分で割り当てた進行中のプロジェクトの一部でもあります。

A) 手動ステップ

1. Amazon RDS 上に新しい DB インスタンスを作成します

今回は、より意図的かつ実践的な構成にしました。これは「運用環境への展開」でしたが、実際の稼働中の製品ではないため、おそらく最も安価なランニングコストを選択しました (これは、追加しないことを選択したいくつかのセキュリティ オプションにも影響しました)。

データベースの作成」ウィザードで選択したオプションを以下にまとめました。

AWS Region: eu-west-2
Database creation method: Standard Create
Engine type/edition/version: MySQL/MySQL Community/MySQL 8.0.35
Use case template: Free Tier
Credential settings: define these as you'd prefer
DB instance class: db.t3.micro
Storage: gp2, 20GB, auto-scaling enabled up to 100GB
Connectivity: 
    - define these for your specific use-case; I chose not to use an EC2
    - Public access: Yes, because I wanted to connect to the database locally via MySQL Workbench
Database authentication: Password auth
Additional configuration:
    - I created one database from here; but you can also leave it blank and create one when you get access via Workbench
Others: 
    - use default options or modify for your use-case
Deletion protection:
    - enabled (to dissuade myself from deleting easily like the last time)
ログイン後にコピー

推定月額費用:

Migrate Your Local MySQL Database to AWS RDS

2. RDS インスタンスにローカルで接続します

インスタンスが正常に起動したら、mysql クライアントを使用してインスタンスに接続します。これは、MySQL サーバーがインストールされ実行されていることを前提としています。

MySQL を始めましょう
MySQL クライアント

このコマンドを実行するには、インスタンス エンドポイント、認証情報設定で定義したユーザー名とパスワードも必要です。

mysql -h sample_endpoint.rds.amazonaws.com -u username_sample -p

ログイン後にコピー

注: インスタンスは、選択した VPC セキュリティ グループの正しい受信ルールと送信ルールを使用して作成されています。

ただし、 接続エラーが発生した場合は、IP アドレスが受信ルールの許可された送信元に含まれていることを確認してください。特定の場所にその IP アドレスを使用してインスタンスを作成し、別の場所にある別の IP アドレスを使用して接続しようとしたときに、接続がタイムアウトになったときに、同様の問題が発生しました。

[オプション] データベースを作成します
インスタンスの作成時に追加の構成ステップをスキップした場合は、このステップでインスタンスを作成できます:

CREATE DATABASE sample_db;

ログイン後にコピー

3. ローカルデータベースからデータをインポートする

これを行うには、まず mysqldump コマンドを使用して、ローカル データベース内のスキーマとデータを .sql ダンプ ファイルにエクスポートする必要があります。

mysqldump -u root -p local_db_name > sample_dump.sql

ログイン後にコピー

注: エクスポート中にエラーが発生した場合は、Stack Overflow に関する私の質問と、考えられる問題を解決できる回答を確認してください。

その後、mysql コマンドを使用してダンプ ファイルを RDS インスタンスにインポートします。

mysql -h sample_endpoint.rds.amazonaws.com -u username_sample -p 
sample_db < sample_dump.sql
ログイン後にコピー

4. (オプション) MySQL Workbench 経由で RDS インスタンスに接続します

インスタンスに問題なく接続できることを確認し、データベース内のスキーマとデータをチェックして、それらも正しくインポートされていることを確認します。

接続できませんか?

  • パブリック アクセス設定が正しく構成されていることを確認するか、
  • EC2 インスタンスを使用してデータベースに安全に接続し、インスタンスを通じて SQL コマンドを実行します。 EC2 インスタンスも、RDS インスタンスが配置されている VPC 内にあることを確認してください。

次は次のとおりです:

  • この投稿から必要なデータベース認証情報 (および必要なインフラストラクチャ アクセス) を使用して App Runner にデプロイします。
  • 代わりに Terraform を使用してスクリプトを作成し、
  • 将来のバックエンドとフロントエンドの更新を更新するための CI/CD パイプラインを作成します。

以上がローカルの MySQL データベースを AWS RDS に移行するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート