Pindahkan Pangkalan Data MySQL Setempat Anda ke AWS RDS
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:
2. Sambungkan ke tika RDS secara tempatan
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 membuat satu 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!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

UsemysqliseauditpluginiPriseSpriseSpRingIponFigurationPonfigurationPonviSventSonPonfigurationShigurationShigurationShigurationShigurationShigurationWithServer-Audit = forcews_Plus_permanentAntoMizeSviSviSviAserver_events;

MySQL perlu dioptimumkan untuk sistem kewangan: 1. Data kewangan mesti digunakan untuk memastikan ketepatan menggunakan jenis perpuluhan, dan DateTime digunakan dalam bidang masa untuk mengelakkan masalah zon waktu; 2. Reka bentuk indeks harus munasabah, mengelakkan kemas kini medan yang kerap untuk membina indeks, menggabungkan indeks dalam urutan pertanyaan dan indeks yang tidak berguna secara berkala; 3. Gunakan urus niaga untuk memastikan konsistensi, mengawal granulariti transaksi, elakkan urus niaga yang panjang dan operasi bukan teras yang tertanam di dalamnya, dan pilih tahap pengasingan yang sesuai berdasarkan perniagaan; 4. Partition Data Sejarah mengikut Masa, Arkib Data Sejuk dan Gunakan Jadual Mampat untuk meningkatkan kecekapan pertanyaan dan mengoptimumkan penyimpanan.

Tosecuremysqleffectely, useObject-levelprivilygestestestigmilimitusAracCessBasedontheArtheirspecificNeeds.beginbyBySpelythatthatThatBje-levelprivileGeGsapplyTaDataBases, Tabel, orcolumns.

Tooptimizemysqlforreal-timedatafeeds, firstChoosetheinnodbstorageenginfortransactionsandrow-levellocking, usememoryorrocksdbforthfforatarydata, dan partitiontime-SeriesDataByTime.Second, orderstrategybybyapplydeSdeAndeLyPlyDeSdeLyPlyDeSdeLySdeSdeLySdeSdeSdeLySdeSdeLySdeSdeLySdExteSdExteSdExteSdExteSdExteSdExteSdExteSdExteSdExteSdeShin

Apabila berurusan dengan jadual besar, prestasi MySQL dan penyelenggaraan menghadapi cabaran, dan perlu bermula dari reka bentuk struktur, pengoptimuman indeks, strategi sub-meja jadual, dan sebagainya. 1. Gunakan indeks overlay untuk meningkatkan kecekapan pertanyaan; kerap menganalisis log pertanyaan perlahan dan memadam indeks tidak sah. 2. 3. Pertimbangkan pembacaan dan penulisan pemisahan dan pemisahan perpustakaan: Baca dan menulis pemisahan mengurangkan tekanan pada perpustakaan utama. Pemisahan perpustakaan dan pemisahan jadual sesuai untuk senario dengan sejumlah besar data. Adalah disyorkan untuk menggunakan middleware dan menilai masalah urus niaga dan masalah pertanyaan silang. Perancangan awal dan pengoptimuman berterusan adalah kunci.

MySQL menyokong kekangan cek untuk memaksa integriti domain, berkesan dari versi 8.0.16; 1. Tambah kekangan apabila membuat jadual: Gunakan createtable untuk menentukan syarat semak, seperti umur ≥18, gaji> 0, nilai had jabatan; 2. Ubah suai jadual untuk menambah kekangan: Gunakan altertableaddConstraint untuk mengehadkan nilai medan, seperti nama tidak kosong; 3. Menggunakan syarat-syarat yang kompleks: menyokong logik dan ekspresi multi-lajur, seperti tarikh akhir ≥ multart status dan status siap mesti mempunyai tarikh akhir; 4. Padam Kekangan: Gunakan alterTableDRopConstraint untuk menentukan nama untuk memadam; 5. Nota: Mysql8.0.16, InnoDB atau Myisam perlu disebutkan

Sama ada MySQL bernilai bergerak ke awan bergantung kepada senario penggunaan tertentu. Jika perniagaan anda perlu dilancarkan dengan cepat, mengembangkan secara elastik dan memudahkan operasi dan penyelenggaraan, dan boleh menerima model bayar-as-you-go, kemudian bergerak ke awan adalah bernilai; Tetapi jika pangkalan data anda stabil untuk masa yang lama, latensi sensitif atau sekatan pematuhan, ia mungkin tidak kos efektif. Kekunci untuk mengawal kos termasuk memilih vendor dan pakej yang betul, mengkonfigurasi sumber yang munasabah, menggunakan contoh yang disediakan, menguruskan log sandaran dan mengoptimumkan prestasi pertanyaan.

Useamany-to-manyrelationshipwithajunctionTableTolinkitemsandtagsviathreetables: item, tags, anditem_tags.2.WhenaddingTags, checkorexistingtagsinthetagstable, InsertIfnerary, thencreatemappingsinitem_TagsusterShanTaStranitem_TagsingTrans
