Pindahkan database postgresql dari satu server ke server lain

9

Saya telah membuat basis data (spasial) di rumah saya yang beberapa gigabytes dan saya ingin memindahkan seluruh basis data dari satu komputer ke komputer saya.

Tidak ada yang penggemar, saya akan membuat contoh db postgresql / postgis baru di komputer kerja saya. Pengguna db mungkin atau mungkin tidak memiliki nama yang sama di kedua komputer.

Apa itu mungkin? Apa yang harus saya perhatikan? Bagaimana saya bisa melakukannya tanpa rasa sakit?

Saya menggunakan postgresql v9.1.5 dengan ekstensi postgis. Ubuntu12.04 (kernel 3.2.0-31)

pengguna528025
sumber
Lihat utas serupa ini di StackOverflow, Menyalin basis data PostgreSQL ke server lain .
Basil Bourque

Jawaban:

11

Anda dapat menjalankan dump dari database:

pg_dump yourdatabase | gzip -9 > outfile.sql.gz

dan kemudian impor kembali ke PostgreSQL di komputer kantor Anda. Ini akan memakan waktu cukup lama dan file yang dihasilkan, bahkan jika dikompresi, mungkin berada dalam kisaran gigabyte, tetapi harus cukup kecil untuk dimuat pada kunci USB.

Di komputer kantor Anda, buat database baru dan muat dump:

zcat outfile.sql.gz | psql yournewdatabase

Jika Anda memiliki koneksi cepat (atau dapat meluangkan waktu), Anda bahkan dapat mentransfer database melalui Internet melalui koneksi SSH terenkripsi, atau alat-alat seperti rsync.

LSerni
sumber
1
Bagaimana dengan hak pengguna / grup? di rumah saya, saya punya misalnya user1 tetapi di tempat kerjanya user2. Apakah itu penting?
2
Seharusnya tidak. Tentu saja Anda harus mengatur pengguna yang benar dalam aplikasi Anda. Karena ini adalah PC rumah Anda, coba ganti nama pengguna1 menjadi user2 dan verifikasi semuanya berfungsi, sebelum dibuang. Maka transfer harus bebas masalah.
3
Gunakan pg_dumpall untuk dump peran database.
Frank Heikens
1
untuk dapat membuang database, Anda perlu menginstal versi postgresql yang sama seperti pada server lama, lihat wiki.postgresql.org/wiki/Apt
rubo77
2

pg_dumpall adalah cara paling aman untuk melakukan ini. Saya akan merekomendasikan mengambil dumpall sebelum migrasi. masalah terbesarnya adalah butuh waktu beberapa saat untuk mengembalikannya jika itu besar.

Anda juga dapat menyalin direktori data, sebaiknya setelah menghentikan server Anda (Anda dapat menggunakan pg_start_backup () sebagai pengganti tetapi melihat semua dokumen tentang pemulihan waktu sebelum Anda pergi ke rute itu. Rute itu akan memungkinkan downtime mendekati nol Namun, perhatikan juga Anda hanya dapat melakukan ini jika arsitektur OS dan CPU sama di kedua sistem. Anda tidak dapat berpindah dari Windows ke Linux atau dari i686 ke x86-64 dengan cara ini. Periksa versi kernel OS juga secara berurutan untuk memastikan sistem yang kompatibel.

Chris Travers
sumber