この投稿では、ローカル MySQL データベースのデータを、MySQL を使用して AWS RDS で新しく作成したインスタンスに移行する詳細な手順を共有します。
私は 2023 年にフルスタック プロジェクトに取り組み、データベースと AWS へのバックエンドの実稼働デプロイメントを手動で処理しました。今年の初めに、データベースにかかる毎月のコストが膨大になりすぎたため、すべてのインフラストラクチャをシャットダウンしました (オーバープロビジョニングのおかげではありません)。
さて、今月に早送りすると、年末までに期限切れになる AWS クレジット (コミュニティビルダーの特典) がまだたくさんありました。プロジェクトを元に戻そうとしましたが、思ったほど簡単ではないことがわかりました。
まず、本番データの復元に使用できるスナップショットを適切に作成していなかったため、アクセス エラーが発生し続けました。また、展開全体がどれほど耐え難いほど手動で行われていたか、そして自分が実行した手順をどのようにも文書化していなかったのか (私も覚えていませんでした) を思い出しました。
それが教訓だったので、今回はそのプロセス全体を記録します。私が最後まで修了できなかった Udemy コースの格言の 1 つに沿って:
「自動化に進む前に、タスクを手動で実行する必要があることを知っておく必要があります。」
そこで、最初に手動で移行を実行するために行った手順を共有し、次の投稿では、Terraform でインフラストラクチャをプロビジョニングし、成功後にローカル データをリモート データベースにダンプするためのスクリプトを作成します。打ち上げ。
これは、プロジェクトのデプロイメント全体を自動化するパイプラインを構築することで、CI/CD についてさらに学ぶという、私が自分で割り当てた進行中のプロジェクトの一部でもあります。
今回はより意図的かつ実践的な構成にしました。これは「運用環境への展開」でしたが、実際の稼働中の製品ではないため、おそらく最も安価なランニングコストを選択しました (これは、追加しないことを選択したいくつかのセキュリティ オプションにも影響しました)。
「データベースの作成」ウィザードで選択したオプションを以下にまとめました:
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)
推定月額費用:
インスタンスが正常に起動したら、mysql クライアントを使用してインスタンスに接続します。これは、MySQL サーバーがインストールされ実行されていることを前提としています。
MySQL を始めましょう
MySQL クライアント
このコマンドを実行するには、インスタンス エンドポイント、認証情報設定で定義したユーザー名とパスワードも必要です:
mysql -h sample_endpoint.rds.amazonaws.com -u username_sample -p
注: インスタンスは、選択した VPC セキュリティ グループの正しい受信ルールと送信ルールを使用して作成されます。
ただし、 接続エラーが発生した場合は、IP アドレスが受信ルールの許可された送信元に含まれていることを確認してください。特定の場所にその IP アドレスを使用してインスタンスを作成し、別の場所にある別の IP アドレスを使用して接続しようとしたときに、接続がタイムアウトしたときに同様の問題が発生しました。
[オプション] データベースを作成します
インスタンスの作成時に追加の構成ステップをスキップした場合は、このステップで作成できます:
CREATE DATABASE sample_db;
これを行うには、まず 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_db4. (オプション) MySQL Workbench 経由で RDS インスタンスに接続します
インスタンスに問題なく接続できることを確認し、データベース内のスキーマとデータをチェックして、それらも正しくインポートされていることを確認します。
接続できませんか?
次は:
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3