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?

Wyred
sumber

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 .

dezso
sumber
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