Rumah  >  Artikel  >  pangkalan data  >  Pindahkan Pangkalan Data MySQL Setempat Anda ke AWS RDS

Pindahkan Pangkalan Data MySQL Setempat Anda ke AWS RDS

DDD
DDDasal
2024-09-12 20:16:59873semak imbas

Dalam siaran ini, saya akan berkongsi langkah terperinci untuk memindahkan data dalam pangkalan data MySQL setempat anda kepada kejadian yang baru dibuat pada AWS RDS dengan MySQL.

Latar belakang

Saya bekerja pada projek tindanan penuh pada tahun 2023 di mana saya mengendalikan penggunaan pengeluaran pangkalan data saya dan bahagian belakang ke AWS secara manual. Awal tahun ini, saya menutup semua infrastruktur kerana saya mengumpul terlalu banyak kos bulanan dengan pangkalan data (tidak, terima kasih kepada saya terlebih peruntukan).

Sekarang, cepat ke bulan ini dan saya masih mempunyai banyak kredit AWS (faedah menjadi Pembina Komuniti) yang akan tamat tempoh menjelang akhir tahun. Saya cuba memulihkan projek saya hanya untuk menyedari ia tidak semudah yang saya sangkakan.

Pertama, saya tidak mencipta syot kilat dengan betul yang boleh saya gunakan untuk memulihkan data pengeluaran dan terus mendapat ralat akses. Saya juga diingatkan tentang betapa manualnya keseluruhan penggunaan dan bagaimana saya tidak mendokumentasikan mana-mana langkah yang saya ambil (saya juga tidak mengingatinya).

Itu adalah pengajaran yang dipelajari, jadi kali ini, saya mendokumentasikan keseluruhan proses. Selaras dengan salah satu pepatah dalam kursus Udemy yang saya tidak pernah habiskan:

'Anda perlu tahu untuk melaksanakan tugas secara manual sebelum meneruskan untuk mengautomasikannya'.

Oleh itu, saya mula-mula akan berkongsi langkah-langkah yang saya ambil untuk melaksanakan migrasi secara manual, dan dalam catatan berikut, saya akan menulis skrip untuk menyediakan infrastruktur dengan Terraform dan juga membuang data setempat ke dalam db jauh selepas berjaya pelancaran.

Ini juga merupakan sebahagian daripada projek berterusan saya sendiri untuk mengetahui lebih lanjut tentang CI/CD dengan membina saluran paip untuk mengautomasikan keseluruhan penggunaan projek.

A) Langkah Manual

1. Buat contoh DB baharu pada Amazon RDS

Kali ini, saya lebih berniat dan praktikal dengan konfigurasi. Walaupun ia adalah 'pengeluaran pengeluaran', saya masih memilih kos pengendalian yang paling murah kerana ia bukan produk langsung sebenar (ini juga mempengaruhi beberapa pilihan keselamatan yang saya pilih untuk tidak tambah).

Saya telah meringkaskan pilihan yang saya pilih dalam wizard 'Buat Pangkalan Data' di bawah:

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)

Anggaran kos bulanan:

Migrate Your Local MySQL Database to AWS RDS

2. Sambungkan ke tika RDS secara setempat

Selepas contoh berjaya dilancarkan, gunakan klien mysql untuk menyambung ke contoh. Ini menganggap anda telah memasang dan menjalankan pelayan MySQL anda.

Bermula dengan MySQL
Pelanggan MySQL

Anda juga memerlukan titik akhir contoh, dan nama pengguna serta kata laluan yang anda tentukan dalam tetapan bukti kelayakan, untuk menjalankan arahan ini:

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

Nota: Contoh anda akan dibuat dengan peraturan masuk dan keluar yang betul untuk kumpulan keselamatan VPC yang dipilih.

Walau bagaimanapun, jika anda menghadapi ralat semasa menyambung, sahkan bahawa alamat IP anda disertakan dalam sumber yang dibenarkan untuk peraturan masuk. Saya menghadapi isu yang sama apabila saya mencipta tika di lokasi tertentu dengan alamat IPnya dan apabila saya cuba menyambung dengan alamat IP lain di lokasi lain, sambungan tamat masa.

[Pilihan] Cipta pangkalan data anda
Jika anda melangkau langkah konfigurasi Tambahan semasa pembuatan contoh, anda boleh menciptanya pada langkah ini:

CREATE DATABASE sample_db;

3. Import data daripada pangkalan data tempatan anda

Untuk melakukan ini, anda perlu menggunakan arahan mysqldump terlebih dahulu untuk mengeksport skema dan data dalam db tempatan anda ke fail .sql dump:

mysqldump -u root -p local_db_name > sample_dump.sql

Nota: Jika anda menghadapi ralat semasa cuba mengeksport, lihat soalan saya di Stack Overflow dan juga jawapan yang boleh menyelesaikan beberapa isu yang mungkin berlaku.

Selepas itu, gunakan arahan mysql untuk mengimport fail dump ke contoh RDS anda:

mysql -h sample_endpoint.rds.amazonaws.com -u username_sample -p 
sample_db < sample_dump.sql

4. [Pilihan] Sambung ke contoh RDS anda melalui MySQL Workbench

Sahkan bahawa anda boleh menyambung ke tika tanpa masalah dan semak skema dan data di dalam pangkalan data untuk mengesahkan bahawa ia juga telah diimport dengan betul.

Tidak dapat menyambung?

  • Pastikan anda telah mengkonfigurasi tetapan akses awam dengan betul, atau
  • Gunakan tika EC2 untuk menyambung dengan selamat ke pangkalan data dan jalankan arahan sql anda melalui tika itu. Pastikan tika EC2 juga berada di dalam VPC tempat tika RDS berada.

Seterusnya ialah:

  • menerapkan ke App Runner dengan bukti kelayakan pangkalan data yang diperlukan daripada siaran ini (dan akses infrastruktur yang diperlukan),
  • skrip dengan Terraform sebaliknya, dan
  • membuat saluran paip CI/CD untuk mengemas kini kemas kini bahagian belakang dan bahagian hadapan pada masa hadapan.

Atas ialah kandungan terperinci Pindahkan Pangkalan Data MySQL Setempat Anda ke AWS RDS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn