「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ローカルの MySQL データベースを AWS RDS に移行する

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

2024 年 11 月 4 日に公開
ブラウズ:228

この投稿では、ローカル 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 



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

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

接続できませんか?

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

次は:

  • この投稿から必要なデータベース認証情報 (および必要なインフラストラクチャ アクセス) を使用して App Runner にデプロイします。
  • 代わりに Terraform を使用してスクリプトを作成し、
  • 将来のバックエンドとフロントエンドの更新を更新するための CI/CD パイプラインを作成します。
リリースステートメント この記事は次の場所に転載されています: https://dev.to/aws-builders/merge-your-local-mysql-database-to-aws-rds-3609?1 侵害がある場合は、[email protected] までご連絡ください。それを削除するには
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3