10 Menit Berpindah dari SQLite Lokal ke Postgres Heroku
-- memperbarui dev lokal Anda ke postgres di sepanjang jalan --
Ini dengan asumsi Anda memiliki database pengembangan di sqlite dan Anda ingin memindahkan struktur dan data ke heroku. Pertama-tama Anda akan mengubah lingkungan lokal Anda menjadi postgres, lalu memindahkan semuanya ke atas.
Mengapa berubah? Anda harus selalu memiliki lingkungan pengembangan yang mencerminkan lingkungan produksi Anda. Menggunakan Postgres adalah default di heroku.
Anda harus menginstal dan mengonfigurasi Postgres secara lokal terlebih dahulu dengan pengguna yang memiliki nama pengguna Anda
Perangkat lunak yang dibutuhkan:postgresql, pgloader, heroku-cli
Langkah
Pindah dari SQLite ke Postgres di lingkungan dev Anda
- instal heroku / pgloader / postgres, dan pastikan postgresql berjalan di sistem Anda
- backup sqlite - salin development.sql ke development_old.sql
- tambahkan
gem 'pg'
ke bagian utama Gemfile Anda - instalasi bundel
- perbarui config/database.yml (lihat contoh di bawah)
- menggaruk db:setup
- cd [root aplikasi]
- memuat postgres db dengan data -
pgloader ./db/development.sqlite3 postgresql:///[name of postgres dev db]
- hapus
gem 'sqlite3'
- instalasi bundel
- mulai server -
rails server
- uji dengan mengunjungi aplikasi di localhost:3000
Siapkan aplikasi baru di heroku
Ikuti petunjuk berikut dari heroku
Pindahkan data ke heroku
- cari info db heroku -
heroku pg:info
- hapus dan setel ulang db jarak jauh -
heroku pg:reset DATABASE_URL --app [name of app]
- push data lokal ke heroku -
heroku pg:push [name of postgres dev db] DATABASE_URL --app [name of app]
CATATAN:jika database itu memiliki lebih dari 10k baris, Anda juga perlu meningkatkan ke tingkat hobi-dasar di heroku
Meningkatkan Heroku ke Tingkat Hobi Dasar
- buat tier baru - `heroku addons:create heroku-postgresql:hobby-basic --app [nama aplikasi]
- dapatkan url database baru -
heroku pg:info
- aktifkan pemeliharaan -
heroku maintenance:on --app [name of app]
- salin data -
heroku pg:copy DATABASE_URL [HEROKU_POSTGRESQL_COLOR_URL] --app [name of app]
- promosikan db baru -
heroku pg:promote [HEROKU_POSTGRESQL_COLOR_URL] --app [name of app]
- matikan pemeliharaan
- uji dengan mengunjungi aplikasi heroku
Jika Anda mengalami masalah atau kasus edge, berikut beberapa referensi untuk membantu.
Sumber daya:
- https://pgloader.io
- dokumen pemasangan postgres
- pemasangan rel baru heroku
- info klip heroku
- menggunakan kli heroku
database_sample.yml
default: &default
adapter: postgresql
encoding: unicode
host: localhost
port: 5432
# For details on connection pooling, see Rails configuration guide
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 5000
development:
<<: *default
database: [name of app]_dev
test:
<<: *default
database: [name of app]_test
staging:
<<: *default
database: [name of app]
production:
<<: *default
database: [name of app]