Salin database PostgreSQL dari server jauh


11

Ketika saya menggunakan MySQL, saya bisa menjalankan perintah yang SSH ke server saya dan menyalin database ke mesin lokal saya.

ssh -t remoteserver 'mysqldump --compress -u dbuser --password = "password" db_name' | / usr / local / mysql / bin / mysql -u root --password = "password" local_db_name

Bagaimana saya bisa melakukan hal yang sama dengan PostgreSQL?

Jawaban:


15

Jika server DB mengambil koneksi database dari host Anda (biasanya pada port 5432), maka Anda tidak perlu menggunakan SSH. Dalam hal ini, Anda perlu melakukan hal berikut:

pg_dump -h your_db_host -U db_user -C db_name | psql -h localhost -d local_db_name -U local_db_user

Jika Anda hanya dapat terhubung ke database Anda dari host itu sendiri, Anda harus menambahkan logika SSH dari contoh MySQL Anda.

Dengan -C, Anda akan mendapatkan CREATE DATABASEperintah di awal dump sehingga Anda tidak harus membuatnya sendiri. Perintah di atas akan meminta kata sandi dua kali, kecuali Anda menyimpannya dalam file .pgpass (dengan asumsi Anda menggunakan linux / Unix). Juga, koneksi lokal mungkin berbeda jika DB Anda tidak mendengarkan TCP (dalam hal ini hanya menghilangkan -h localhostbagian itu).

Untuk perincian dan opsi lebih lanjut, lihat dokumentasi pg_dump .


berarti Anda harus memiliki kata sandi yang sama di kedua server, bukan?
Florian Heigl

1
@FlorianHeigl No.
dezso

Bagi siapa pun yang membaca ini di masa mendatang: Masukkan kata sandi untuk DB (jarak jauh) pertama, tekan enter, ketikkan kata sandi untuk pengguna DB hosting lokal Anda, tekan enter. Fakta bahwa ia meminta kedua kata sandi (dan bahwa UNIX tidak pernah menampilkan kata sandi saat Anda menguraikannya) juga membingungkan saya.
AleksandrH
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.