この投稿では、ローカル 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_db < sample_dump.sql
インスタンスに問題なく接続できることを確認し、データベース内のスキーマとデータをチェックして、それらも正しくインポートされていることを確認します。
次は次のとおりです:
以上がローカルの MySQL データベースを AWS RDS に移行するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。