ホームページ データベース mysql チュートリアル ローカルの MySQL データベースを AWS RDS に移行する

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

Sep 12, 2024 pm 08:16 PM

この投稿では、ローカル 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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ホットトピック

MySQLでデータベースアクティビティを監査する方法は? MySQLでデータベースアクティビティを監査する方法は? Aug 05, 2025 pm 01:34 PM

usemysqlenterpriseauditpluginifenterpriseeditionbyEnablingItinconIntinconserver-audit = force_plus_permanentandcustomizeventsviaserver_audit_events;

財務データストレージのためにMySQLを最適化します 財務データストレージのためにMySQLを最適化します Jul 27, 2025 am 02:06 AM

MySQLは金融システムに最適化する必要があります。1。財務データを使用して、10進数タイプを使用した精度を確保する必要があり、タイムゾーンの問題を回避するために時間分野でデータを使用する必要があります。 2。インデックス設計は合理的でなければなりません。フィールドの頻繁な更新を避けてインデックスを構築し、クエリの順序でインデックスを組み合わせ、定期的に役に立たないインデックスをクリーンにします。 3.トランザクションを使用して、一貫性を確保し、トランザクションの粒度を制御し、長いトランザクションを回避し、それに埋め込まれた非コア操作を回避し、ビジネスに基づいて適切な分離レベルを選択します。 4。時間ごとに履歴データを分割し、コールドデータをアーカイブし、圧縮テーブルを使用してクエリ効率を向上させ、ストレージを最適化します。

オブジェクトレベルの特権でMySQLを保護します オブジェクトレベルの特権でMySQLを保護します Jul 29, 2025 am 01:34 AM

Tosecuremysqleffectivilly、useobject-levelprivilegestolimituseracesseracessbadeds.beginbyunderstanding thatobject-leveligesapplytodatabases、Tables、orcolumns、subfice finercontrolthangloblabliledeges.next、適用

リアルタイムのデータフィード用にMySQLを最適化します リアルタイムのデータフィード用にMySQLを最適化します Jul 26, 2025 am 05:41 AM

tooptimizemysqlforreal-timedatafeeds、firstchoosetheinnodbstorageentionsionsionsionsionsionsionsionsionsionsdrow-fortemporarydata、およびpartitiontime-seriesdatabytime.second、indextrategivallyは、dexestowhere、

大規模なMySQLテーブルを管理するためのベストプラクティス 大規模なMySQLテーブルを管理するためのベストプラクティス Aug 05, 2025 am 03:55 AM

大規模なテーブルを扱う場合、MySQLのパフォーマンスと保守性が課題に直面し、構造設計、インデックス最適化、テーブルサブテーブル戦略などから開始する必要があります。オーバーレイインデックスを使用して、クエリ効率を向上させます。スロークエリログを定期的に分析し、無効なインデックスを削除します。 2。パーティションテーブルの合理的な使用:クエリとメンテナンスの効率を改善するための時間範囲やその他の戦略に従ってパーティションをかけますが、分割と削減の問題に注意を払う必要があります。 3.分離とライブラリの分離の読み取りと書き込みを検討してください。ライブラリの分離とテーブルの分離は、大量のデータを備えたシナリオに適しています。ミドルウェアを使用して、トランザクションとクロスストアのクエリの問題を評価することをお勧めします。早期計画と継続的な最適化が重要です。

Check Constraintsを使用してMySQLのデータルールを実施する方法は? Check Constraintsを使用してMySQLのデータルールを実施する方法は? Aug 06, 2025 pm 04:49 PM

MySQLは、バージョン8.0.16から効果的なドメインの完全性を強制するためのチェック制約をサポートしています。 1.テーブルを作成するときに制約を追加する:createTableを使用して、18歳以上、給与> 0、部門の制限値などのチェック条件を定義します。 2。テーブルを変更して制約を追加します。AlterTableadDconstraintを使用して、名前以外の名前などのフィールド値を制限します。 3.複雑な条件を使用する:終了日≥の日付や完了ステータスなどのマルチカラムロジックと式のサポートは、終了日を持つ必要があります。 4。制約の削除:AlterTabledRopConstraintを使用して、削除する名前を指定します。 5。注:mysql8.0.16、innodbまたはmyisamを引用する必要があります

MySQLデータベースにタグ付けシステムを実装する方法は? MySQLデータベースにタグ付けシステムを実装する方法は? Aug 05, 2025 am 05:41 AM

useamany-to-manyrelationshipwithunctiontabletolinkitemsandtagsviathreetables:アイテム、タグ、anditem_tags.2

雲の移行のためのMySQLデータベースコストベネフィット分析 雲の移行のためのMySQLデータベースコストベネフィット分析 Jul 26, 2025 am 03:32 AM

MySQLがクラウドに移動する価値があるかどうかは、特定の使用シナリオに依存します。あなたのビジネスを迅速に立ち上げる必要がある場合は、弾力的に拡張し、運用とメンテナンスを簡素化し、従量制のモデルを受け入れることができます。ただし、データベースが長期間安定している場合、レイテンシに敏感な、またはコンプライアンスの制限が制限されている場合、費用対効果が高い場合があります。コストを管理するためのキーには、適切なベンダーとパッケージの選択、リソースの合理的な構成、予約されたインスタンスの利用、バックアップログの管理、クエリパフォーマンスの最適化が含まれます。

See all articles